6
// - boolean value returns that they are integral. Should not be.
7
// - unsigned integer in integer range are not considered to be valid integer. Should check range.
10
// //////////////////////////////////////////////////////////////////
11
// //////////////////////////////////////////////////////////////////
12
// Json Library test cases
13
// //////////////////////////////////////////////////////////////////
14
// //////////////////////////////////////////////////////////////////
17
struct ValueTest : JsonTest::TestCase
20
Json::Value emptyArray_;
21
Json::Value emptyObject_;
23
Json::Value unsignedInteger_;
24
Json::Value smallUnsignedInteger_;
28
Json::Value emptyString_;
35
: emptyArray_( Json::arrayValue )
36
, emptyObject_( Json::objectValue )
37
, integer_( 123456789 )
38
, smallUnsignedInteger_( Json::Value::UInt( Json::Value::maxInt ) )
39
, unsignedInteger_( 34567890u )
43
, string_( "sometext with space" )
47
array1_.append( 1234 );
48
object1_["id"] = 1234;
53
/// Initialize all checks to \c false by default.
68
void checkConstMemberCount( const Json::Value &value, unsigned int expectedCount );
70
void checkMemberCount( Json::Value &value, unsigned int expectedCount );
72
void checkIs( const Json::Value &value, const IsCheck &check );
76
JSONTEST_FIXTURE( ValueTest, size )
78
JSONTEST_ASSERT_PRED( checkMemberCount(emptyArray_, 0) );
79
JSONTEST_ASSERT_PRED( checkMemberCount(emptyObject_, 0) );
80
JSONTEST_ASSERT_PRED( checkMemberCount(array1_, 1) );
81
JSONTEST_ASSERT_PRED( checkMemberCount(object1_, 1) );
82
JSONTEST_ASSERT_PRED( checkMemberCount(null_, 0) );
83
JSONTEST_ASSERT_PRED( checkMemberCount(integer_, 0) );
84
JSONTEST_ASSERT_PRED( checkMemberCount(real_, 0) );
85
JSONTEST_ASSERT_PRED( checkMemberCount(emptyString_, 0) );
86
JSONTEST_ASSERT_PRED( checkMemberCount(string_, 0) );
87
JSONTEST_ASSERT_PRED( checkMemberCount(true_, 0) );
91
JSONTEST_FIXTURE( ValueTest, isObject )
94
checks.isObject_ = true;
95
JSONTEST_ASSERT_PRED( checkIs( emptyObject_, checks ) );
96
JSONTEST_ASSERT_PRED( checkIs( object1_, checks ) );
100
JSONTEST_FIXTURE( ValueTest, isArray )
103
checks.isArray_ = true;
104
JSONTEST_ASSERT_PRED( checkIs( emptyArray_, checks ) );
105
JSONTEST_ASSERT_PRED( checkIs( array1_, checks ) );
109
JSONTEST_FIXTURE( ValueTest, isNull )
112
checks.isNull_ = true;
113
checks.isObject_ = true;
114
checks.isArray_ = true;
115
JSONTEST_ASSERT_PRED( checkIs( null_, checks ) );
119
JSONTEST_FIXTURE( ValueTest, isString )
122
checks.isString_ = true;
123
JSONTEST_ASSERT_PRED( checkIs( emptyString_, checks ) );
124
JSONTEST_ASSERT_PRED( checkIs( string_, checks ) );
125
JSONTEST_ASSERT_PRED( checkIs( string1_, checks ) );
129
JSONTEST_FIXTURE( ValueTest, isBool )
132
checks.isBool_ = true;
133
checks.isIntegral_ = true;
134
checks.isNumeric_ = true;
135
JSONTEST_ASSERT_PRED( checkIs( false_, checks ) );
136
JSONTEST_ASSERT_PRED( checkIs( true_, checks ) );
140
JSONTEST_FIXTURE( ValueTest, isDouble )
143
checks.isDouble_ = true;
144
checks.isNumeric_ = true;
145
JSONTEST_ASSERT_PRED( checkIs( real_, checks ) );
149
JSONTEST_FIXTURE( ValueTest, isInt )
152
checks.isInt_ = true;
153
checks.isNumeric_ = true;
154
checks.isIntegral_ = true;
155
JSONTEST_ASSERT_PRED( checkIs( integer_, checks ) );
159
JSONTEST_FIXTURE( ValueTest, isUInt )
162
checks.isUInt_ = true;
163
checks.isNumeric_ = true;
164
checks.isIntegral_ = true;
165
JSONTEST_ASSERT_PRED( checkIs( unsignedInteger_, checks ) );
166
JSONTEST_ASSERT_PRED( checkIs( smallUnsignedInteger_, checks ) );
171
ValueTest::checkConstMemberCount( const Json::Value &value, unsigned int expectedCount )
173
unsigned int count = 0;
174
Json::Value::const_iterator itEnd = value.end();
175
for ( Json::Value::const_iterator it = value.begin(); it != itEnd; ++it )
179
JSONTEST_ASSERT_EQUAL( expectedCount, count ) << "Json::Value::const_iterator";
183
ValueTest::checkMemberCount( Json::Value &value, unsigned int expectedCount )
185
JSONTEST_ASSERT_EQUAL( expectedCount, value.size() );
187
unsigned int count = 0;
188
Json::Value::iterator itEnd = value.end();
189
for ( Json::Value::iterator it = value.begin(); it != itEnd; ++it )
193
JSONTEST_ASSERT_EQUAL( expectedCount, count ) << "Json::Value::iterator";
195
JSONTEST_ASSERT_PRED( checkConstMemberCount(value, expectedCount) );
199
ValueTest::IsCheck::IsCheck()
206
, isIntegral_( false )
207
, isNumeric_( false )
215
ValueTest::checkIs( const Json::Value &value, const IsCheck &check )
217
JSONTEST_ASSERT_EQUAL( check.isObject_, value.isObject() );
218
JSONTEST_ASSERT_EQUAL( check.isArray_, value.isArray() );
219
JSONTEST_ASSERT_EQUAL( check.isBool_, value.isBool() );
220
JSONTEST_ASSERT_EQUAL( check.isDouble_, value.isDouble() );
221
JSONTEST_ASSERT_EQUAL( check.isInt_, value.isInt() );
222
JSONTEST_ASSERT_EQUAL( check.isUInt_, value.isUInt() );
223
JSONTEST_ASSERT_EQUAL( check.isIntegral_, value.isIntegral() );
224
JSONTEST_ASSERT_EQUAL( check.isNumeric_, value.isNumeric() );
225
JSONTEST_ASSERT_EQUAL( check.isString_, value.isString() );
226
JSONTEST_ASSERT_EQUAL( check.isNull_, value.isNull() );
231
int main( int argc, const char *argv[] )
233
JsonTest::Runner runner;
234
JSONTEST_REGISTER_FIXTURE( runner, ValueTest, size );
235
JSONTEST_REGISTER_FIXTURE( runner, ValueTest, isObject );
236
JSONTEST_REGISTER_FIXTURE( runner, ValueTest, isArray );
237
JSONTEST_REGISTER_FIXTURE( runner, ValueTest, isBool );
238
JSONTEST_REGISTER_FIXTURE( runner, ValueTest, isInt );
239
JSONTEST_REGISTER_FIXTURE( runner, ValueTest, isUInt );
240
JSONTEST_REGISTER_FIXTURE( runner, ValueTest, isDouble );
241
JSONTEST_REGISTER_FIXTURE( runner, ValueTest, isString );
242
JSONTEST_REGISTER_FIXTURE( runner, ValueTest, isNull );
243
return runner.runCommandLine( argc, argv );