summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/data/number/number.dat102
-rw-r--r--test/number.c12
2 files changed, 102 insertions, 12 deletions
diff --git a/test/data/number/number.dat b/test/data/number/number.dat
index 0aeb6d0..a8c9cae 100644
--- a/test/data/number/number.dat
+++ b/test/data/number/number.dat
@@ -1,48 +1,134 @@
#data
1
#expected
-1
+1.000
#reset
#data
.0
#expected
-.0
+0.000
#reset
#data
.5
#expected
-.5
+0.500
#reset
#data
.999
#expected
-.999
+0.999
#reset
#data
2097151
#expected
-2097151
+2097151.000
#reset
+# Test INT_MAX + 1. Note that, in converting the result to float,
+# we'll end up with INT_MAX + 1 as the output.
#data
2097152
#expected
-2097151.999
+2097152.000
#reset
#data
--2097152
+-1
+#expected
+-1.000
+#reset
+
+#data
+-.0
+#expected
+0.000
+#reset
+
+#data
+-.5
#expected
+-0.500
+#reset
+
+#data
+-.999
+#expected
+-0.999
+#reset
+
+#data
+-2097151
+#expected
+-2097151.000
+#reset
+
+#data
-2097152
+#expected
+-2097152.000
#reset
#data
-2097153
#expected
--2097152.999
+-2097152.000
+#reset
+
+#data
+-x
+#expected
+0.000
+#reset
+
+#data
++x
+#expected
+0.000
+#reset
+
+#data
+x
+#expected
+0.000
+#reset
+
+#data
+1.x
+#expected
+1.000
+#reset
+
+#data
+.x
+#expected
+0.000
+#reset
+
+#data
+-
+#expected
+0.000
+#reset
+
+#data
++
+#expected
+0.000
+#reset
+
+#data
+0.12345
+#expected
+0.123
+#reset
+
+#data
+0.12367
+#expected
+0.124
#reset
diff --git a/test/number.c b/test/number.c
index 87dcbcd..7e793a2 100644
--- a/test/number.c
+++ b/test/number.c
@@ -52,7 +52,7 @@ int main(int argc, char **argv)
/* and run final test */
if (ctx.bufused > 0)
- run_test(ctx.buf, ctx.bufused, ctx.exp, ctx.explen);
+ run_test(ctx.buf, ctx.bufused - 1, ctx.exp, ctx.explen);
free(ctx.buf);
@@ -69,7 +69,7 @@ bool handle_line(const char *data, size_t datalen, void *pw)
if (ctx->inexp) {
/* This marks end of testcase, so run it */
- run_test(ctx->buf, ctx->bufused,
+ run_test(ctx->buf, ctx->bufused - 1,
ctx->exp, ctx->explen);
ctx->buf[0] = '\0';
@@ -110,13 +110,17 @@ void run_test(const uint8_t *data, size_t len, const char *exp, size_t explen)
css_string in = { (uint8_t *) data, len };
size_t consumed;
fixed result;
+ char buf[256];
UNUSED(exp);
UNUSED(explen);
result = number_from_css_string(&in, &consumed);
- /** \todo some kind of verification of the result */
- printf("%d\n", result);
+ snprintf(buf, sizeof buf, "%.3f", FIXTOFLT(result));
+
+ printf("got: %s expected: %.*s\n", buf, (int) explen, exp);
+
+ assert(strncmp(buf, exp, explen) == 0);
}