1 |
sf-pippijn |
1.1 |
#include "jsontest.h" |
2 |
|
|
#include <json/json.h> |
3 |
|
|
|
4 |
|
|
|
5 |
|
|
/* |
6 |
|
|
* TODO: |
7 |
|
|
* - boolean value returns that they are integral. Should not be. |
8 |
|
|
* - unsigned integer in integer range are not considered to be valid integer. Should check range. |
9 |
|
|
*/ |
10 |
|
|
|
11 |
|
|
|
12 |
|
|
/* |
13 |
|
|
* ////////////////////////////////////////////////////////////////// |
14 |
|
|
* ////////////////////////////////////////////////////////////////// |
15 |
|
|
* Json Library test cases |
16 |
|
|
* ////////////////////////////////////////////////////////////////// |
17 |
|
|
* ////////////////////////////////////////////////////////////////// |
18 |
|
|
*/ |
19 |
|
|
|
20 |
|
|
|
21 |
|
|
struct ValueTest |
22 |
|
|
: JsonTest::TestCase |
23 |
|
|
{ |
24 |
|
|
Json::Value null_; |
25 |
|
|
Json::Value emptyArray_; |
26 |
|
|
Json::Value emptyObject_; |
27 |
|
|
Json::Value integer_; |
28 |
|
|
Json::Value unsignedInteger_; |
29 |
|
|
Json::Value smallUnsignedInteger_; |
30 |
|
|
Json::Value real_; |
31 |
|
|
Json::Value array1_; |
32 |
|
|
Json::Value object1_; |
33 |
|
|
Json::Value emptyString_; |
34 |
|
|
Json::Value string1_; |
35 |
|
|
Json::Value string_; |
36 |
|
|
Json::Value true_; |
37 |
|
|
Json::Value false_; |
38 |
|
|
|
39 |
|
|
ValueTest () |
40 |
|
|
: emptyArray_ (Json::arrayValue) |
41 |
|
|
, emptyObject_ (Json::objectValue) |
42 |
|
|
, integer_ (123456789) |
43 |
|
|
, smallUnsignedInteger_ (Json::Value::UInt (Json::Value::maxInt)) |
44 |
|
|
, unsignedInteger_ (34567890u) |
45 |
|
|
, real_ (1234.56789) |
46 |
|
|
, emptyString_ ("") |
47 |
|
|
, string1_ ("a") |
48 |
|
|
, string_ ("sometext with space") |
49 |
|
|
, true_ (true) |
50 |
|
|
, false_ (false) |
51 |
|
|
{ |
52 |
|
|
array1_.append (1234); |
53 |
|
|
object1_["id"] = 1234; |
54 |
|
|
} |
55 |
|
|
|
56 |
|
|
struct IsCheck |
57 |
|
|
{ |
58 |
|
|
/* / Initialize all checks to \c false by default. */ |
59 |
|
|
IsCheck (); |
60 |
|
|
|
61 |
|
|
bool isObject_; |
62 |
|
|
bool isArray_; |
63 |
|
|
bool isBool_; |
64 |
|
|
bool isDouble_; |
65 |
|
|
bool isInt_; |
66 |
|
|
bool isUInt_; |
67 |
|
|
bool isIntegral_; |
68 |
|
|
bool isNumeric_; |
69 |
|
|
bool isString_; |
70 |
|
|
bool isNull_; |
71 |
|
|
}; |
72 |
|
|
|
73 |
|
|
void checkConstMemberCount (const Json::Value &value, unsigned int expectedCount); |
74 |
|
|
|
75 |
|
|
void checkMemberCount (Json::Value &value, unsigned int expectedCount); |
76 |
|
|
|
77 |
|
|
void checkIs (const Json::Value &value, const IsCheck &check); |
78 |
|
|
}; |
79 |
|
|
|
80 |
|
|
|
81 |
|
|
JSONTEST_FIXTURE (ValueTest, size) |
82 |
|
|
{ |
83 |
|
|
JSONTEST_ASSERT_PRED (checkMemberCount (emptyArray_, 0)); |
84 |
|
|
JSONTEST_ASSERT_PRED (checkMemberCount (emptyObject_, 0)); |
85 |
|
|
JSONTEST_ASSERT_PRED (checkMemberCount (array1_, 1)); |
86 |
|
|
JSONTEST_ASSERT_PRED (checkMemberCount (object1_, 1)); |
87 |
|
|
JSONTEST_ASSERT_PRED (checkMemberCount (null_, 0)); |
88 |
|
|
JSONTEST_ASSERT_PRED (checkMemberCount (integer_, 0)); |
89 |
|
|
JSONTEST_ASSERT_PRED (checkMemberCount (real_, 0)); |
90 |
|
|
JSONTEST_ASSERT_PRED (checkMemberCount (emptyString_, 0)); |
91 |
|
|
JSONTEST_ASSERT_PRED (checkMemberCount (string_, 0)); |
92 |
|
|
JSONTEST_ASSERT_PRED (checkMemberCount (true_, 0)); |
93 |
|
|
} |
94 |
|
|
|
95 |
|
|
|
96 |
|
|
JSONTEST_FIXTURE (ValueTest, isObject) |
97 |
|
|
{ |
98 |
|
|
IsCheck checks; |
99 |
|
|
|
100 |
|
|
checks.isObject_ = true; |
101 |
|
|
JSONTEST_ASSERT_PRED (checkIs (emptyObject_, checks)); |
102 |
|
|
JSONTEST_ASSERT_PRED (checkIs (object1_, checks)); |
103 |
|
|
} |
104 |
|
|
|
105 |
|
|
|
106 |
|
|
JSONTEST_FIXTURE (ValueTest, isArray) |
107 |
|
|
{ |
108 |
|
|
IsCheck checks; |
109 |
|
|
|
110 |
|
|
checks.isArray_ = true; |
111 |
|
|
JSONTEST_ASSERT_PRED (checkIs (emptyArray_, checks)); |
112 |
|
|
JSONTEST_ASSERT_PRED (checkIs (array1_, checks)); |
113 |
|
|
} |
114 |
|
|
|
115 |
|
|
|
116 |
|
|
JSONTEST_FIXTURE (ValueTest, isNull) |
117 |
|
|
{ |
118 |
|
|
IsCheck checks; |
119 |
|
|
|
120 |
|
|
checks.isNull_ = true; |
121 |
|
|
checks.isObject_ = true; |
122 |
|
|
checks.isArray_ = true; |
123 |
|
|
JSONTEST_ASSERT_PRED (checkIs (null_, checks)); |
124 |
|
|
} |
125 |
|
|
|
126 |
|
|
|
127 |
|
|
JSONTEST_FIXTURE (ValueTest, isString) |
128 |
|
|
{ |
129 |
|
|
IsCheck checks; |
130 |
|
|
|
131 |
|
|
checks.isString_ = true; |
132 |
|
|
JSONTEST_ASSERT_PRED (checkIs (emptyString_, checks)); |
133 |
|
|
JSONTEST_ASSERT_PRED (checkIs (string_, checks)); |
134 |
|
|
JSONTEST_ASSERT_PRED (checkIs (string1_, checks)); |
135 |
|
|
} |
136 |
|
|
|
137 |
|
|
|
138 |
|
|
JSONTEST_FIXTURE (ValueTest, isBool) |
139 |
|
|
{ |
140 |
|
|
IsCheck checks; |
141 |
|
|
|
142 |
|
|
checks.isBool_ = true; |
143 |
|
|
checks.isIntegral_ = true; |
144 |
|
|
checks.isNumeric_ = true; |
145 |
|
|
JSONTEST_ASSERT_PRED (checkIs (false_, checks)); |
146 |
|
|
JSONTEST_ASSERT_PRED (checkIs (true_, checks)); |
147 |
|
|
} |
148 |
|
|
|
149 |
|
|
|
150 |
|
|
JSONTEST_FIXTURE (ValueTest, isDouble) |
151 |
|
|
{ |
152 |
|
|
IsCheck checks; |
153 |
|
|
|
154 |
|
|
checks.isDouble_ = true; |
155 |
|
|
checks.isNumeric_ = true; |
156 |
|
|
JSONTEST_ASSERT_PRED (checkIs (real_, checks)); |
157 |
|
|
} |
158 |
|
|
|
159 |
|
|
|
160 |
|
|
JSONTEST_FIXTURE (ValueTest, isInt) |
161 |
|
|
{ |
162 |
|
|
IsCheck checks; |
163 |
|
|
|
164 |
|
|
checks.isInt_ = true; |
165 |
|
|
checks.isNumeric_ = true; |
166 |
|
|
checks.isIntegral_ = true; |
167 |
|
|
JSONTEST_ASSERT_PRED (checkIs (integer_, checks)); |
168 |
|
|
} |
169 |
|
|
|
170 |
|
|
|
171 |
|
|
JSONTEST_FIXTURE (ValueTest, isUInt) |
172 |
|
|
{ |
173 |
|
|
IsCheck checks; |
174 |
|
|
|
175 |
|
|
checks.isUInt_ = true; |
176 |
|
|
checks.isNumeric_ = true; |
177 |
|
|
checks.isIntegral_ = true; |
178 |
|
|
JSONTEST_ASSERT_PRED (checkIs (unsignedInteger_, checks)); |
179 |
|
|
JSONTEST_ASSERT_PRED (checkIs (smallUnsignedInteger_, checks)); |
180 |
|
|
} |
181 |
|
|
|
182 |
|
|
|
183 |
|
|
void |
184 |
|
|
ValueTest::checkConstMemberCount (const Json::Value &value, unsigned int expectedCount) |
185 |
|
|
{ |
186 |
|
|
unsigned int count = 0; |
187 |
|
|
Json::Value::const_iterator itEnd = value.end (); |
188 |
|
|
|
189 |
|
|
for (Json::Value::const_iterator it = value.begin (); it != itEnd; ++it) |
190 |
|
|
++count; |
191 |
|
|
JSONTEST_ASSERT_EQUAL (expectedCount, count) << "Json::Value::const_iterator"; |
192 |
|
|
} |
193 |
|
|
|
194 |
|
|
void |
195 |
|
|
ValueTest::checkMemberCount (Json::Value &value, unsigned int expectedCount) |
196 |
|
|
{ |
197 |
|
|
JSONTEST_ASSERT_EQUAL (expectedCount, value.size ()); |
198 |
|
|
|
199 |
|
|
unsigned int count = 0; |
200 |
|
|
Json::Value::iterator itEnd = value.end (); |
201 |
|
|
for (Json::Value::iterator it = value.begin (); it != itEnd; ++it) |
202 |
|
|
++count; |
203 |
|
|
JSONTEST_ASSERT_EQUAL (expectedCount, count) << "Json::Value::iterator"; |
204 |
|
|
|
205 |
|
|
JSONTEST_ASSERT_PRED (checkConstMemberCount (value, expectedCount)); |
206 |
|
|
} |
207 |
|
|
|
208 |
|
|
ValueTest::IsCheck::IsCheck () |
209 |
|
|
: isObject_ (false) |
210 |
|
|
, isArray_ (false) |
211 |
|
|
, isBool_ (false) |
212 |
|
|
, isDouble_ (false) |
213 |
|
|
, isInt_ (false) |
214 |
|
|
, isUInt_ (false) |
215 |
|
|
, isIntegral_ (false) |
216 |
|
|
, isNumeric_ (false) |
217 |
|
|
, isString_ (false) |
218 |
|
|
, isNull_ (false) |
219 |
|
|
{ |
220 |
|
|
} |
221 |
|
|
|
222 |
|
|
void |
223 |
|
|
ValueTest::checkIs (const Json::Value &value, const IsCheck &check) |
224 |
|
|
{ |
225 |
|
|
JSONTEST_ASSERT_EQUAL (check.isObject_, value.isObject ()); |
226 |
|
|
JSONTEST_ASSERT_EQUAL (check.isArray_, value.isArray ()); |
227 |
|
|
JSONTEST_ASSERT_EQUAL (check.isBool_, value.isBool ()); |
228 |
|
|
JSONTEST_ASSERT_EQUAL (check.isDouble_, value.isDouble ()); |
229 |
|
|
JSONTEST_ASSERT_EQUAL (check.isInt_, value.isInt ()); |
230 |
|
|
JSONTEST_ASSERT_EQUAL (check.isUInt_, value.isUInt ()); |
231 |
|
|
JSONTEST_ASSERT_EQUAL (check.isIntegral_, value.isIntegral ()); |
232 |
|
|
JSONTEST_ASSERT_EQUAL (check.isNumeric_, value.isNumeric ()); |
233 |
|
|
JSONTEST_ASSERT_EQUAL (check.isString_, value.isString ()); |
234 |
|
|
JSONTEST_ASSERT_EQUAL (check.isNull_, value.isNull ()); |
235 |
|
|
} |
236 |
|
|
|
237 |
|
|
int |
238 |
|
|
main (int argc, const char *argv[]) |
239 |
|
|
{ |
240 |
|
|
JsonTest::Runner runner; |
241 |
|
|
|
242 |
|
|
JSONTEST_REGISTER_FIXTURE (runner, ValueTest, size); |
243 |
|
|
JSONTEST_REGISTER_FIXTURE (runner, ValueTest, isObject); |
244 |
|
|
JSONTEST_REGISTER_FIXTURE (runner, ValueTest, isArray); |
245 |
|
|
JSONTEST_REGISTER_FIXTURE (runner, ValueTest, isBool); |
246 |
|
|
JSONTEST_REGISTER_FIXTURE (runner, ValueTest, isInt); |
247 |
|
|
JSONTEST_REGISTER_FIXTURE (runner, ValueTest, isUInt); |
248 |
|
|
JSONTEST_REGISTER_FIXTURE (runner, ValueTest, isDouble); |
249 |
|
|
JSONTEST_REGISTER_FIXTURE (runner, ValueTest, isString); |
250 |
|
|
JSONTEST_REGISTER_FIXTURE (runner, ValueTest, isNull); |
251 |
|
|
return runner.runCommandLine (argc, argv); |
252 |
|
|
} |