ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/dclient/testsuite/json/jsontest_main.cpp
Revision: 1.1
Committed: Sun Oct 17 08:15:15 2010 UTC (13 years, 8 months ago) by sf-pippijn
Branch: MAIN
CVS Tags: HEAD
Log Message:
initial import

File Contents

# Content
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 }