@@ -7,6 +7,70 @@ namespace tao
77{
88 namespace json
99 {
10+ void test_null ()
11+ {
12+ value a;
13+ value b ( nullptr );
14+
15+ TEST_ASSERT ( a.type () == type::NULL_ );
16+ TEST_ASSERT ( b.type () == type::NULL_ );
17+
18+ TEST_ASSERT ( a == b );
19+ TEST_ASSERT ( ! ( a != b ) );
20+
21+ TEST_ASSERT ( a <= b );
22+ TEST_ASSERT ( a >= b );
23+
24+ TEST_ASSERT ( ! ( a < b ) );
25+ TEST_ASSERT ( ! ( a > b ) );
26+
27+ TEST_ASSERT ( a == nullptr );
28+ TEST_ASSERT ( nullptr == b );
29+ }
30+
31+ void test_bool ()
32+ {
33+ value t ( true );
34+ value f ( false );
35+
36+ TEST_ASSERT ( t.type () == type::BOOL_ );
37+ TEST_ASSERT ( f.type () == type::BOOL_ );
38+
39+ TEST_ASSERT ( t == t );
40+ TEST_ASSERT ( f == f );
41+ TEST_ASSERT ( t == value ( true ) );
42+ TEST_ASSERT ( f == value ( false ) );
43+ TEST_ASSERT ( t != value ( nullptr ) );
44+ TEST_ASSERT ( f != value ( nullptr ) );
45+ TEST_ASSERT ( t != f );
46+ TEST_ASSERT ( f != t );
47+ TEST_ASSERT ( ! ( t != value ( true ) ) );
48+ TEST_ASSERT ( ! ( f != value ( false ) ) );
49+ TEST_ASSERT ( ! ( f == value ( true ) ) );
50+ TEST_ASSERT ( ! ( t == value ( false ) ) );
51+
52+ TEST_ASSERT ( t <= t );
53+ TEST_ASSERT ( f <= f );
54+ TEST_ASSERT ( f <= t );
55+ TEST_ASSERT ( ! ( t <= f ) );
56+ TEST_ASSERT ( t >= t );
57+ TEST_ASSERT ( f >= f );
58+ TEST_ASSERT ( t >= f );
59+ TEST_ASSERT ( ! ( f >= t ) );
60+
61+ TEST_ASSERT ( ! ( t < t ) );
62+ TEST_ASSERT ( ! ( f < f ) );
63+ TEST_ASSERT ( ! ( t > t ) );
64+ TEST_ASSERT ( ! ( f > f ) );
65+ TEST_ASSERT ( ! ( f > t ) );
66+ TEST_ASSERT ( ! ( t < f ) );
67+ TEST_ASSERT ( t > f );
68+ TEST_ASSERT ( f < t );
69+
70+ TEST_ASSERT ( t == true );
71+ TEST_ASSERT ( false == f );
72+ }
73+
1074 void test_int64 ()
1175 {
1276 value a ( 42 );
@@ -33,12 +97,46 @@ namespace tao
3397
3498 TEST_ASSERT ( a == 42 );
3599 TEST_ASSERT ( 42 == a );
100+
101+ // TODO
102+ }
103+
104+ void test_string ()
105+ {
106+ value a ( " a" );
107+ value b ( " b" );
108+ value foo ( " foo" );
109+
110+ TEST_ASSERT ( a.type () == type::STRING );
111+ TEST_ASSERT ( foo.type () == type::STRING );
112+
113+ TEST_ASSERT ( a == a );
114+ TEST_ASSERT ( foo == foo );
115+ TEST_ASSERT ( a <= a );
116+ TEST_ASSERT ( a <= b );
117+ TEST_ASSERT ( a < b );
118+ TEST_ASSERT ( a != b );
119+ TEST_ASSERT ( b > a );
120+ TEST_ASSERT ( b >= a );
121+ TEST_ASSERT ( foo >= foo );
122+ TEST_ASSERT ( ! ( a == b ) );
123+ TEST_ASSERT ( ! ( b != b ) );
124+ TEST_ASSERT ( ! ( a < a ) );
125+ TEST_ASSERT ( ! ( b > b ) );
126+ TEST_ASSERT ( ! ( b <= a ) );
127+ TEST_ASSERT ( ! ( a >= b ) );
128+
129+ TEST_ASSERT ( a == " a" );
130+ TEST_ASSERT ( " foo" == foo );
36131 }
37132
38133 void unit_test ()
39134 {
135+ test_null ();
136+ test_bool ();
40137 test_int64 ();
41- // TODO...
138+ test_string ();
139+ // TODO
42140 }
43141
44142 } // json
0 commit comments