From 4b5c5ed66ac35f50b6c172a712883acb5f0cc62f Mon Sep 17 00:00:00 2001 From: "Serge A. Zaitsev" Date: Wed, 1 Feb 2012 12:38:51 +0200 Subject: switched to C unit-tests instead of bash --- jsmn_test.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 jsmn_test.c (limited to 'jsmn_test.c') diff --git a/jsmn_test.c b/jsmn_test.c new file mode 100644 index 000000000..a6e042944 --- /dev/null +++ b/jsmn_test.c @@ -0,0 +1,57 @@ +#include + +#include "jsmn.c" + +static int test_passed = 0; +static int test_failed = 0; + +/* Terminate current test with error */ +#define fail() return __LINE__ + +/* Successfull end of the test case */ +#define done() return 0 + +/* Check single condition */ +#define check(cond) do { if (!(cond)) fail(); } while (0) + +/* Test runner */ +static void test(int (*func)(void), const char *name) { + int r = func(); + if (r == 0) { + test_passed++; + } else { + test_failed++; + printf("FAILED: %s (at line %d)\n", name, r); + } +} + +#define TOKEN_EQ(t, tok_start, tok_end, tok_type) \ + ((t).start == tok_start \ + && (t).end == tok_end \ + && (t).type == (tok_type)) + +#define TOKEN_PRINT(t) \ + printf("start: %d, end: %d, type: %d\n", (t).start, (t).end, (t).type) + + + +int test_primitive() { + int r; + jsmn_parser p; + jsmntok_t tokens[10]; + + jsmn_init_parser(&p, "{\"a\": 0}", tokens, 10); + + r = jsmn_parse(&p); + check(r == JSMN_SUCCESS); + check(TOKEN_EQ(tokens[0], 0, 8, JSMN_OBJECT)); + check(TOKEN_EQ(tokens[1], 2, 3, JSMN_STRING)); + check(TOKEN_EQ(tokens[2], 6, 7, JSMN_PRIMITIVE)); + + return 0; +} + +int main() { + test(test_primitive, "test primitive values"); + return 0; +} -- cgit v1.2.3