Skip to content

Commit 7f89fa3

Browse files
committed
More tests.
1 parent 1d2086a commit 7f89fa3

File tree

3 files changed

+114
-6
lines changed

3 files changed

+114
-6
lines changed

include/tao/json/compare.hh

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ namespace tao
3232

3333
inline bool operator== ( const value & l, const value & r )
3434
{
35-
return ( & l == & r ) || ( ( l.type() == r.type() ) && internal::equal_value( l, r ) );
35+
return ( l.type() == r.type() ) && internal::equal_value( l, r );
3636
}
3737

3838
inline bool operator!= ( const value & l, const value & r )
@@ -45,9 +45,19 @@ namespace tao
4545
return l.is_null();
4646
}
4747

48-
inline bool operator== ( const std::nullptr_t t, const value & r )
48+
inline bool operator== ( const std::nullptr_t, const value & r )
4949
{
50-
return r == t;
50+
return r.is_null();
51+
}
52+
53+
inline bool operator!= ( const value & l, const std::nullptr_t )
54+
{
55+
return ! l.is_null();
56+
}
57+
58+
inline bool operator!= ( const std::nullptr_t, const value & r )
59+
{
60+
return ! r.is_null();
5161
}
5262

5363
inline bool operator== ( const value & l, const bool b )

include/tao/json/internal/compare.hh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ namespace tao
3131
case type::OBJECT:
3232
return l.unsafe_object() < r.unsafe_object();
3333
}
34-
assert( false );
34+
assert( false ); // LCOV_EXCL_LINE
3535
}
3636

3737
inline bool equal_value( const value & l, const value & r )
@@ -52,7 +52,7 @@ namespace tao
5252
case type::OBJECT:
5353
return l.unsafe_object() == r.unsafe_object();
5454
}
55-
assert( false );
55+
assert( false ); // LCOV_EXCL_LINE
5656
}
5757

5858
} // internal

src/test/json/compare.cc

Lines changed: 99 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)