1- #include <stdio.h>
1+ #include <stdio.h>
22#include <stdlib.h>
33#include <string.h>
44#include "leptjson.h"
@@ -18,8 +18,24 @@ static int test_pass = 0;
1818 }\
1919 } while(0)
2020
21+ #define TEST_NUMBER (expect , json ) \
22+ do{\
23+ lept_value v;\
24+ EXPECT_EQ_INT(LEPT_PARSE_OK, lept_parse(&v, json));\
25+ EXPECT_EQ_INT(LEPT_NUMBER, lept_get_type(&v));\
26+ EXPECT_EQ_DOUBLE(expect, lept_get_number(&v));\
27+ }while(0)
28+
2129#define EXPECT_EQ_INT (expect , actual ) EXPECT_EQ_BASE((expect) == (actual), expect, actual, "%d")
2230
31+ #define TEST_ERROR (error , json ) \
32+ do{\
33+ lept_value v;\
34+ v.type = LEPT_FALSE;\
35+ EXPECT_EQ_INT(error, lept_parse(&v, json)); \
36+ EXPECT_EQ_INT(LEPT_NULL, lept_get_type(&v)); \
37+ }while(0)
38+
2339static void test_parse_null () {
2440 lept_value v ;
2541 v .type = LEPT_FALSE ;
@@ -71,6 +87,33 @@ static void test_parse_false() {
7187 EXPECT_EQ_INT (LEPT_FALSE , lept_get_type (& v ));
7288}
7389
90+ static void test_parse_expect_value () {
91+ TEST_ERROR (LEPT_PARSE_EXPECT_VALUE , "" );
92+ TEST_ERROR (LEPT_PARSE_EXPECT_VALUE , " " );
93+ }
94+
95+ static void test_parse_number () {
96+ TEST_NUMBER (0.0 , "0" );
97+ TEST_NUMBER (0.0 , "-0" );
98+ TEST_NUMBER (0.0 , "-0.0" );
99+ TEST_NUMBER (1.0 , "1" );
100+ TEST_NUMBER (-1.0 , "-1" );
101+ TEST_NUMBER (1.5 , "1.5" );
102+ TEST_NUMBER (-1.5 , "-1.5" );
103+ TEST_NUMBER (3.1416 , "3.1416" );
104+ TEST_NUMBER (1E10 , "1E10" );
105+ TEST_NUMBER (1e10 , "1e10" );
106+ TEST_NUMBER (1E+10 , "1E+10" );
107+ TEST_NUMBER (1E-10 , "1E-10" );
108+ TEST_NUMBER (-1E10 , "-1E10" );
109+ TEST_NUMBER (-1e10 , "-1e10" );
110+ TEST_NUMBER (-1E+10 , "-1E+10" );
111+ TEST_NUMBER (-1E-10 , "-1E-10" );
112+ TEST_NUMBER (1.234E+10 , "1.234E+10" );
113+ TEST_NUMBER (1.234E-10 , "1.234E-10" );
114+ TEST_NUMBER (0.0 , "1e-10000" ); /* must underflow */
115+ }
116+
74117static void test_parse () {
75118 test_parse_null ();
76119 test_parse_true ();
0 commit comments