@digitalshieldfe/react-native-backup-card-sdk 0.1.3 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/android/build.gradle +6 -49
  2. package/android/libs/backupcardsdk.aar +0 -0
  3. package/android/src/main/AndroidManifest.xml +1 -4
  4. package/package.json +6 -3
  5. package/android/consumer-rules.pro +0 -0
  6. package/android/proguard-rules.pro +0 -21
  7. package/android/src/main/java/com/ziancube/backupcardsdk/BackupCardSdk.kt +0 -478
  8. package/android/src/main/java/com/ziancube/backupcardsdk/GPChannelNatives.java +0 -41
  9. package/android/src/main/java/com/ziancube/backupcardsdk/listener/ApiAsyncListener.java +0 -13
  10. package/android/src/main/java/com/ziancube/backupcardsdk/nfc/ApiNfc.java +0 -173
  11. package/android/src/main/java/com/ziancube/backupcardsdk/nfc/ImplNfc.java +0 -39
  12. package/android/src/main/java/com/ziancube/backupcardsdk/nfc/NfcComm.java +0 -115
  13. package/android/src/main/java/com/ziancube/backupcardsdk/utils/ApduParam.java +0 -67
  14. package/android/src/main/java/com/ziancube/backupcardsdk/utils/CommList.java +0 -41
  15. package/android/src/main/java/com/ziancube/backupcardsdk/utils/Utils.java +0 -109
  16. package/android/src/main/jni/CMakeLists.txt +0 -60
  17. package/android/src/main/jni/GPChannel/include/GPChannelSDK.h +0 -306
  18. package/android/src/main/jni/GPChannel/include/context/BaseContext.h +0 -56
  19. package/android/src/main/jni/GPChannel/include/device/ApduBuilder.hpp +0 -72
  20. package/android/src/main/jni/GPChannel/include/utility/Apdu.hpp +0 -166
  21. package/android/src/main/jni/GPChannel/include/utility/Debug.hpp +0 -59
  22. package/android/src/main/jni/GPChannel/include/utility/Singleton.h +0 -34
  23. package/android/src/main/jni/GPChannel/include/utility/mutex.h +0 -24
  24. package/android/src/main/jni/GPChannel/include/utility/trim.hpp +0 -155
  25. package/android/src/main/jni/GPChannel/include/utility/util.h +0 -104
  26. package/android/src/main/jni/GPChannel/include/utility/xFactory.hpp +0 -26
  27. package/android/src/main/jni/GPChannel/include/utility/xManager.hpp +0 -84
  28. package/android/src/main/jni/GPChannel/src/arm64-v8a/libJUB_GPC_APDU_SDK.a +0 -0
  29. package/android/src/main/jni/GPChannel/src/arm64-v8a/libTrezorCrypto.a +0 -0
  30. package/android/src/main/jni/GPChannel/src/armeabi-v7a/libJUB_GPC_APDU_SDK.a +0 -0
  31. package/android/src/main/jni/GPChannel/src/armeabi-v7a/libTrezorCrypto.a +0 -0
  32. package/android/src/main/jni/GPChannel/src/x86/libJUB_GPC_APDU_SDK.a +0 -0
  33. package/android/src/main/jni/GPChannel/src/x86/libTrezorCrypto.a +0 -0
  34. package/android/src/main/jni/src/implJni.cpp +0 -313
  35. package/android/src/main/jni/src/implJni.h +0 -9
  36. package/android/src/main/jni/utils/jsoncpp/AUTHORS +0 -111
  37. package/android/src/main/jni/utils/jsoncpp/CMakeLists.txt +0 -159
  38. package/android/src/main/jni/utils/jsoncpp/LICENSE +0 -55
  39. package/android/src/main/jni/utils/jsoncpp/README.md +0 -135
  40. package/android/src/main/jni/utils/jsoncpp/amalgamate.py +0 -155
  41. package/android/src/main/jni/utils/jsoncpp/appveyor.yml +0 -22
  42. package/android/src/main/jni/utils/jsoncpp/dev.makefile +0 -35
  43. package/android/src/main/jni/utils/jsoncpp/devtools/__init__.py +0 -6
  44. package/android/src/main/jni/utils/jsoncpp/devtools/agent_vmw7.json +0 -33
  45. package/android/src/main/jni/utils/jsoncpp/devtools/agent_vmxp.json +0 -26
  46. package/android/src/main/jni/utils/jsoncpp/devtools/antglob.py +0 -205
  47. package/android/src/main/jni/utils/jsoncpp/devtools/batchbuild.py +0 -278
  48. package/android/src/main/jni/utils/jsoncpp/devtools/fixeol.py +0 -70
  49. package/android/src/main/jni/utils/jsoncpp/devtools/licenseupdater.py +0 -94
  50. package/android/src/main/jni/utils/jsoncpp/devtools/tarball.py +0 -52
  51. package/android/src/main/jni/utils/jsoncpp/doxybuild.py +0 -189
  52. package/android/src/main/jni/utils/jsoncpp/include/CMakeLists.txt +0 -2
  53. package/android/src/main/jni/utils/jsoncpp/include/json/allocator.h +0 -98
  54. package/android/src/main/jni/utils/jsoncpp/include/json/assertions.h +0 -54
  55. package/android/src/main/jni/utils/jsoncpp/include/json/autolink.h +0 -25
  56. package/android/src/main/jni/utils/jsoncpp/include/json/config.h +0 -187
  57. package/android/src/main/jni/utils/jsoncpp/include/json/features.h +0 -61
  58. package/android/src/main/jni/utils/jsoncpp/include/json/forwards.h +0 -37
  59. package/android/src/main/jni/utils/jsoncpp/include/json/json.h +0 -15
  60. package/android/src/main/jni/utils/jsoncpp/include/json/reader.h +0 -411
  61. package/android/src/main/jni/utils/jsoncpp/include/json/value.h +0 -888
  62. package/android/src/main/jni/utils/jsoncpp/include/json/version.h +0 -20
  63. package/android/src/main/jni/utils/jsoncpp/include/json/writer.h +0 -357
  64. package/android/src/main/jni/utils/jsoncpp/makefiles/vs71/jsontest.vcproj +0 -119
  65. package/android/src/main/jni/utils/jsoncpp/makefiles/vs71/lib_json.vcproj +0 -205
  66. package/android/src/main/jni/utils/jsoncpp/makefiles/vs71/test_lib_json.vcproj +0 -130
  67. package/android/src/main/jni/utils/jsoncpp/makerelease.py +0 -390
  68. package/android/src/main/jni/utils/jsoncpp/meson.build +0 -103
  69. package/android/src/main/jni/utils/jsoncpp/pkg-config/jsoncpp.pc.in +0 -9
  70. package/android/src/main/jni/utils/jsoncpp/src/CMakeLists.txt +0 -5
  71. package/android/src/main/jni/utils/jsoncpp/src/jsontestrunner/CMakeLists.txt +0 -25
  72. package/android/src/main/jni/utils/jsoncpp/src/jsontestrunner/main.cpp +0 -333
  73. package/android/src/main/jni/utils/jsoncpp/src/lib_json/CMakeLists.txt +0 -117
  74. package/android/src/main/jni/utils/jsoncpp/src/lib_json/json_reader.cpp +0 -2060
  75. package/android/src/main/jni/utils/jsoncpp/src/lib_json/json_tool.h +0 -114
  76. package/android/src/main/jni/utils/jsoncpp/src/lib_json/json_value.cpp +0 -1661
  77. package/android/src/main/jni/utils/jsoncpp/src/lib_json/json_valueiterator.inl +0 -167
  78. package/android/src/main/jni/utils/jsoncpp/src/lib_json/json_writer.cpp +0 -1233
  79. package/android/src/main/jni/utils/jsoncpp/src/lib_json/version.h.in +0 -20
  80. package/android/src/main/jni/utils/jsoncpp/src/test_lib_json/CMakeLists.txt +0 -38
  81. package/android/src/main/jni/utils/jsoncpp/src/test_lib_json/jsontest.cpp +0 -457
  82. package/android/src/main/jni/utils/jsoncpp/src/test_lib_json/jsontest.h +0 -286
  83. package/android/src/main/jni/utils/jsoncpp/src/test_lib_json/main.cpp +0 -2606
  84. package/android/src/main/jni/utils/jsoncpp/travis.sh +0 -23
  85. package/android/src/main/jni/utils/jsoncpp/version +0 -1
  86. package/android/src/main/jni/utils/jsoncpp/version.in +0 -1
  87. package/android/src/main/jni/utils/logUtils.cpp +0 -108
  88. package/android/src/main/jni/utils/logUtils.h +0 -87
  89. package/android/src/main/jni/utils/mSIGNA/stdutils/uchar_vector.h +0 -614
@@ -1,2606 +0,0 @@
1
- // Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
2
- // Distributed under MIT license, or public domain if desired and
3
- // recognized in your jurisdiction.
4
- // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
5
-
6
- #if defined(__GNUC__)
7
- #pragma GCC diagnostic push
8
- #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
9
- #elif defined(_MSC_VER)
10
- #pragma warning(disable : 4996)
11
- #endif
12
-
13
- #include "jsontest.h"
14
- #include <json/config.h>
15
- #include <json/json.h>
16
- #include <cstring>
17
- #include <limits>
18
- #include <sstream>
19
- #include <string>
20
- #include <iomanip>
21
-
22
- // Make numeric limits more convenient to talk about.
23
- // Assumes int type in 32 bits.
24
- #define kint32max Json::Value::maxInt
25
- #define kint32min Json::Value::minInt
26
- #define kuint32max Json::Value::maxUInt
27
- #define kint64max Json::Value::maxInt64
28
- #define kint64min Json::Value::minInt64
29
- #define kuint64max Json::Value::maxUInt64
30
-
31
- //static const double kdint64max = double(kint64max);
32
- //static const float kfint64max = float(kint64max);
33
- static const float kfint32max = float(kint32max);
34
- static const float kfuint32max = float(kuint32max);
35
-
36
- // //////////////////////////////////////////////////////////////////
37
- // //////////////////////////////////////////////////////////////////
38
- // Json Library test cases
39
- // //////////////////////////////////////////////////////////////////
40
- // //////////////////////////////////////////////////////////////////
41
-
42
- #if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
43
- static inline double uint64ToDouble(Json::UInt64 value) {
44
- return static_cast<double>(value);
45
- }
46
- #else // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
47
- static inline double uint64ToDouble(Json::UInt64 value) {
48
- return static_cast<double>(Json::Int64(value / 2)) * 2.0 +
49
- static_cast<double>(Json::Int64(value & 1));
50
- }
51
- #endif // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
52
-
53
- struct ValueTest : JsonTest::TestCase {
54
- Json::Value null_;
55
- Json::Value emptyArray_;
56
- Json::Value emptyObject_;
57
- Json::Value integer_;
58
- Json::Value unsignedInteger_;
59
- Json::Value smallUnsignedInteger_;
60
- Json::Value real_;
61
- Json::Value float_;
62
- Json::Value array1_;
63
- Json::Value object1_;
64
- Json::Value emptyString_;
65
- Json::Value string1_;
66
- Json::Value string_;
67
- Json::Value true_;
68
- Json::Value false_;
69
-
70
- ValueTest()
71
- : emptyArray_(Json::arrayValue), emptyObject_(Json::objectValue),
72
- integer_(123456789), unsignedInteger_(34567890u),
73
- smallUnsignedInteger_(Json::Value::UInt(Json::Value::maxInt)),
74
- real_(1234.56789), float_(0.00390625f), emptyString_(""), string1_("a"),
75
- string_("sometext with space"), true_(true), false_(false) {
76
- array1_.append(1234);
77
- object1_["id"] = 1234;
78
- }
79
-
80
- struct IsCheck {
81
- /// Initialize all checks to \c false by default.
82
- IsCheck();
83
-
84
- bool isObject_;
85
- bool isArray_;
86
- bool isBool_;
87
- bool isString_;
88
- bool isNull_;
89
-
90
- bool isInt_;
91
- bool isInt64_;
92
- bool isUInt_;
93
- bool isUInt64_;
94
- bool isIntegral_;
95
- bool isDouble_;
96
- bool isNumeric_;
97
- };
98
-
99
- void checkConstMemberCount(const Json::Value& value,
100
- unsigned int expectedCount);
101
-
102
- void checkMemberCount(Json::Value& value, unsigned int expectedCount);
103
-
104
- void checkIs(const Json::Value& value, const IsCheck& check);
105
-
106
- void checkIsLess(const Json::Value& x, const Json::Value& y);
107
-
108
- void checkIsEqual(const Json::Value& x, const Json::Value& y);
109
-
110
- /// Normalize the representation of floating-point number by stripped leading
111
- /// 0 in exponent.
112
- static JSONCPP_STRING normalizeFloatingPointStr(const JSONCPP_STRING& s);
113
- };
114
-
115
- JSONCPP_STRING ValueTest::normalizeFloatingPointStr(const JSONCPP_STRING& s) {
116
- JSONCPP_STRING::size_type index = s.find_last_of("eE");
117
- if (index != JSONCPP_STRING::npos) {
118
- JSONCPP_STRING::size_type hasSign =
119
- (s[index + 1] == '+' || s[index + 1] == '-') ? 1 : 0;
120
- JSONCPP_STRING::size_type exponentStartIndex = index + 1 + hasSign;
121
- JSONCPP_STRING normalized = s.substr(0, exponentStartIndex);
122
- JSONCPP_STRING::size_type indexDigit =
123
- s.find_first_not_of('0', exponentStartIndex);
124
- JSONCPP_STRING exponent = "0";
125
- if (indexDigit !=
126
- JSONCPP_STRING::npos) // There is an exponent different from 0
127
- {
128
- exponent = s.substr(indexDigit);
129
- }
130
- return normalized + exponent;
131
- }
132
- return s;
133
- }
134
-
135
- JSONTEST_FIXTURE(ValueTest, checkNormalizeFloatingPointStr) {
136
- JSONTEST_ASSERT_STRING_EQUAL("0.0", normalizeFloatingPointStr("0.0"));
137
- JSONTEST_ASSERT_STRING_EQUAL("0e0", normalizeFloatingPointStr("0e0"));
138
- JSONTEST_ASSERT_STRING_EQUAL("1234.0", normalizeFloatingPointStr("1234.0"));
139
- JSONTEST_ASSERT_STRING_EQUAL("1234.0e0",
140
- normalizeFloatingPointStr("1234.0e0"));
141
- JSONTEST_ASSERT_STRING_EQUAL("1234.0e+0",
142
- normalizeFloatingPointStr("1234.0e+0"));
143
- JSONTEST_ASSERT_STRING_EQUAL("1234e-1", normalizeFloatingPointStr("1234e-1"));
144
- JSONTEST_ASSERT_STRING_EQUAL("1234e10", normalizeFloatingPointStr("1234e10"));
145
- JSONTEST_ASSERT_STRING_EQUAL("1234e10",
146
- normalizeFloatingPointStr("1234e010"));
147
- JSONTEST_ASSERT_STRING_EQUAL("1234e+10",
148
- normalizeFloatingPointStr("1234e+010"));
149
- JSONTEST_ASSERT_STRING_EQUAL("1234e-10",
150
- normalizeFloatingPointStr("1234e-010"));
151
- JSONTEST_ASSERT_STRING_EQUAL("1234e+100",
152
- normalizeFloatingPointStr("1234e+100"));
153
- JSONTEST_ASSERT_STRING_EQUAL("1234e-100",
154
- normalizeFloatingPointStr("1234e-100"));
155
- JSONTEST_ASSERT_STRING_EQUAL("1234e+1",
156
- normalizeFloatingPointStr("1234e+001"));
157
- }
158
-
159
- JSONTEST_FIXTURE(ValueTest, memberCount) {
160
- JSONTEST_ASSERT_PRED(checkMemberCount(emptyArray_, 0));
161
- JSONTEST_ASSERT_PRED(checkMemberCount(emptyObject_, 0));
162
- JSONTEST_ASSERT_PRED(checkMemberCount(array1_, 1));
163
- JSONTEST_ASSERT_PRED(checkMemberCount(object1_, 1));
164
- JSONTEST_ASSERT_PRED(checkMemberCount(null_, 0));
165
- JSONTEST_ASSERT_PRED(checkMemberCount(integer_, 0));
166
- JSONTEST_ASSERT_PRED(checkMemberCount(unsignedInteger_, 0));
167
- JSONTEST_ASSERT_PRED(checkMemberCount(smallUnsignedInteger_, 0));
168
- JSONTEST_ASSERT_PRED(checkMemberCount(real_, 0));
169
- JSONTEST_ASSERT_PRED(checkMemberCount(emptyString_, 0));
170
- JSONTEST_ASSERT_PRED(checkMemberCount(string_, 0));
171
- JSONTEST_ASSERT_PRED(checkMemberCount(true_, 0));
172
- }
173
-
174
- JSONTEST_FIXTURE(ValueTest, objects) {
175
- // Types
176
- IsCheck checks;
177
- checks.isObject_ = true;
178
- JSONTEST_ASSERT_PRED(checkIs(emptyObject_, checks));
179
- JSONTEST_ASSERT_PRED(checkIs(object1_, checks));
180
-
181
- JSONTEST_ASSERT_EQUAL(Json::objectValue, emptyObject_.type());
182
-
183
- // Empty object okay
184
- JSONTEST_ASSERT(emptyObject_.isConvertibleTo(Json::nullValue));
185
-
186
- // Non-empty object not okay
187
- JSONTEST_ASSERT(!object1_.isConvertibleTo(Json::nullValue));
188
-
189
- // Always okay
190
- JSONTEST_ASSERT(emptyObject_.isConvertibleTo(Json::objectValue));
191
-
192
- // Never okay
193
- JSONTEST_ASSERT(!emptyObject_.isConvertibleTo(Json::arrayValue));
194
- JSONTEST_ASSERT(!emptyObject_.isConvertibleTo(Json::intValue));
195
- JSONTEST_ASSERT(!emptyObject_.isConvertibleTo(Json::uintValue));
196
- JSONTEST_ASSERT(!emptyObject_.isConvertibleTo(Json::realValue));
197
- JSONTEST_ASSERT(!emptyObject_.isConvertibleTo(Json::booleanValue));
198
- JSONTEST_ASSERT(!emptyObject_.isConvertibleTo(Json::stringValue));
199
-
200
- // Access through const reference
201
- const Json::Value& constObject = object1_;
202
-
203
- JSONTEST_ASSERT_EQUAL(Json::Value(1234), constObject["id"]);
204
- JSONTEST_ASSERT_EQUAL(Json::Value(), constObject["unknown id"]);
205
-
206
- // Access through non-const reference
207
- JSONTEST_ASSERT_EQUAL(Json::Value(1234), object1_["id"]);
208
- JSONTEST_ASSERT_EQUAL(Json::Value(), object1_["unknown id"]);
209
-
210
- object1_["some other id"] = "foo";
211
- JSONTEST_ASSERT_EQUAL(Json::Value("foo"), object1_["some other id"]);
212
- JSONTEST_ASSERT_EQUAL(Json::Value("foo"), object1_["some other id"]);
213
-
214
- // Remove.
215
- Json::Value got;
216
- bool did;
217
- did = object1_.removeMember("some other id", &got);
218
- JSONTEST_ASSERT_EQUAL(Json::Value("foo"), got);
219
- JSONTEST_ASSERT_EQUAL(true, did);
220
- got = Json::Value("bar");
221
- did = object1_.removeMember("some other id", &got);
222
- JSONTEST_ASSERT_EQUAL(Json::Value("bar"), got);
223
- JSONTEST_ASSERT_EQUAL(false, did);
224
- }
225
-
226
- JSONTEST_FIXTURE(ValueTest, arrays) {
227
- const unsigned int index0 = 0;
228
-
229
- // Types
230
- IsCheck checks;
231
- checks.isArray_ = true;
232
- JSONTEST_ASSERT_PRED(checkIs(emptyArray_, checks));
233
- JSONTEST_ASSERT_PRED(checkIs(array1_, checks));
234
-
235
- JSONTEST_ASSERT_EQUAL(Json::arrayValue, array1_.type());
236
-
237
- // Empty array okay
238
- JSONTEST_ASSERT(emptyArray_.isConvertibleTo(Json::nullValue));
239
-
240
- // Non-empty array not okay
241
- JSONTEST_ASSERT(!array1_.isConvertibleTo(Json::nullValue));
242
-
243
- // Always okay
244
- JSONTEST_ASSERT(emptyArray_.isConvertibleTo(Json::arrayValue));
245
-
246
- // Never okay
247
- JSONTEST_ASSERT(!emptyArray_.isConvertibleTo(Json::objectValue));
248
- JSONTEST_ASSERT(!emptyArray_.isConvertibleTo(Json::intValue));
249
- JSONTEST_ASSERT(!emptyArray_.isConvertibleTo(Json::uintValue));
250
- JSONTEST_ASSERT(!emptyArray_.isConvertibleTo(Json::realValue));
251
- JSONTEST_ASSERT(!emptyArray_.isConvertibleTo(Json::booleanValue));
252
- JSONTEST_ASSERT(!emptyArray_.isConvertibleTo(Json::stringValue));
253
-
254
- // Access through const reference
255
- const Json::Value& constArray = array1_;
256
- JSONTEST_ASSERT_EQUAL(Json::Value(1234), constArray[index0]);
257
- JSONTEST_ASSERT_EQUAL(Json::Value(1234), constArray[0]);
258
-
259
- // Access through non-const reference
260
- JSONTEST_ASSERT_EQUAL(Json::Value(1234), array1_[index0]);
261
- JSONTEST_ASSERT_EQUAL(Json::Value(1234), array1_[0]);
262
-
263
- array1_[2] = Json::Value(17);
264
- JSONTEST_ASSERT_EQUAL(Json::Value(), array1_[1]);
265
- JSONTEST_ASSERT_EQUAL(Json::Value(17), array1_[2]);
266
- Json::Value got;
267
- JSONTEST_ASSERT_EQUAL(true, array1_.removeIndex(2, &got));
268
- JSONTEST_ASSERT_EQUAL(Json::Value(17), got);
269
- JSONTEST_ASSERT_EQUAL(false, array1_.removeIndex(2, &got)); // gone now
270
- }
271
- JSONTEST_FIXTURE(ValueTest, arrayIssue252)
272
- {
273
- int count = 5;
274
- Json::Value root;
275
- Json::Value item;
276
- root["array"] = Json::Value::nullRef;
277
- for (int i = 0; i < count; i++)
278
- {
279
- item["a"] = i;
280
- item["b"] = i;
281
- root["array"][i] = item;
282
- }
283
- //JSONTEST_ASSERT_EQUAL(5, root["array"].size());
284
- }
285
-
286
- JSONTEST_FIXTURE(ValueTest, null) {
287
- JSONTEST_ASSERT_EQUAL(Json::nullValue, null_.type());
288
-
289
- IsCheck checks;
290
- checks.isNull_ = true;
291
- JSONTEST_ASSERT_PRED(checkIs(null_, checks));
292
-
293
- JSONTEST_ASSERT(null_.isConvertibleTo(Json::nullValue));
294
- JSONTEST_ASSERT(null_.isConvertibleTo(Json::intValue));
295
- JSONTEST_ASSERT(null_.isConvertibleTo(Json::uintValue));
296
- JSONTEST_ASSERT(null_.isConvertibleTo(Json::realValue));
297
- JSONTEST_ASSERT(null_.isConvertibleTo(Json::booleanValue));
298
- JSONTEST_ASSERT(null_.isConvertibleTo(Json::stringValue));
299
- JSONTEST_ASSERT(null_.isConvertibleTo(Json::arrayValue));
300
- JSONTEST_ASSERT(null_.isConvertibleTo(Json::objectValue));
301
-
302
- JSONTEST_ASSERT_EQUAL(Json::Int(0), null_.asInt());
303
- JSONTEST_ASSERT_EQUAL(Json::LargestInt(0), null_.asLargestInt());
304
- JSONTEST_ASSERT_EQUAL(Json::UInt(0), null_.asUInt());
305
- JSONTEST_ASSERT_EQUAL(Json::LargestUInt(0), null_.asLargestUInt());
306
- JSONTEST_ASSERT_EQUAL(0.0, null_.asDouble());
307
- JSONTEST_ASSERT_EQUAL(0.0, null_.asFloat());
308
- JSONTEST_ASSERT_STRING_EQUAL("", null_.asString());
309
-
310
- JSONTEST_ASSERT_EQUAL(Json::Value::null, null_);
311
-
312
- // Test using a Value in a boolean context (false iff null)
313
- JSONTEST_ASSERT_EQUAL(null_,false);
314
- JSONTEST_ASSERT_EQUAL(object1_,true);
315
- JSONTEST_ASSERT_EQUAL(!null_,true);
316
- JSONTEST_ASSERT_EQUAL(!object1_,false);
317
- }
318
-
319
- JSONTEST_FIXTURE(ValueTest, strings) {
320
- JSONTEST_ASSERT_EQUAL(Json::stringValue, string1_.type());
321
-
322
- IsCheck checks;
323
- checks.isString_ = true;
324
- JSONTEST_ASSERT_PRED(checkIs(emptyString_, checks));
325
- JSONTEST_ASSERT_PRED(checkIs(string_, checks));
326
- JSONTEST_ASSERT_PRED(checkIs(string1_, checks));
327
-
328
- // Empty string okay
329
- JSONTEST_ASSERT(emptyString_.isConvertibleTo(Json::nullValue));
330
-
331
- // Non-empty string not okay
332
- JSONTEST_ASSERT(!string1_.isConvertibleTo(Json::nullValue));
333
-
334
- // Always okay
335
- JSONTEST_ASSERT(string1_.isConvertibleTo(Json::stringValue));
336
-
337
- // Never okay
338
- JSONTEST_ASSERT(!string1_.isConvertibleTo(Json::objectValue));
339
- JSONTEST_ASSERT(!string1_.isConvertibleTo(Json::arrayValue));
340
- JSONTEST_ASSERT(!string1_.isConvertibleTo(Json::intValue));
341
- JSONTEST_ASSERT(!string1_.isConvertibleTo(Json::uintValue));
342
- JSONTEST_ASSERT(!string1_.isConvertibleTo(Json::realValue));
343
-
344
- JSONTEST_ASSERT_STRING_EQUAL("a", string1_.asString());
345
- JSONTEST_ASSERT_STRING_EQUAL("a", string1_.asCString());
346
- }
347
-
348
- JSONTEST_FIXTURE(ValueTest, bools) {
349
- JSONTEST_ASSERT_EQUAL(Json::booleanValue, false_.type());
350
-
351
- IsCheck checks;
352
- checks.isBool_ = true;
353
- JSONTEST_ASSERT_PRED(checkIs(false_, checks));
354
- JSONTEST_ASSERT_PRED(checkIs(true_, checks));
355
-
356
- // False okay
357
- JSONTEST_ASSERT(false_.isConvertibleTo(Json::nullValue));
358
-
359
- // True not okay
360
- JSONTEST_ASSERT(!true_.isConvertibleTo(Json::nullValue));
361
-
362
- // Always okay
363
- JSONTEST_ASSERT(true_.isConvertibleTo(Json::intValue));
364
- JSONTEST_ASSERT(true_.isConvertibleTo(Json::uintValue));
365
- JSONTEST_ASSERT(true_.isConvertibleTo(Json::realValue));
366
- JSONTEST_ASSERT(true_.isConvertibleTo(Json::booleanValue));
367
- JSONTEST_ASSERT(true_.isConvertibleTo(Json::stringValue));
368
-
369
- // Never okay
370
- JSONTEST_ASSERT(!true_.isConvertibleTo(Json::arrayValue));
371
- JSONTEST_ASSERT(!true_.isConvertibleTo(Json::objectValue));
372
-
373
- JSONTEST_ASSERT_EQUAL(true, true_.asBool());
374
- JSONTEST_ASSERT_EQUAL(1, true_.asInt());
375
- JSONTEST_ASSERT_EQUAL(1, true_.asLargestInt());
376
- JSONTEST_ASSERT_EQUAL(1, true_.asUInt());
377
- JSONTEST_ASSERT_EQUAL(1, true_.asLargestUInt());
378
- JSONTEST_ASSERT_EQUAL(1.0, true_.asDouble());
379
- JSONTEST_ASSERT_EQUAL(1.0, true_.asFloat());
380
-
381
- JSONTEST_ASSERT_EQUAL(false, false_.asBool());
382
- JSONTEST_ASSERT_EQUAL(0, false_.asInt());
383
- JSONTEST_ASSERT_EQUAL(0, false_.asLargestInt());
384
- JSONTEST_ASSERT_EQUAL(0, false_.asUInt());
385
- JSONTEST_ASSERT_EQUAL(0, false_.asLargestUInt());
386
- JSONTEST_ASSERT_EQUAL(0.0, false_.asDouble());
387
- JSONTEST_ASSERT_EQUAL(0.0, false_.asFloat());
388
- }
389
-
390
- JSONTEST_FIXTURE(ValueTest, integers) {
391
- IsCheck checks;
392
- Json::Value val;
393
-
394
- // Conversions that don't depend on the value.
395
- JSONTEST_ASSERT(Json::Value(17).isConvertibleTo(Json::realValue));
396
- JSONTEST_ASSERT(Json::Value(17).isConvertibleTo(Json::stringValue));
397
- JSONTEST_ASSERT(Json::Value(17).isConvertibleTo(Json::booleanValue));
398
- JSONTEST_ASSERT(!Json::Value(17).isConvertibleTo(Json::arrayValue));
399
- JSONTEST_ASSERT(!Json::Value(17).isConvertibleTo(Json::objectValue));
400
-
401
- JSONTEST_ASSERT(Json::Value(17U).isConvertibleTo(Json::realValue));
402
- JSONTEST_ASSERT(Json::Value(17U).isConvertibleTo(Json::stringValue));
403
- JSONTEST_ASSERT(Json::Value(17U).isConvertibleTo(Json::booleanValue));
404
- JSONTEST_ASSERT(!Json::Value(17U).isConvertibleTo(Json::arrayValue));
405
- JSONTEST_ASSERT(!Json::Value(17U).isConvertibleTo(Json::objectValue));
406
-
407
- JSONTEST_ASSERT(Json::Value(17.0).isConvertibleTo(Json::realValue));
408
- JSONTEST_ASSERT(Json::Value(17.0).isConvertibleTo(Json::stringValue));
409
- JSONTEST_ASSERT(Json::Value(17.0).isConvertibleTo(Json::booleanValue));
410
- JSONTEST_ASSERT(!Json::Value(17.0).isConvertibleTo(Json::arrayValue));
411
- JSONTEST_ASSERT(!Json::Value(17.0).isConvertibleTo(Json::objectValue));
412
-
413
- // Default int
414
- val = Json::Value(Json::intValue);
415
-
416
- JSONTEST_ASSERT_EQUAL(Json::intValue, val.type());
417
-
418
- checks = IsCheck();
419
- checks.isInt_ = true;
420
- checks.isInt64_ = true;
421
- checks.isUInt_ = true;
422
- checks.isUInt64_ = true;
423
- checks.isIntegral_ = true;
424
- checks.isDouble_ = true;
425
- checks.isNumeric_ = true;
426
- JSONTEST_ASSERT_PRED(checkIs(val, checks));
427
-
428
- JSONTEST_ASSERT(val.isConvertibleTo(Json::nullValue));
429
- JSONTEST_ASSERT(val.isConvertibleTo(Json::intValue));
430
- JSONTEST_ASSERT(val.isConvertibleTo(Json::uintValue));
431
-
432
- JSONTEST_ASSERT_EQUAL(0, val.asInt());
433
- JSONTEST_ASSERT_EQUAL(0, val.asLargestInt());
434
- JSONTEST_ASSERT_EQUAL(0, val.asUInt());
435
- JSONTEST_ASSERT_EQUAL(0, val.asLargestUInt());
436
- JSONTEST_ASSERT_EQUAL(0.0, val.asDouble());
437
- JSONTEST_ASSERT_EQUAL(0.0, val.asFloat());
438
- JSONTEST_ASSERT_EQUAL(false, val.asBool());
439
- JSONTEST_ASSERT_STRING_EQUAL("0", val.asString());
440
-
441
- // Default uint
442
- val = Json::Value(Json::uintValue);
443
-
444
- JSONTEST_ASSERT_EQUAL(Json::uintValue, val.type());
445
-
446
- checks = IsCheck();
447
- checks.isInt_ = true;
448
- checks.isInt64_ = true;
449
- checks.isUInt_ = true;
450
- checks.isUInt64_ = true;
451
- checks.isIntegral_ = true;
452
- checks.isDouble_ = true;
453
- checks.isNumeric_ = true;
454
- JSONTEST_ASSERT_PRED(checkIs(val, checks));
455
-
456
- JSONTEST_ASSERT(val.isConvertibleTo(Json::nullValue));
457
- JSONTEST_ASSERT(val.isConvertibleTo(Json::intValue));
458
- JSONTEST_ASSERT(val.isConvertibleTo(Json::uintValue));
459
-
460
- JSONTEST_ASSERT_EQUAL(0, val.asInt());
461
- JSONTEST_ASSERT_EQUAL(0, val.asLargestInt());
462
- JSONTEST_ASSERT_EQUAL(0, val.asUInt());
463
- JSONTEST_ASSERT_EQUAL(0, val.asLargestUInt());
464
- JSONTEST_ASSERT_EQUAL(0.0, val.asDouble());
465
- JSONTEST_ASSERT_EQUAL(0.0, val.asFloat());
466
- JSONTEST_ASSERT_EQUAL(false, val.asBool());
467
- JSONTEST_ASSERT_STRING_EQUAL("0", val.asString());
468
-
469
- // Default real
470
- val = Json::Value(Json::realValue);
471
-
472
- JSONTEST_ASSERT_EQUAL(Json::realValue, val.type());
473
-
474
- JSONTEST_ASSERT(val.isConvertibleTo(Json::nullValue));
475
- JSONTEST_ASSERT(val.isConvertibleTo(Json::intValue));
476
- JSONTEST_ASSERT(val.isConvertibleTo(Json::uintValue));
477
-
478
- checks = IsCheck();
479
- checks.isInt_ = true;
480
- checks.isInt64_ = true;
481
- checks.isUInt_ = true;
482
- checks.isUInt64_ = true;
483
- checks.isIntegral_ = true;
484
- checks.isDouble_ = true;
485
- checks.isNumeric_ = true;
486
- JSONTEST_ASSERT_PRED(checkIs(val, checks));
487
-
488
- JSONTEST_ASSERT_EQUAL(0, val.asInt());
489
- JSONTEST_ASSERT_EQUAL(0, val.asLargestInt());
490
- JSONTEST_ASSERT_EQUAL(0, val.asUInt());
491
- JSONTEST_ASSERT_EQUAL(0, val.asLargestUInt());
492
- JSONTEST_ASSERT_EQUAL(0.0, val.asDouble());
493
- JSONTEST_ASSERT_EQUAL(0.0, val.asFloat());
494
- JSONTEST_ASSERT_EQUAL(false, val.asBool());
495
- JSONTEST_ASSERT_STRING_EQUAL("0.0", val.asString());
496
-
497
- // Zero (signed constructor arg)
498
- val = Json::Value(0);
499
-
500
- JSONTEST_ASSERT_EQUAL(Json::intValue, val.type());
501
-
502
- checks = IsCheck();
503
- checks.isInt_ = true;
504
- checks.isInt64_ = true;
505
- checks.isUInt_ = true;
506
- checks.isUInt64_ = true;
507
- checks.isIntegral_ = true;
508
- checks.isDouble_ = true;
509
- checks.isNumeric_ = true;
510
- JSONTEST_ASSERT_PRED(checkIs(val, checks));
511
-
512
- JSONTEST_ASSERT(val.isConvertibleTo(Json::nullValue));
513
- JSONTEST_ASSERT(val.isConvertibleTo(Json::intValue));
514
- JSONTEST_ASSERT(val.isConvertibleTo(Json::uintValue));
515
-
516
- JSONTEST_ASSERT_EQUAL(0, val.asInt());
517
- JSONTEST_ASSERT_EQUAL(0, val.asLargestInt());
518
- JSONTEST_ASSERT_EQUAL(0, val.asUInt());
519
- JSONTEST_ASSERT_EQUAL(0, val.asLargestUInt());
520
- JSONTEST_ASSERT_EQUAL(0.0, val.asDouble());
521
- JSONTEST_ASSERT_EQUAL(0.0, val.asFloat());
522
- JSONTEST_ASSERT_EQUAL(false, val.asBool());
523
- JSONTEST_ASSERT_STRING_EQUAL("0", val.asString());
524
-
525
- // Zero (unsigned constructor arg)
526
- val = Json::Value(0u);
527
-
528
- JSONTEST_ASSERT_EQUAL(Json::uintValue, val.type());
529
-
530
- checks = IsCheck();
531
- checks.isInt_ = true;
532
- checks.isInt64_ = true;
533
- checks.isUInt_ = true;
534
- checks.isUInt64_ = true;
535
- checks.isIntegral_ = true;
536
- checks.isDouble_ = true;
537
- checks.isNumeric_ = true;
538
- JSONTEST_ASSERT_PRED(checkIs(val, checks));
539
-
540
- JSONTEST_ASSERT(val.isConvertibleTo(Json::nullValue));
541
- JSONTEST_ASSERT(val.isConvertibleTo(Json::intValue));
542
- JSONTEST_ASSERT(val.isConvertibleTo(Json::uintValue));
543
-
544
- JSONTEST_ASSERT_EQUAL(0, val.asInt());
545
- JSONTEST_ASSERT_EQUAL(0, val.asLargestInt());
546
- JSONTEST_ASSERT_EQUAL(0, val.asUInt());
547
- JSONTEST_ASSERT_EQUAL(0, val.asLargestUInt());
548
- JSONTEST_ASSERT_EQUAL(0.0, val.asDouble());
549
- JSONTEST_ASSERT_EQUAL(0.0, val.asFloat());
550
- JSONTEST_ASSERT_EQUAL(false, val.asBool());
551
- JSONTEST_ASSERT_STRING_EQUAL("0", val.asString());
552
-
553
- // Zero (floating-point constructor arg)
554
- val = Json::Value(0.0);
555
-
556
- JSONTEST_ASSERT_EQUAL(Json::realValue, val.type());
557
-
558
- checks = IsCheck();
559
- checks.isInt_ = true;
560
- checks.isInt64_ = true;
561
- checks.isUInt_ = true;
562
- checks.isUInt64_ = true;
563
- checks.isIntegral_ = true;
564
- checks.isDouble_ = true;
565
- checks.isNumeric_ = true;
566
- JSONTEST_ASSERT_PRED(checkIs(val, checks));
567
-
568
- JSONTEST_ASSERT(val.isConvertibleTo(Json::nullValue));
569
- JSONTEST_ASSERT(val.isConvertibleTo(Json::intValue));
570
- JSONTEST_ASSERT(val.isConvertibleTo(Json::uintValue));
571
-
572
- JSONTEST_ASSERT_EQUAL(0, val.asInt());
573
- JSONTEST_ASSERT_EQUAL(0, val.asLargestInt());
574
- JSONTEST_ASSERT_EQUAL(0, val.asUInt());
575
- JSONTEST_ASSERT_EQUAL(0, val.asLargestUInt());
576
- JSONTEST_ASSERT_EQUAL(0.0, val.asDouble());
577
- JSONTEST_ASSERT_EQUAL(0.0, val.asFloat());
578
- JSONTEST_ASSERT_EQUAL(false, val.asBool());
579
- JSONTEST_ASSERT_STRING_EQUAL("0.0", val.asString());
580
-
581
- // 2^20 (signed constructor arg)
582
- val = Json::Value(1 << 20);
583
-
584
- JSONTEST_ASSERT_EQUAL(Json::intValue, val.type());
585
- checks = IsCheck();
586
- checks.isInt_ = true;
587
- checks.isInt64_ = true;
588
- checks.isUInt_ = true;
589
- checks.isUInt64_ = true;
590
- checks.isIntegral_ = true;
591
- checks.isDouble_ = true;
592
- checks.isNumeric_ = true;
593
- JSONTEST_ASSERT_PRED(checkIs(val, checks));
594
-
595
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue));
596
- JSONTEST_ASSERT(val.isConvertibleTo(Json::intValue));
597
- JSONTEST_ASSERT(val.isConvertibleTo(Json::uintValue));
598
-
599
- JSONTEST_ASSERT_EQUAL((1 << 20), val.asInt());
600
- JSONTEST_ASSERT_EQUAL((1 << 20), val.asLargestInt());
601
- JSONTEST_ASSERT_EQUAL((1 << 20), val.asUInt());
602
- JSONTEST_ASSERT_EQUAL((1 << 20), val.asLargestUInt());
603
- JSONTEST_ASSERT_EQUAL((1 << 20), val.asDouble());
604
- JSONTEST_ASSERT_EQUAL((1 << 20), val.asFloat());
605
- JSONTEST_ASSERT_EQUAL(true, val.asBool());
606
- JSONTEST_ASSERT_STRING_EQUAL("1048576", val.asString());
607
-
608
- // 2^20 (unsigned constructor arg)
609
- val = Json::Value(Json::UInt(1 << 20));
610
-
611
- JSONTEST_ASSERT_EQUAL(Json::uintValue, val.type());
612
-
613
- checks = IsCheck();
614
- checks.isInt_ = true;
615
- checks.isInt64_ = true;
616
- checks.isUInt_ = true;
617
- checks.isUInt64_ = true;
618
- checks.isIntegral_ = true;
619
- checks.isDouble_ = true;
620
- checks.isNumeric_ = true;
621
- JSONTEST_ASSERT_PRED(checkIs(val, checks));
622
-
623
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue));
624
- JSONTEST_ASSERT(val.isConvertibleTo(Json::intValue));
625
- JSONTEST_ASSERT(val.isConvertibleTo(Json::uintValue));
626
-
627
- JSONTEST_ASSERT_EQUAL((1 << 20), val.asInt());
628
- JSONTEST_ASSERT_EQUAL((1 << 20), val.asLargestInt());
629
- JSONTEST_ASSERT_EQUAL((1 << 20), val.asUInt());
630
- JSONTEST_ASSERT_EQUAL((1 << 20), val.asLargestUInt());
631
- JSONTEST_ASSERT_EQUAL((1 << 20), val.asDouble());
632
- JSONTEST_ASSERT_EQUAL((1 << 20), val.asFloat());
633
- JSONTEST_ASSERT_EQUAL(true, val.asBool());
634
- JSONTEST_ASSERT_STRING_EQUAL("1048576", val.asString());
635
-
636
- // 2^20 (floating-point constructor arg)
637
- val = Json::Value((1 << 20) / 1.0);
638
-
639
- JSONTEST_ASSERT_EQUAL(Json::realValue, val.type());
640
-
641
- checks = IsCheck();
642
- checks.isInt_ = true;
643
- checks.isInt64_ = true;
644
- checks.isUInt_ = true;
645
- checks.isUInt64_ = true;
646
- checks.isIntegral_ = true;
647
- checks.isDouble_ = true;
648
- checks.isNumeric_ = true;
649
- JSONTEST_ASSERT_PRED(checkIs(val, checks));
650
-
651
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue));
652
- JSONTEST_ASSERT(val.isConvertibleTo(Json::intValue));
653
- JSONTEST_ASSERT(val.isConvertibleTo(Json::uintValue));
654
-
655
- JSONTEST_ASSERT_EQUAL((1 << 20), val.asInt());
656
- JSONTEST_ASSERT_EQUAL((1 << 20), val.asLargestInt());
657
- JSONTEST_ASSERT_EQUAL((1 << 20), val.asUInt());
658
- JSONTEST_ASSERT_EQUAL((1 << 20), val.asLargestUInt());
659
- JSONTEST_ASSERT_EQUAL((1 << 20), val.asDouble());
660
- JSONTEST_ASSERT_EQUAL((1 << 20), val.asFloat());
661
- JSONTEST_ASSERT_EQUAL(true, val.asBool());
662
- JSONTEST_ASSERT_STRING_EQUAL("1048576.0",
663
- normalizeFloatingPointStr(JsonTest::ToJsonString(val.asString())));
664
-
665
- // -2^20
666
- val = Json::Value(-(1 << 20));
667
-
668
- JSONTEST_ASSERT_EQUAL(Json::intValue, val.type());
669
-
670
- checks = IsCheck();
671
- checks.isInt_ = true;
672
- checks.isInt64_ = true;
673
- checks.isIntegral_ = true;
674
- checks.isDouble_ = true;
675
- checks.isNumeric_ = true;
676
- JSONTEST_ASSERT_PRED(checkIs(val, checks));
677
-
678
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue));
679
- JSONTEST_ASSERT(val.isConvertibleTo(Json::intValue));
680
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::uintValue));
681
-
682
- JSONTEST_ASSERT_EQUAL(-(1 << 20), val.asInt());
683
- JSONTEST_ASSERT_EQUAL(-(1 << 20), val.asLargestInt());
684
- JSONTEST_ASSERT_EQUAL(-(1 << 20), val.asDouble());
685
- JSONTEST_ASSERT_EQUAL(-(1 << 20), val.asFloat());
686
- JSONTEST_ASSERT_EQUAL(true, val.asBool());
687
- JSONTEST_ASSERT_STRING_EQUAL("-1048576", val.asString());
688
-
689
- // int32 max
690
- val = Json::Value(kint32max);
691
-
692
- JSONTEST_ASSERT_EQUAL(Json::intValue, val.type());
693
-
694
- checks = IsCheck();
695
- checks.isInt_ = true;
696
- checks.isInt64_ = true;
697
- checks.isUInt_ = true;
698
- checks.isUInt64_ = true;
699
- checks.isIntegral_ = true;
700
- checks.isDouble_ = true;
701
- checks.isNumeric_ = true;
702
- JSONTEST_ASSERT_PRED(checkIs(val, checks));
703
-
704
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue));
705
- JSONTEST_ASSERT(val.isConvertibleTo(Json::intValue));
706
- JSONTEST_ASSERT(val.isConvertibleTo(Json::uintValue));
707
-
708
- JSONTEST_ASSERT_EQUAL(kint32max, val.asInt());
709
- JSONTEST_ASSERT_EQUAL(kint32max, val.asLargestInt());
710
- JSONTEST_ASSERT_EQUAL(kint32max, val.asUInt());
711
- JSONTEST_ASSERT_EQUAL(kint32max, val.asLargestUInt());
712
- JSONTEST_ASSERT_EQUAL(kint32max, val.asDouble());
713
- JSONTEST_ASSERT_EQUAL(kfint32max, val.asFloat());
714
- JSONTEST_ASSERT_EQUAL(true, val.asBool());
715
- JSONTEST_ASSERT_STRING_EQUAL("2147483647", val.asString());
716
-
717
- // int32 min
718
- val = Json::Value(kint32min);
719
-
720
- JSONTEST_ASSERT_EQUAL(Json::intValue, val.type());
721
-
722
- checks = IsCheck();
723
- checks.isInt_ = true;
724
- checks.isInt64_ = true;
725
- checks.isIntegral_ = true;
726
- checks.isDouble_ = true;
727
- checks.isNumeric_ = true;
728
- JSONTEST_ASSERT_PRED(checkIs(val, checks));
729
-
730
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue));
731
- JSONTEST_ASSERT(val.isConvertibleTo(Json::intValue));
732
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::uintValue));
733
-
734
- JSONTEST_ASSERT_EQUAL(kint32min, val.asInt());
735
- JSONTEST_ASSERT_EQUAL(kint32min, val.asLargestInt());
736
- JSONTEST_ASSERT_EQUAL(kint32min, val.asDouble());
737
- JSONTEST_ASSERT_EQUAL(kint32min, val.asFloat());
738
- JSONTEST_ASSERT_EQUAL(true, val.asBool());
739
- JSONTEST_ASSERT_STRING_EQUAL("-2147483648", val.asString());
740
-
741
- // uint32 max
742
- val = Json::Value(kuint32max);
743
-
744
- JSONTEST_ASSERT_EQUAL(Json::uintValue, val.type());
745
-
746
- checks = IsCheck();
747
- checks.isInt64_ = true;
748
- checks.isUInt_ = true;
749
- checks.isUInt64_ = true;
750
- checks.isIntegral_ = true;
751
- checks.isDouble_ = true;
752
- checks.isNumeric_ = true;
753
- JSONTEST_ASSERT_PRED(checkIs(val, checks));
754
-
755
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue));
756
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::intValue));
757
- JSONTEST_ASSERT(val.isConvertibleTo(Json::uintValue));
758
-
759
- #ifndef JSON_NO_INT64
760
- JSONTEST_ASSERT_EQUAL(kuint32max, val.asLargestInt());
761
- #endif
762
- JSONTEST_ASSERT_EQUAL(kuint32max, val.asUInt());
763
- JSONTEST_ASSERT_EQUAL(kuint32max, val.asLargestUInt());
764
- JSONTEST_ASSERT_EQUAL(kuint32max, val.asDouble());
765
- JSONTEST_ASSERT_EQUAL(kfuint32max, val.asFloat());
766
- JSONTEST_ASSERT_EQUAL(true, val.asBool());
767
- JSONTEST_ASSERT_STRING_EQUAL("4294967295", val.asString());
768
-
769
- #ifdef JSON_NO_INT64
770
- // int64 max
771
- val = Json::Value(double(kint64max));
772
-
773
- JSONTEST_ASSERT_EQUAL(Json::realValue, val.type());
774
-
775
- checks = IsCheck();
776
- checks.isDouble_ = true;
777
- checks.isNumeric_ = true;
778
- JSONTEST_ASSERT_PRED(checkIs(val, checks));
779
-
780
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue));
781
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::intValue));
782
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::uintValue));
783
-
784
- JSONTEST_ASSERT_EQUAL(double(kint64max), val.asDouble());
785
- JSONTEST_ASSERT_EQUAL(float(kint64max), val.asFloat());
786
- JSONTEST_ASSERT_EQUAL(true, val.asBool());
787
- JSONTEST_ASSERT_STRING_EQUAL("9.22337e+18", val.asString());
788
-
789
- // int64 min
790
- val = Json::Value(double(kint64min));
791
-
792
- JSONTEST_ASSERT_EQUAL(Json::realValue, val.type());
793
-
794
- checks = IsCheck();
795
- checks.isDouble_ = true;
796
- checks.isNumeric_ = true;
797
- JSONTEST_ASSERT_PRED(checkIs(val, checks));
798
-
799
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue));
800
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::intValue));
801
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::uintValue));
802
-
803
- JSONTEST_ASSERT_EQUAL(double(kint64min), val.asDouble());
804
- JSONTEST_ASSERT_EQUAL(float(kint64min), val.asFloat());
805
- JSONTEST_ASSERT_EQUAL(true, val.asBool());
806
- JSONTEST_ASSERT_STRING_EQUAL("-9.22337e+18", val.asString());
807
-
808
- // uint64 max
809
- val = Json::Value(double(kuint64max));
810
-
811
- JSONTEST_ASSERT_EQUAL(Json::realValue, val.type());
812
-
813
- checks = IsCheck();
814
- checks.isDouble_ = true;
815
- checks.isNumeric_ = true;
816
- JSONTEST_ASSERT_PRED(checkIs(val, checks));
817
-
818
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue));
819
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::intValue));
820
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::uintValue));
821
-
822
- JSONTEST_ASSERT_EQUAL(double(kuint64max), val.asDouble());
823
- JSONTEST_ASSERT_EQUAL(float(kuint64max), val.asFloat());
824
- JSONTEST_ASSERT_EQUAL(true, val.asBool());
825
- JSONTEST_ASSERT_STRING_EQUAL("1.84467e+19", val.asString());
826
- #else // ifdef JSON_NO_INT64
827
- // 2^40 (signed constructor arg)
828
- val = Json::Value(Json::Int64(1) << 40);
829
-
830
- JSONTEST_ASSERT_EQUAL(Json::intValue, val.type());
831
-
832
- checks = IsCheck();
833
- checks.isInt64_ = true;
834
- checks.isUInt64_ = true;
835
- checks.isIntegral_ = true;
836
- checks.isDouble_ = true;
837
- checks.isNumeric_ = true;
838
- JSONTEST_ASSERT_PRED(checkIs(val, checks));
839
-
840
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue));
841
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::intValue));
842
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::uintValue));
843
-
844
- JSONTEST_ASSERT_EQUAL((Json::Int64(1) << 40), val.asInt64());
845
- JSONTEST_ASSERT_EQUAL((Json::Int64(1) << 40), val.asLargestInt());
846
- JSONTEST_ASSERT_EQUAL((Json::Int64(1) << 40), val.asUInt64());
847
- JSONTEST_ASSERT_EQUAL((Json::Int64(1) << 40), val.asLargestUInt());
848
- JSONTEST_ASSERT_EQUAL((Json::Int64(1) << 40), val.asDouble());
849
- JSONTEST_ASSERT_EQUAL((Json::Int64(1) << 40), val.asFloat());
850
- JSONTEST_ASSERT_EQUAL(true, val.asBool());
851
- JSONTEST_ASSERT_STRING_EQUAL("1099511627776", val.asString());
852
-
853
- // 2^40 (unsigned constructor arg)
854
- val = Json::Value(Json::UInt64(1) << 40);
855
-
856
- JSONTEST_ASSERT_EQUAL(Json::uintValue, val.type());
857
-
858
- checks = IsCheck();
859
- checks.isInt64_ = true;
860
- checks.isUInt64_ = true;
861
- checks.isIntegral_ = true;
862
- checks.isDouble_ = true;
863
- checks.isNumeric_ = true;
864
- JSONTEST_ASSERT_PRED(checkIs(val, checks));
865
-
866
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue));
867
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::intValue));
868
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::uintValue));
869
-
870
- JSONTEST_ASSERT_EQUAL((Json::Int64(1) << 40), val.asInt64());
871
- JSONTEST_ASSERT_EQUAL((Json::Int64(1) << 40), val.asLargestInt());
872
- JSONTEST_ASSERT_EQUAL((Json::Int64(1) << 40), val.asUInt64());
873
- JSONTEST_ASSERT_EQUAL((Json::Int64(1) << 40), val.asLargestUInt());
874
- JSONTEST_ASSERT_EQUAL((Json::Int64(1) << 40), val.asDouble());
875
- JSONTEST_ASSERT_EQUAL((Json::Int64(1) << 40), val.asFloat());
876
- JSONTEST_ASSERT_EQUAL(true, val.asBool());
877
- JSONTEST_ASSERT_STRING_EQUAL("1099511627776", val.asString());
878
-
879
- // 2^40 (floating-point constructor arg)
880
- val = Json::Value((Json::Int64(1) << 40) / 1.0);
881
-
882
- JSONTEST_ASSERT_EQUAL(Json::realValue, val.type());
883
-
884
- checks = IsCheck();
885
- checks.isInt64_ = true;
886
- checks.isUInt64_ = true;
887
- checks.isIntegral_ = true;
888
- checks.isDouble_ = true;
889
- checks.isNumeric_ = true;
890
- JSONTEST_ASSERT_PRED(checkIs(val, checks));
891
-
892
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue));
893
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::intValue));
894
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::uintValue));
895
-
896
- JSONTEST_ASSERT_EQUAL((Json::Int64(1) << 40), val.asInt64());
897
- JSONTEST_ASSERT_EQUAL((Json::Int64(1) << 40), val.asLargestInt());
898
- JSONTEST_ASSERT_EQUAL((Json::Int64(1) << 40), val.asUInt64());
899
- JSONTEST_ASSERT_EQUAL((Json::Int64(1) << 40), val.asLargestUInt());
900
- JSONTEST_ASSERT_EQUAL((Json::Int64(1) << 40), val.asDouble());
901
- JSONTEST_ASSERT_EQUAL((Json::Int64(1) << 40), val.asFloat());
902
- JSONTEST_ASSERT_EQUAL(true, val.asBool());
903
- JSONTEST_ASSERT_STRING_EQUAL("1099511627776.0",
904
- normalizeFloatingPointStr(JsonTest::ToJsonString(val.asString())));
905
-
906
- // -2^40
907
- val = Json::Value(-(Json::Int64(1) << 40));
908
-
909
- JSONTEST_ASSERT_EQUAL(Json::intValue, val.type());
910
-
911
- checks = IsCheck();
912
- checks.isInt64_ = true;
913
- checks.isIntegral_ = true;
914
- checks.isDouble_ = true;
915
- checks.isNumeric_ = true;
916
- JSONTEST_ASSERT_PRED(checkIs(val, checks));
917
-
918
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue));
919
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::intValue));
920
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::uintValue));
921
-
922
- JSONTEST_ASSERT_EQUAL(-(Json::Int64(1) << 40), val.asInt64());
923
- JSONTEST_ASSERT_EQUAL(-(Json::Int64(1) << 40), val.asLargestInt());
924
- JSONTEST_ASSERT_EQUAL(-(Json::Int64(1) << 40), val.asDouble());
925
- JSONTEST_ASSERT_EQUAL(-(Json::Int64(1) << 40), val.asFloat());
926
- JSONTEST_ASSERT_EQUAL(true, val.asBool());
927
- JSONTEST_ASSERT_STRING_EQUAL("-1099511627776", val.asString());
928
-
929
- // int64 max
930
- val = Json::Value(Json::Int64(kint64max));
931
-
932
- JSONTEST_ASSERT_EQUAL(Json::intValue, val.type());
933
-
934
- checks = IsCheck();
935
- checks.isInt64_ = true;
936
- checks.isUInt64_ = true;
937
- checks.isIntegral_ = true;
938
- checks.isDouble_ = true;
939
- checks.isNumeric_ = true;
940
- JSONTEST_ASSERT_PRED(checkIs(val, checks));
941
-
942
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue));
943
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::intValue));
944
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::uintValue));
945
-
946
- JSONTEST_ASSERT_EQUAL(kint64max, val.asInt64());
947
- JSONTEST_ASSERT_EQUAL(kint64max, val.asLargestInt());
948
- JSONTEST_ASSERT_EQUAL(kint64max, val.asUInt64());
949
- JSONTEST_ASSERT_EQUAL(kint64max, val.asLargestUInt());
950
- JSONTEST_ASSERT_EQUAL(double(kint64max), val.asDouble());
951
- JSONTEST_ASSERT_EQUAL(float(kint64max), val.asFloat());
952
- JSONTEST_ASSERT_EQUAL(true, val.asBool());
953
- JSONTEST_ASSERT_STRING_EQUAL("9223372036854775807", val.asString());
954
-
955
- // int64 max (floating point constructor). Note that kint64max is not exactly
956
- // representable as a double, and will be rounded up to be higher.
957
- val = Json::Value(double(kint64max));
958
-
959
- JSONTEST_ASSERT_EQUAL(Json::realValue, val.type());
960
-
961
- checks = IsCheck();
962
- checks.isUInt64_ = true;
963
- checks.isIntegral_ = true;
964
- checks.isDouble_ = true;
965
- checks.isNumeric_ = true;
966
- JSONTEST_ASSERT_PRED(checkIs(val, checks));
967
-
968
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue));
969
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::intValue));
970
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::uintValue));
971
-
972
- JSONTEST_ASSERT_EQUAL(Json::UInt64(1) << 63, val.asUInt64());
973
- JSONTEST_ASSERT_EQUAL(Json::UInt64(1) << 63, val.asLargestUInt());
974
- JSONTEST_ASSERT_EQUAL(uint64ToDouble(Json::UInt64(1) << 63), val.asDouble());
975
- JSONTEST_ASSERT_EQUAL(float(uint64ToDouble(Json::UInt64(1) << 63)),
976
- val.asFloat());
977
- JSONTEST_ASSERT_EQUAL(true, val.asBool());
978
- JSONTEST_ASSERT_STRING_EQUAL("9.2233720368547758e+18",
979
- normalizeFloatingPointStr(JsonTest::ToJsonString(val.asString())));
980
-
981
- // int64 min
982
- val = Json::Value(Json::Int64(kint64min));
983
-
984
- JSONTEST_ASSERT_EQUAL(Json::intValue, val.type());
985
-
986
- checks = IsCheck();
987
- checks.isInt64_ = true;
988
- checks.isIntegral_ = true;
989
- checks.isDouble_ = true;
990
- checks.isNumeric_ = true;
991
- JSONTEST_ASSERT_PRED(checkIs(val, checks));
992
-
993
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue));
994
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::intValue));
995
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::uintValue));
996
-
997
- JSONTEST_ASSERT_EQUAL(kint64min, val.asInt64());
998
- JSONTEST_ASSERT_EQUAL(kint64min, val.asLargestInt());
999
- JSONTEST_ASSERT_EQUAL(double(kint64min), val.asDouble());
1000
- JSONTEST_ASSERT_EQUAL(float(kint64min), val.asFloat());
1001
- JSONTEST_ASSERT_EQUAL(true, val.asBool());
1002
- JSONTEST_ASSERT_STRING_EQUAL("-9223372036854775808", val.asString());
1003
-
1004
- // int64 min (floating point constructor). Note that kint64min *is* exactly
1005
- // representable as a double.
1006
- val = Json::Value(double(kint64min));
1007
-
1008
- JSONTEST_ASSERT_EQUAL(Json::realValue, val.type());
1009
-
1010
- checks = IsCheck();
1011
- checks.isInt64_ = true;
1012
- checks.isIntegral_ = true;
1013
- checks.isDouble_ = true;
1014
- checks.isNumeric_ = true;
1015
- JSONTEST_ASSERT_PRED(checkIs(val, checks));
1016
-
1017
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue));
1018
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::intValue));
1019
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::uintValue));
1020
-
1021
- JSONTEST_ASSERT_EQUAL(kint64min, val.asInt64());
1022
- JSONTEST_ASSERT_EQUAL(kint64min, val.asLargestInt());
1023
- JSONTEST_ASSERT_EQUAL(-9223372036854775808.0, val.asDouble());
1024
- JSONTEST_ASSERT_EQUAL(-9223372036854775808.0, val.asFloat());
1025
- JSONTEST_ASSERT_EQUAL(true, val.asBool());
1026
- JSONTEST_ASSERT_STRING_EQUAL("-9.2233720368547758e+18",
1027
- normalizeFloatingPointStr(JsonTest::ToJsonString(val.asString())));
1028
-
1029
- // 10^19
1030
- const Json::UInt64 ten_to_19 = static_cast<Json::UInt64>(1e19);
1031
- val = Json::Value(Json::UInt64(ten_to_19));
1032
-
1033
- JSONTEST_ASSERT_EQUAL(Json::uintValue, val.type());
1034
-
1035
- checks = IsCheck();
1036
- checks.isUInt64_ = true;
1037
- checks.isIntegral_ = true;
1038
- checks.isDouble_ = true;
1039
- checks.isNumeric_ = true;
1040
- JSONTEST_ASSERT_PRED(checkIs(val, checks));
1041
-
1042
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue));
1043
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::intValue));
1044
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::uintValue));
1045
-
1046
- JSONTEST_ASSERT_EQUAL(ten_to_19, val.asUInt64());
1047
- JSONTEST_ASSERT_EQUAL(ten_to_19, val.asLargestUInt());
1048
- JSONTEST_ASSERT_EQUAL(uint64ToDouble(ten_to_19), val.asDouble());
1049
- JSONTEST_ASSERT_EQUAL(float(uint64ToDouble(ten_to_19)), val.asFloat());
1050
- JSONTEST_ASSERT_EQUAL(true, val.asBool());
1051
- JSONTEST_ASSERT_STRING_EQUAL("10000000000000000000", val.asString());
1052
-
1053
- // 10^19 (double constructor). Note that 10^19 is not exactly representable
1054
- // as a double.
1055
- val = Json::Value(uint64ToDouble(ten_to_19));
1056
-
1057
- JSONTEST_ASSERT_EQUAL(Json::realValue, val.type());
1058
-
1059
- checks = IsCheck();
1060
- checks.isUInt64_ = true;
1061
- checks.isIntegral_ = true;
1062
- checks.isDouble_ = true;
1063
- checks.isNumeric_ = true;
1064
- JSONTEST_ASSERT_PRED(checkIs(val, checks));
1065
-
1066
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue));
1067
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::intValue));
1068
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::uintValue));
1069
-
1070
- JSONTEST_ASSERT_EQUAL(1e19, val.asDouble());
1071
- JSONTEST_ASSERT_EQUAL(1e19, val.asFloat());
1072
- JSONTEST_ASSERT_EQUAL(true, val.asBool());
1073
- JSONTEST_ASSERT_STRING_EQUAL("1e+19",
1074
- normalizeFloatingPointStr(JsonTest::ToJsonString(val.asString())));
1075
-
1076
- // uint64 max
1077
- val = Json::Value(Json::UInt64(kuint64max));
1078
-
1079
- JSONTEST_ASSERT_EQUAL(Json::uintValue, val.type());
1080
-
1081
- checks = IsCheck();
1082
- checks.isUInt64_ = true;
1083
- checks.isIntegral_ = true;
1084
- checks.isDouble_ = true;
1085
- checks.isNumeric_ = true;
1086
- JSONTEST_ASSERT_PRED(checkIs(val, checks));
1087
-
1088
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue));
1089
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::intValue));
1090
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::uintValue));
1091
-
1092
- JSONTEST_ASSERT_EQUAL(kuint64max, val.asUInt64());
1093
- JSONTEST_ASSERT_EQUAL(kuint64max, val.asLargestUInt());
1094
- JSONTEST_ASSERT_EQUAL(uint64ToDouble(kuint64max), val.asDouble());
1095
- JSONTEST_ASSERT_EQUAL(float(uint64ToDouble(kuint64max)), val.asFloat());
1096
- JSONTEST_ASSERT_EQUAL(true, val.asBool());
1097
- JSONTEST_ASSERT_STRING_EQUAL("18446744073709551615", val.asString());
1098
-
1099
- // uint64 max (floating point constructor). Note that kuint64max is not
1100
- // exactly representable as a double, and will be rounded up to be higher.
1101
- val = Json::Value(uint64ToDouble(kuint64max));
1102
-
1103
- JSONTEST_ASSERT_EQUAL(Json::realValue, val.type());
1104
-
1105
- checks = IsCheck();
1106
- checks.isDouble_ = true;
1107
- checks.isNumeric_ = true;
1108
- JSONTEST_ASSERT_PRED(checkIs(val, checks));
1109
-
1110
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue));
1111
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::intValue));
1112
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::uintValue));
1113
-
1114
- JSONTEST_ASSERT_EQUAL(18446744073709551616.0, val.asDouble());
1115
- JSONTEST_ASSERT_EQUAL(18446744073709551616.0, val.asFloat());
1116
- JSONTEST_ASSERT_EQUAL(true, val.asBool());
1117
- JSONTEST_ASSERT_STRING_EQUAL("1.8446744073709552e+19",
1118
- normalizeFloatingPointStr(JsonTest::ToJsonString(val.asString())));
1119
- #endif
1120
- }
1121
-
1122
- JSONTEST_FIXTURE(ValueTest, nonIntegers) {
1123
- IsCheck checks;
1124
- Json::Value val;
1125
-
1126
- // Small positive number
1127
- val = Json::Value(1.5);
1128
-
1129
- JSONTEST_ASSERT_EQUAL(Json::realValue, val.type());
1130
-
1131
- checks = IsCheck();
1132
- checks.isDouble_ = true;
1133
- checks.isNumeric_ = true;
1134
- JSONTEST_ASSERT_PRED(checkIs(val, checks));
1135
-
1136
- JSONTEST_ASSERT(val.isConvertibleTo(Json::intValue));
1137
- JSONTEST_ASSERT(val.isConvertibleTo(Json::uintValue));
1138
- JSONTEST_ASSERT(val.isConvertibleTo(Json::realValue));
1139
- JSONTEST_ASSERT(val.isConvertibleTo(Json::booleanValue));
1140
- JSONTEST_ASSERT(val.isConvertibleTo(Json::stringValue));
1141
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue));
1142
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::arrayValue));
1143
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::objectValue));
1144
-
1145
- JSONTEST_ASSERT_EQUAL(1.5, val.asDouble());
1146
- JSONTEST_ASSERT_EQUAL(1.5, val.asFloat());
1147
- JSONTEST_ASSERT_EQUAL(1, val.asInt());
1148
- JSONTEST_ASSERT_EQUAL(1, val.asLargestInt());
1149
- JSONTEST_ASSERT_EQUAL(1, val.asUInt());
1150
- JSONTEST_ASSERT_EQUAL(1, val.asLargestUInt());
1151
- JSONTEST_ASSERT_EQUAL(true, val.asBool());
1152
- JSONTEST_ASSERT_EQUAL("1.5", val.asString());
1153
-
1154
- // Small negative number
1155
- val = Json::Value(-1.5);
1156
-
1157
- JSONTEST_ASSERT_EQUAL(Json::realValue, val.type());
1158
-
1159
- checks = IsCheck();
1160
- checks.isDouble_ = true;
1161
- checks.isNumeric_ = true;
1162
- JSONTEST_ASSERT_PRED(checkIs(val, checks));
1163
-
1164
- JSONTEST_ASSERT(val.isConvertibleTo(Json::intValue));
1165
- JSONTEST_ASSERT(val.isConvertibleTo(Json::realValue));
1166
- JSONTEST_ASSERT(val.isConvertibleTo(Json::booleanValue));
1167
- JSONTEST_ASSERT(val.isConvertibleTo(Json::stringValue));
1168
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue));
1169
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::uintValue));
1170
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::arrayValue));
1171
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::objectValue));
1172
-
1173
- JSONTEST_ASSERT_EQUAL(-1.5, val.asDouble());
1174
- JSONTEST_ASSERT_EQUAL(-1.5, val.asFloat());
1175
- JSONTEST_ASSERT_EQUAL(-1, val.asInt());
1176
- JSONTEST_ASSERT_EQUAL(-1, val.asLargestInt());
1177
- JSONTEST_ASSERT_EQUAL(true, val.asBool());
1178
- JSONTEST_ASSERT_EQUAL("-1.5", val.asString());
1179
-
1180
- // A bit over int32 max
1181
- val = Json::Value(kint32max + 0.5);
1182
-
1183
- JSONTEST_ASSERT_EQUAL(Json::realValue, val.type());
1184
-
1185
- checks = IsCheck();
1186
- checks.isDouble_ = true;
1187
- checks.isNumeric_ = true;
1188
- JSONTEST_ASSERT_PRED(checkIs(val, checks));
1189
-
1190
- JSONTEST_ASSERT(val.isConvertibleTo(Json::uintValue));
1191
- JSONTEST_ASSERT(val.isConvertibleTo(Json::realValue));
1192
- JSONTEST_ASSERT(val.isConvertibleTo(Json::booleanValue));
1193
- JSONTEST_ASSERT(val.isConvertibleTo(Json::stringValue));
1194
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue));
1195
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::intValue));
1196
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::arrayValue));
1197
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::objectValue));
1198
-
1199
- JSONTEST_ASSERT_EQUAL(2147483647.5, val.asDouble());
1200
- JSONTEST_ASSERT_EQUAL(float(2147483647.5), val.asFloat());
1201
- JSONTEST_ASSERT_EQUAL(2147483647U, val.asUInt());
1202
- #ifdef JSON_HAS_INT64
1203
- JSONTEST_ASSERT_EQUAL(2147483647L, val.asLargestInt());
1204
- JSONTEST_ASSERT_EQUAL(2147483647U, val.asLargestUInt());
1205
- #endif
1206
- JSONTEST_ASSERT_EQUAL(true, val.asBool());
1207
- JSONTEST_ASSERT_EQUAL("2147483647.5",
1208
- normalizeFloatingPointStr(JsonTest::ToJsonString(val.asString())));
1209
-
1210
- // A bit under int32 min
1211
- val = Json::Value(kint32min - 0.5);
1212
-
1213
- JSONTEST_ASSERT_EQUAL(Json::realValue, val.type());
1214
-
1215
- checks = IsCheck();
1216
- checks.isDouble_ = true;
1217
- checks.isNumeric_ = true;
1218
- JSONTEST_ASSERT_PRED(checkIs(val, checks));
1219
-
1220
- JSONTEST_ASSERT(val.isConvertibleTo(Json::realValue));
1221
- JSONTEST_ASSERT(val.isConvertibleTo(Json::booleanValue));
1222
- JSONTEST_ASSERT(val.isConvertibleTo(Json::stringValue));
1223
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue));
1224
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::intValue));
1225
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::uintValue));
1226
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::arrayValue));
1227
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::objectValue));
1228
-
1229
- JSONTEST_ASSERT_EQUAL(-2147483648.5, val.asDouble());
1230
- JSONTEST_ASSERT_EQUAL(float(-2147483648.5), val.asFloat());
1231
- #ifdef JSON_HAS_INT64
1232
- JSONTEST_ASSERT_EQUAL(-(Json::Int64(1) << 31), val.asLargestInt());
1233
- #endif
1234
- JSONTEST_ASSERT_EQUAL(true, val.asBool());
1235
- JSONTEST_ASSERT_EQUAL("-2147483648.5",
1236
- normalizeFloatingPointStr(JsonTest::ToJsonString(val.asString())));
1237
-
1238
- // A bit over uint32 max
1239
- val = Json::Value(kuint32max + 0.5);
1240
-
1241
- JSONTEST_ASSERT_EQUAL(Json::realValue, val.type());
1242
-
1243
- checks = IsCheck();
1244
- checks.isDouble_ = true;
1245
- checks.isNumeric_ = true;
1246
- JSONTEST_ASSERT_PRED(checkIs(val, checks));
1247
-
1248
- JSONTEST_ASSERT(val.isConvertibleTo(Json::realValue));
1249
- JSONTEST_ASSERT(val.isConvertibleTo(Json::booleanValue));
1250
- JSONTEST_ASSERT(val.isConvertibleTo(Json::stringValue));
1251
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue));
1252
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::intValue));
1253
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::uintValue));
1254
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::arrayValue));
1255
- JSONTEST_ASSERT(!val.isConvertibleTo(Json::objectValue));
1256
-
1257
- JSONTEST_ASSERT_EQUAL(4294967295.5, val.asDouble());
1258
- JSONTEST_ASSERT_EQUAL(float(4294967295.5), val.asFloat());
1259
- #ifdef JSON_HAS_INT64
1260
- JSONTEST_ASSERT_EQUAL((Json::Int64(1) << 32) - 1, val.asLargestInt());
1261
- JSONTEST_ASSERT_EQUAL((Json::UInt64(1) << 32) - Json::UInt64(1),
1262
- val.asLargestUInt());
1263
- #endif
1264
- JSONTEST_ASSERT_EQUAL(true, val.asBool());
1265
- JSONTEST_ASSERT_EQUAL("4294967295.5",
1266
- normalizeFloatingPointStr(JsonTest::ToJsonString(val.asString())));
1267
-
1268
- val = Json::Value(1.2345678901234);
1269
- JSONTEST_ASSERT_STRING_EQUAL("1.2345678901234001",
1270
- normalizeFloatingPointStr(JsonTest::ToJsonString(val.asString())));
1271
-
1272
- // A 16-digit floating point number.
1273
- val = Json::Value(2199023255552000.0f);
1274
- JSONTEST_ASSERT_EQUAL(float(2199023255552000.0f), val.asFloat());
1275
- JSONTEST_ASSERT_STRING_EQUAL("2199023255552000.0",
1276
- normalizeFloatingPointStr(JsonTest::ToJsonString(val.asString())));
1277
-
1278
- // A very large floating point number.
1279
- val = Json::Value(3.402823466385289e38);
1280
- JSONTEST_ASSERT_EQUAL(float(3.402823466385289e38), val.asFloat());
1281
- JSONTEST_ASSERT_STRING_EQUAL("3.402823466385289e+38",
1282
- normalizeFloatingPointStr(JsonTest::ToJsonString(val.asString())));
1283
-
1284
- // An even larger floating point number.
1285
- val = Json::Value(1.2345678e300);
1286
- JSONTEST_ASSERT_EQUAL(double(1.2345678e300), val.asDouble());
1287
- JSONTEST_ASSERT_STRING_EQUAL("1.2345678e+300",
1288
- normalizeFloatingPointStr(JsonTest::ToJsonString(val.asString())));
1289
- }
1290
-
1291
- void ValueTest::checkConstMemberCount(const Json::Value& value,
1292
- unsigned int expectedCount) {
1293
- unsigned int count = 0;
1294
- Json::Value::const_iterator itEnd = value.end();
1295
- for (Json::Value::const_iterator it = value.begin(); it != itEnd; ++it) {
1296
- ++count;
1297
- }
1298
- JSONTEST_ASSERT_EQUAL(expectedCount, count) << "Json::Value::const_iterator";
1299
- }
1300
-
1301
- void ValueTest::checkMemberCount(Json::Value& value,
1302
- unsigned int expectedCount) {
1303
- JSONTEST_ASSERT_EQUAL(expectedCount, value.size());
1304
-
1305
- unsigned int count = 0;
1306
- Json::Value::iterator itEnd = value.end();
1307
- for (Json::Value::iterator it = value.begin(); it != itEnd; ++it) {
1308
- ++count;
1309
- }
1310
- JSONTEST_ASSERT_EQUAL(expectedCount, count) << "Json::Value::iterator";
1311
-
1312
- JSONTEST_ASSERT_PRED(checkConstMemberCount(value, expectedCount));
1313
- }
1314
-
1315
- ValueTest::IsCheck::IsCheck()
1316
- : isObject_(false), isArray_(false), isBool_(false), isString_(false),
1317
- isNull_(false), isInt_(false), isInt64_(false), isUInt_(false),
1318
- isUInt64_(false), isIntegral_(false), isDouble_(false),
1319
- isNumeric_(false) {}
1320
-
1321
- void ValueTest::checkIs(const Json::Value& value, const IsCheck& check) {
1322
- JSONTEST_ASSERT_EQUAL(check.isObject_, value.isObject());
1323
- JSONTEST_ASSERT_EQUAL(check.isArray_, value.isArray());
1324
- JSONTEST_ASSERT_EQUAL(check.isBool_, value.isBool());
1325
- JSONTEST_ASSERT_EQUAL(check.isDouble_, value.isDouble());
1326
- JSONTEST_ASSERT_EQUAL(check.isInt_, value.isInt());
1327
- JSONTEST_ASSERT_EQUAL(check.isUInt_, value.isUInt());
1328
- JSONTEST_ASSERT_EQUAL(check.isIntegral_, value.isIntegral());
1329
- JSONTEST_ASSERT_EQUAL(check.isNumeric_, value.isNumeric());
1330
- JSONTEST_ASSERT_EQUAL(check.isString_, value.isString());
1331
- JSONTEST_ASSERT_EQUAL(check.isNull_, value.isNull());
1332
-
1333
- #ifdef JSON_HAS_INT64
1334
- JSONTEST_ASSERT_EQUAL(check.isInt64_, value.isInt64());
1335
- JSONTEST_ASSERT_EQUAL(check.isUInt64_, value.isUInt64());
1336
- #else
1337
- JSONTEST_ASSERT_EQUAL(false, value.isInt64());
1338
- JSONTEST_ASSERT_EQUAL(false, value.isUInt64());
1339
- #endif
1340
- }
1341
-
1342
- JSONTEST_FIXTURE(ValueTest, compareNull) {
1343
- JSONTEST_ASSERT_PRED(checkIsEqual(Json::Value(), Json::Value()));
1344
- }
1345
-
1346
- JSONTEST_FIXTURE(ValueTest, compareInt) {
1347
- JSONTEST_ASSERT_PRED(checkIsLess(0, 10));
1348
- JSONTEST_ASSERT_PRED(checkIsEqual(10, 10));
1349
- JSONTEST_ASSERT_PRED(checkIsEqual(-10, -10));
1350
- JSONTEST_ASSERT_PRED(checkIsLess(-10, 0));
1351
- }
1352
-
1353
- JSONTEST_FIXTURE(ValueTest, compareUInt) {
1354
- JSONTEST_ASSERT_PRED(checkIsLess(0u, 10u));
1355
- JSONTEST_ASSERT_PRED(checkIsLess(0u, Json::Value::maxUInt));
1356
- JSONTEST_ASSERT_PRED(checkIsEqual(10u, 10u));
1357
- }
1358
-
1359
- JSONTEST_FIXTURE(ValueTest, compareDouble) {
1360
- JSONTEST_ASSERT_PRED(checkIsLess(0.0, 10.0));
1361
- JSONTEST_ASSERT_PRED(checkIsEqual(10.0, 10.0));
1362
- JSONTEST_ASSERT_PRED(checkIsEqual(-10.0, -10.0));
1363
- JSONTEST_ASSERT_PRED(checkIsLess(-10.0, 0.0));
1364
- }
1365
-
1366
- JSONTEST_FIXTURE(ValueTest, compareString) {
1367
- JSONTEST_ASSERT_PRED(checkIsLess("", " "));
1368
- JSONTEST_ASSERT_PRED(checkIsLess("", "a"));
1369
- JSONTEST_ASSERT_PRED(checkIsLess("abcd", "zyui"));
1370
- JSONTEST_ASSERT_PRED(checkIsLess("abc", "abcd"));
1371
- JSONTEST_ASSERT_PRED(checkIsEqual("abcd", "abcd"));
1372
- JSONTEST_ASSERT_PRED(checkIsEqual(" ", " "));
1373
- JSONTEST_ASSERT_PRED(checkIsLess("ABCD", "abcd"));
1374
- JSONTEST_ASSERT_PRED(checkIsEqual("ABCD", "ABCD"));
1375
- }
1376
-
1377
- JSONTEST_FIXTURE(ValueTest, compareBoolean) {
1378
- JSONTEST_ASSERT_PRED(checkIsLess(false, true));
1379
- JSONTEST_ASSERT_PRED(checkIsEqual(false, false));
1380
- JSONTEST_ASSERT_PRED(checkIsEqual(true, true));
1381
- }
1382
-
1383
- JSONTEST_FIXTURE(ValueTest, compareArray) {
1384
- // array compare size then content
1385
- Json::Value emptyArray(Json::arrayValue);
1386
- Json::Value l1aArray;
1387
- l1aArray.append(0);
1388
- Json::Value l1bArray;
1389
- l1bArray.append(10);
1390
- Json::Value l2aArray;
1391
- l2aArray.append(0);
1392
- l2aArray.append(0);
1393
- Json::Value l2bArray;
1394
- l2bArray.append(0);
1395
- l2bArray.append(10);
1396
- JSONTEST_ASSERT_PRED(checkIsLess(emptyArray, l1aArray));
1397
- JSONTEST_ASSERT_PRED(checkIsLess(emptyArray, l2aArray));
1398
- JSONTEST_ASSERT_PRED(checkIsLess(l1aArray, l2aArray));
1399
- JSONTEST_ASSERT_PRED(checkIsLess(l2aArray, l2bArray));
1400
- JSONTEST_ASSERT_PRED(checkIsEqual(emptyArray, Json::Value(emptyArray)));
1401
- JSONTEST_ASSERT_PRED(checkIsEqual(l1aArray, Json::Value(l1aArray)));
1402
- JSONTEST_ASSERT_PRED(checkIsEqual(l2bArray, Json::Value(l2bArray)));
1403
- }
1404
-
1405
- JSONTEST_FIXTURE(ValueTest, compareObject) {
1406
- // object compare size then content
1407
- Json::Value emptyObject(Json::objectValue);
1408
- Json::Value l1aObject;
1409
- l1aObject["key1"] = 0;
1410
- Json::Value l1bObject;
1411
- l1aObject["key1"] = 10;
1412
- Json::Value l2aObject;
1413
- l2aObject["key1"] = 0;
1414
- l2aObject["key2"] = 0;
1415
- JSONTEST_ASSERT_PRED(checkIsLess(emptyObject, l1aObject));
1416
- JSONTEST_ASSERT_PRED(checkIsLess(emptyObject, l2aObject));
1417
- JSONTEST_ASSERT_PRED(checkIsLess(l1aObject, l2aObject));
1418
- JSONTEST_ASSERT_PRED(checkIsEqual(emptyObject, Json::Value(emptyObject)));
1419
- JSONTEST_ASSERT_PRED(checkIsEqual(l1aObject, Json::Value(l1aObject)));
1420
- JSONTEST_ASSERT_PRED(checkIsEqual(l2aObject, Json::Value(l2aObject)));
1421
- }
1422
-
1423
- JSONTEST_FIXTURE(ValueTest, compareType) {
1424
- // object of different type are ordered according to their type
1425
- JSONTEST_ASSERT_PRED(checkIsLess(Json::Value(), Json::Value(1)));
1426
- JSONTEST_ASSERT_PRED(checkIsLess(Json::Value(1), Json::Value(1u)));
1427
- JSONTEST_ASSERT_PRED(checkIsLess(Json::Value(1u), Json::Value(1.0)));
1428
- JSONTEST_ASSERT_PRED(checkIsLess(Json::Value(1.0), Json::Value("a")));
1429
- JSONTEST_ASSERT_PRED(checkIsLess(Json::Value("a"), Json::Value(true)));
1430
- JSONTEST_ASSERT_PRED(
1431
- checkIsLess(Json::Value(true), Json::Value(Json::arrayValue)));
1432
- JSONTEST_ASSERT_PRED(checkIsLess(Json::Value(Json::arrayValue),
1433
- Json::Value(Json::objectValue)));
1434
- }
1435
-
1436
- void ValueTest::checkIsLess(const Json::Value& x, const Json::Value& y) {
1437
- JSONTEST_ASSERT(x < y);
1438
- JSONTEST_ASSERT(y > x);
1439
- JSONTEST_ASSERT(x <= y);
1440
- JSONTEST_ASSERT(y >= x);
1441
- JSONTEST_ASSERT(!(x == y));
1442
- JSONTEST_ASSERT(!(y == x));
1443
- JSONTEST_ASSERT(!(x >= y));
1444
- JSONTEST_ASSERT(!(y <= x));
1445
- JSONTEST_ASSERT(!(x > y));
1446
- JSONTEST_ASSERT(!(y < x));
1447
- JSONTEST_ASSERT(x.compare(y) < 0);
1448
- JSONTEST_ASSERT(y.compare(x) >= 0);
1449
- }
1450
-
1451
- void ValueTest::checkIsEqual(const Json::Value& x, const Json::Value& y) {
1452
- JSONTEST_ASSERT(x == y);
1453
- JSONTEST_ASSERT(y == x);
1454
- JSONTEST_ASSERT(x <= y);
1455
- JSONTEST_ASSERT(y <= x);
1456
- JSONTEST_ASSERT(x >= y);
1457
- JSONTEST_ASSERT(y >= x);
1458
- JSONTEST_ASSERT(!(x < y));
1459
- JSONTEST_ASSERT(!(y < x));
1460
- JSONTEST_ASSERT(!(x > y));
1461
- JSONTEST_ASSERT(!(y > x));
1462
- JSONTEST_ASSERT(x.compare(y) == 0);
1463
- JSONTEST_ASSERT(y.compare(x) == 0);
1464
- }
1465
-
1466
- JSONTEST_FIXTURE(ValueTest, typeChecksThrowExceptions) {
1467
- #if JSON_USE_EXCEPTION
1468
-
1469
- Json::Value intVal(1);
1470
- Json::Value strVal("Test");
1471
- Json::Value objVal(Json::objectValue);
1472
- Json::Value arrVal(Json::arrayValue);
1473
-
1474
- JSONTEST_ASSERT_THROWS(intVal["test"]);
1475
- JSONTEST_ASSERT_THROWS(strVal["test"]);
1476
- JSONTEST_ASSERT_THROWS(arrVal["test"]);
1477
-
1478
- JSONTEST_ASSERT_THROWS(intVal.removeMember("test"));
1479
- JSONTEST_ASSERT_THROWS(strVal.removeMember("test"));
1480
- JSONTEST_ASSERT_THROWS(arrVal.removeMember("test"));
1481
-
1482
- JSONTEST_ASSERT_THROWS(intVal.getMemberNames());
1483
- JSONTEST_ASSERT_THROWS(strVal.getMemberNames());
1484
- JSONTEST_ASSERT_THROWS(arrVal.getMemberNames());
1485
-
1486
- JSONTEST_ASSERT_THROWS(intVal[0]);
1487
- JSONTEST_ASSERT_THROWS(objVal[0]);
1488
- JSONTEST_ASSERT_THROWS(strVal[0]);
1489
-
1490
- JSONTEST_ASSERT_THROWS(intVal.clear());
1491
-
1492
- JSONTEST_ASSERT_THROWS(intVal.resize(1));
1493
- JSONTEST_ASSERT_THROWS(strVal.resize(1));
1494
- JSONTEST_ASSERT_THROWS(objVal.resize(1));
1495
-
1496
- JSONTEST_ASSERT_THROWS(intVal.asCString());
1497
-
1498
- JSONTEST_ASSERT_THROWS(objVal.asString());
1499
- JSONTEST_ASSERT_THROWS(arrVal.asString());
1500
-
1501
- JSONTEST_ASSERT_THROWS(strVal.asInt());
1502
- JSONTEST_ASSERT_THROWS(objVal.asInt());
1503
- JSONTEST_ASSERT_THROWS(arrVal.asInt());
1504
-
1505
- JSONTEST_ASSERT_THROWS(strVal.asUInt());
1506
- JSONTEST_ASSERT_THROWS(objVal.asUInt());
1507
- JSONTEST_ASSERT_THROWS(arrVal.asUInt());
1508
-
1509
- JSONTEST_ASSERT_THROWS(strVal.asInt64());
1510
- JSONTEST_ASSERT_THROWS(objVal.asInt64());
1511
- JSONTEST_ASSERT_THROWS(arrVal.asInt64());
1512
-
1513
- JSONTEST_ASSERT_THROWS(strVal.asUInt64());
1514
- JSONTEST_ASSERT_THROWS(objVal.asUInt64());
1515
- JSONTEST_ASSERT_THROWS(arrVal.asUInt64());
1516
-
1517
- JSONTEST_ASSERT_THROWS(strVal.asDouble());
1518
- JSONTEST_ASSERT_THROWS(objVal.asDouble());
1519
- JSONTEST_ASSERT_THROWS(arrVal.asDouble());
1520
-
1521
- JSONTEST_ASSERT_THROWS(strVal.asFloat());
1522
- JSONTEST_ASSERT_THROWS(objVal.asFloat());
1523
- JSONTEST_ASSERT_THROWS(arrVal.asFloat());
1524
-
1525
- JSONTEST_ASSERT_THROWS(strVal.asBool());
1526
- JSONTEST_ASSERT_THROWS(objVal.asBool());
1527
- JSONTEST_ASSERT_THROWS(arrVal.asBool());
1528
-
1529
- #endif
1530
- }
1531
-
1532
- JSONTEST_FIXTURE(ValueTest, offsetAccessors) {
1533
- Json::Value x;
1534
- JSONTEST_ASSERT(x.getOffsetStart() == 0);
1535
- JSONTEST_ASSERT(x.getOffsetLimit() == 0);
1536
- x.setOffsetStart(10);
1537
- x.setOffsetLimit(20);
1538
- JSONTEST_ASSERT(x.getOffsetStart() == 10);
1539
- JSONTEST_ASSERT(x.getOffsetLimit() == 20);
1540
- Json::Value y(x);
1541
- JSONTEST_ASSERT(y.getOffsetStart() == 10);
1542
- JSONTEST_ASSERT(y.getOffsetLimit() == 20);
1543
- Json::Value z;
1544
- z.swap(y);
1545
- JSONTEST_ASSERT(z.getOffsetStart() == 10);
1546
- JSONTEST_ASSERT(z.getOffsetLimit() == 20);
1547
- JSONTEST_ASSERT(y.getOffsetStart() == 0);
1548
- JSONTEST_ASSERT(y.getOffsetLimit() == 0);
1549
- }
1550
-
1551
- JSONTEST_FIXTURE(ValueTest, StaticString) {
1552
- char mutant[] = "hello";
1553
- Json::StaticString ss(mutant);
1554
- JSONCPP_STRING regular(mutant);
1555
- mutant[1] = 'a';
1556
- JSONTEST_ASSERT_STRING_EQUAL("hallo", ss.c_str());
1557
- JSONTEST_ASSERT_STRING_EQUAL("hello", regular.c_str());
1558
- {
1559
- Json::Value root;
1560
- root["top"] = ss;
1561
- JSONTEST_ASSERT_STRING_EQUAL("hallo", root["top"].asString());
1562
- mutant[1] = 'u';
1563
- JSONTEST_ASSERT_STRING_EQUAL("hullo", root["top"].asString());
1564
- }
1565
- {
1566
- Json::Value root;
1567
- root["top"] = regular;
1568
- JSONTEST_ASSERT_STRING_EQUAL("hello", root["top"].asString());
1569
- mutant[1] = 'u';
1570
- JSONTEST_ASSERT_STRING_EQUAL("hello", root["top"].asString());
1571
- }
1572
- }
1573
-
1574
- JSONTEST_FIXTURE(ValueTest, CommentBefore) {
1575
- Json::Value val; // fill val
1576
- val.setComment(JSONCPP_STRING("// this comment should appear before"), Json::commentBefore);
1577
- Json::StreamWriterBuilder wbuilder;
1578
- wbuilder.settings_["commentStyle"] = "All";
1579
- {
1580
- char const expected[] = "// this comment should appear before\nnull";
1581
- JSONCPP_STRING result = Json::writeString(wbuilder, val);
1582
- JSONTEST_ASSERT_STRING_EQUAL(expected, result);
1583
- JSONCPP_STRING res2 = val.toStyledString();
1584
- JSONCPP_STRING exp2 = "\n";
1585
- exp2 += expected;
1586
- exp2 += "\n";
1587
- JSONTEST_ASSERT_STRING_EQUAL(exp2, res2);
1588
- }
1589
- Json::Value other = "hello";
1590
- val.swapPayload(other);
1591
- {
1592
- char const expected[] = "// this comment should appear before\n\"hello\"";
1593
- JSONCPP_STRING result = Json::writeString(wbuilder, val);
1594
- JSONTEST_ASSERT_STRING_EQUAL(expected, result);
1595
- JSONCPP_STRING res2 = val.toStyledString();
1596
- JSONCPP_STRING exp2 = "\n";
1597
- exp2 += expected;
1598
- exp2 += "\n";
1599
- JSONTEST_ASSERT_STRING_EQUAL(exp2, res2);
1600
- JSONTEST_ASSERT_STRING_EQUAL("null\n", other.toStyledString());
1601
- }
1602
- val = "hello";
1603
- // val.setComment("// this comment should appear before", Json::CommentPlacement::commentBefore);
1604
- // Assignment over-writes comments.
1605
- {
1606
- char const expected[] = "\"hello\"";
1607
- JSONCPP_STRING result = Json::writeString(wbuilder, val);
1608
- JSONTEST_ASSERT_STRING_EQUAL(expected, result);
1609
- JSONCPP_STRING res2 = val.toStyledString();
1610
- JSONCPP_STRING exp2 = "";
1611
- exp2 += expected;
1612
- exp2 += "\n";
1613
- JSONTEST_ASSERT_STRING_EQUAL(exp2, res2);
1614
- }
1615
- }
1616
-
1617
- JSONTEST_FIXTURE(ValueTest, zeroes) {
1618
- char const cstr[] = "h\0i";
1619
- JSONCPP_STRING binary(cstr, sizeof(cstr)); // include trailing 0
1620
- JSONTEST_ASSERT_EQUAL(4U, binary.length());
1621
- Json::StreamWriterBuilder b;
1622
- {
1623
- Json::Value root;
1624
- root = binary;
1625
- JSONTEST_ASSERT_STRING_EQUAL(binary, root.asString());
1626
- }
1627
- {
1628
- char const top[] = "top";
1629
- Json::Value root;
1630
- root[top] = binary;
1631
- JSONTEST_ASSERT_STRING_EQUAL(binary, root[top].asString());
1632
- Json::Value removed;
1633
- bool did;
1634
- did = root.removeMember(top, top + sizeof(top) - 1U,
1635
- &removed);
1636
- JSONTEST_ASSERT(did);
1637
- JSONTEST_ASSERT_STRING_EQUAL(binary, removed.asString());
1638
- did = root.removeMember(top, top + sizeof(top) - 1U,
1639
- &removed);
1640
- JSONTEST_ASSERT(!did);
1641
- JSONTEST_ASSERT_STRING_EQUAL(binary, removed.asString()); // still
1642
- }
1643
- }
1644
-
1645
- JSONTEST_FIXTURE(ValueTest, zeroesInKeys) {
1646
- char const cstr[] = "h\0i";
1647
- JSONCPP_STRING binary(cstr, sizeof(cstr)); // include trailing 0
1648
- JSONTEST_ASSERT_EQUAL(4U, binary.length());
1649
- {
1650
- Json::Value root;
1651
- root[binary] = "there";
1652
- JSONTEST_ASSERT_STRING_EQUAL("there", root[binary].asString());
1653
- JSONTEST_ASSERT(!root.isMember("h"));
1654
- JSONTEST_ASSERT(root.isMember(binary));
1655
- JSONTEST_ASSERT_STRING_EQUAL("there", root.get(binary, Json::Value::nullRef).asString());
1656
- Json::Value removed;
1657
- bool did;
1658
- did = root.removeMember(binary.data(), binary.data() + binary.length(),
1659
- &removed);
1660
- JSONTEST_ASSERT(did);
1661
- JSONTEST_ASSERT_STRING_EQUAL("there", removed.asString());
1662
- did = root.removeMember(binary.data(), binary.data() + binary.length(),
1663
- &removed);
1664
- JSONTEST_ASSERT(!did);
1665
- JSONTEST_ASSERT_STRING_EQUAL("there", removed.asString()); // still
1666
- JSONTEST_ASSERT(!root.isMember(binary));
1667
- JSONTEST_ASSERT_STRING_EQUAL("", root.get(binary, Json::Value::nullRef).asString());
1668
- }
1669
- }
1670
-
1671
- JSONTEST_FIXTURE(ValueTest, specialFloats) {
1672
- Json::StreamWriterBuilder b;
1673
- b.settings_["useSpecialFloats"] = true;
1674
-
1675
- Json::Value v = std::numeric_limits<double>::quiet_NaN();
1676
- JSONCPP_STRING expected = "NaN";
1677
- JSONCPP_STRING result = Json::writeString(b, v);
1678
- JSONTEST_ASSERT_STRING_EQUAL(expected, result);
1679
-
1680
- v = std::numeric_limits<double>::infinity();
1681
- expected = "Infinity";
1682
- result = Json::writeString(b, v);
1683
- JSONTEST_ASSERT_STRING_EQUAL(expected, result);
1684
-
1685
- v = -std::numeric_limits<double>::infinity();
1686
- expected = "-Infinity";
1687
- result = Json::writeString(b, v);
1688
- JSONTEST_ASSERT_STRING_EQUAL(expected, result);
1689
- }
1690
-
1691
- JSONTEST_FIXTURE(ValueTest, precision) {
1692
- Json::StreamWriterBuilder b;
1693
- b.settings_["precision"] = 5;
1694
-
1695
- Json::Value v = 100.0/3;
1696
- JSONCPP_STRING expected = "33.333";
1697
- JSONCPP_STRING result = Json::writeString(b, v);
1698
- JSONTEST_ASSERT_STRING_EQUAL(expected, result);
1699
-
1700
- v = 0.25000000;
1701
- expected = "0.25";
1702
- result = Json::writeString(b, v);
1703
- JSONTEST_ASSERT_STRING_EQUAL(expected, result);
1704
-
1705
- v = 0.2563456;
1706
- expected = "0.25635";
1707
- result = Json::writeString(b, v);
1708
- JSONTEST_ASSERT_STRING_EQUAL(expected, result);
1709
-
1710
- b.settings_["precision"] = 1;
1711
- expected = "0.3";
1712
- result = Json::writeString(b, v);
1713
- JSONTEST_ASSERT_STRING_EQUAL(expected, result);
1714
-
1715
- b.settings_["precision"] = 17;
1716
- v = 1234857476305.256345694873740545068;
1717
- expected = "1234857476305.2563";
1718
- result = Json::writeString(b, v);
1719
- JSONTEST_ASSERT_STRING_EQUAL(expected, result);
1720
-
1721
- b.settings_["precision"] = 24;
1722
- v = 0.256345694873740545068;
1723
- expected = "0.25634569487374054";
1724
- result = Json::writeString(b, v);
1725
- JSONTEST_ASSERT_STRING_EQUAL(expected, result);
1726
- }
1727
-
1728
- struct WriterTest : JsonTest::TestCase {};
1729
-
1730
- JSONTEST_FIXTURE(WriterTest, dropNullPlaceholders) {
1731
- Json::FastWriter writer;
1732
- Json::Value nullValue;
1733
- JSONTEST_ASSERT(writer.write(nullValue) == "null\n");
1734
-
1735
- writer.dropNullPlaceholders();
1736
- JSONTEST_ASSERT(writer.write(nullValue) == "\n");
1737
- }
1738
-
1739
- struct StreamWriterTest : JsonTest::TestCase {};
1740
-
1741
- JSONTEST_FIXTURE(StreamWriterTest, dropNullPlaceholders) {
1742
- Json::StreamWriterBuilder b;
1743
- Json::Value nullValue;
1744
- b.settings_["dropNullPlaceholders"] = false;
1745
- JSONTEST_ASSERT(Json::writeString(b, nullValue) == "null");
1746
- b.settings_["dropNullPlaceholders"] = true;
1747
- JSONTEST_ASSERT(Json::writeString(b, nullValue) == "");
1748
- }
1749
-
1750
- JSONTEST_FIXTURE(StreamWriterTest, writeZeroes) {
1751
- JSONCPP_STRING binary("hi", 3); // include trailing 0
1752
- JSONTEST_ASSERT_EQUAL(3, binary.length());
1753
- JSONCPP_STRING expected("\"hi\\u0000\""); // unicoded zero
1754
- Json::StreamWriterBuilder b;
1755
- {
1756
- Json::Value root;
1757
- root = binary;
1758
- JSONTEST_ASSERT_STRING_EQUAL(binary, root.asString());
1759
- JSONCPP_STRING out = Json::writeString(b, root);
1760
- JSONTEST_ASSERT_EQUAL(expected.size(), out.size());
1761
- JSONTEST_ASSERT_STRING_EQUAL(expected, out);
1762
- }
1763
- {
1764
- Json::Value root;
1765
- root["top"] = binary;
1766
- JSONTEST_ASSERT_STRING_EQUAL(binary, root["top"].asString());
1767
- JSONCPP_STRING out = Json::writeString(b, root["top"]);
1768
- JSONTEST_ASSERT_STRING_EQUAL(expected, out);
1769
- }
1770
- }
1771
-
1772
- struct ReaderTest : JsonTest::TestCase {};
1773
-
1774
- JSONTEST_FIXTURE(ReaderTest, parseWithNoErrors) {
1775
- Json::Reader reader;
1776
- Json::Value root;
1777
- bool ok = reader.parse("{ \"property\" : \"value\" }", root);
1778
- JSONTEST_ASSERT(ok);
1779
- JSONTEST_ASSERT(reader.getFormattedErrorMessages().size() == 0);
1780
- JSONTEST_ASSERT(reader.getStructuredErrors().size() == 0);
1781
- }
1782
-
1783
- JSONTEST_FIXTURE(ReaderTest, parseWithNoErrorsTestingOffsets) {
1784
- Json::Reader reader;
1785
- Json::Value root;
1786
- bool ok = reader.parse("{ \"property\" : [\"value\", \"value2\"], \"obj\" : "
1787
- "{ \"nested\" : 123, \"bool\" : true}, \"null\" : "
1788
- "null, \"false\" : false }",
1789
- root);
1790
- JSONTEST_ASSERT(ok);
1791
- JSONTEST_ASSERT(reader.getFormattedErrorMessages().size() == 0);
1792
- JSONTEST_ASSERT(reader.getStructuredErrors().size() == 0);
1793
- JSONTEST_ASSERT(root["property"].getOffsetStart() == 15);
1794
- JSONTEST_ASSERT(root["property"].getOffsetLimit() == 34);
1795
- JSONTEST_ASSERT(root["property"][0].getOffsetStart() == 16);
1796
- JSONTEST_ASSERT(root["property"][0].getOffsetLimit() == 23);
1797
- JSONTEST_ASSERT(root["property"][1].getOffsetStart() == 25);
1798
- JSONTEST_ASSERT(root["property"][1].getOffsetLimit() == 33);
1799
- JSONTEST_ASSERT(root["obj"].getOffsetStart() == 44);
1800
- JSONTEST_ASSERT(root["obj"].getOffsetLimit() == 76);
1801
- JSONTEST_ASSERT(root["obj"]["nested"].getOffsetStart() == 57);
1802
- JSONTEST_ASSERT(root["obj"]["nested"].getOffsetLimit() == 60);
1803
- JSONTEST_ASSERT(root["obj"]["bool"].getOffsetStart() == 71);
1804
- JSONTEST_ASSERT(root["obj"]["bool"].getOffsetLimit() == 75);
1805
- JSONTEST_ASSERT(root["null"].getOffsetStart() == 87);
1806
- JSONTEST_ASSERT(root["null"].getOffsetLimit() == 91);
1807
- JSONTEST_ASSERT(root["false"].getOffsetStart() == 103);
1808
- JSONTEST_ASSERT(root["false"].getOffsetLimit() == 108);
1809
- JSONTEST_ASSERT(root.getOffsetStart() == 0);
1810
- JSONTEST_ASSERT(root.getOffsetLimit() == 110);
1811
- }
1812
-
1813
- JSONTEST_FIXTURE(ReaderTest, parseWithOneError) {
1814
- Json::Reader reader;
1815
- Json::Value root;
1816
- bool ok = reader.parse("{ \"property\" :: \"value\" }", root);
1817
- JSONTEST_ASSERT(!ok);
1818
- JSONTEST_ASSERT(reader.getFormattedErrorMessages() ==
1819
- "* Line 1, Column 15\n Syntax error: value, object or array "
1820
- "expected.\n");
1821
- std::vector<Json::Reader::StructuredError> errors =
1822
- reader.getStructuredErrors();
1823
- JSONTEST_ASSERT(errors.size() == 1);
1824
- JSONTEST_ASSERT(errors.at(0).offset_start == 14);
1825
- JSONTEST_ASSERT(errors.at(0).offset_limit == 15);
1826
- JSONTEST_ASSERT(errors.at(0).message ==
1827
- "Syntax error: value, object or array expected.");
1828
- }
1829
-
1830
- JSONTEST_FIXTURE(ReaderTest, parseChineseWithOneError) {
1831
- Json::Reader reader;
1832
- Json::Value root;
1833
- bool ok = reader.parse("{ \"pr佐藤erty\" :: \"value\" }", root);
1834
- JSONTEST_ASSERT(!ok);
1835
- JSONTEST_ASSERT(reader.getFormattedErrorMessages() ==
1836
- "* Line 1, Column 19\n Syntax error: value, object or array "
1837
- "expected.\n");
1838
- std::vector<Json::Reader::StructuredError> errors =
1839
- reader.getStructuredErrors();
1840
- JSONTEST_ASSERT(errors.size() == 1);
1841
- JSONTEST_ASSERT(errors.at(0).offset_start == 18);
1842
- JSONTEST_ASSERT(errors.at(0).offset_limit == 19);
1843
- JSONTEST_ASSERT(errors.at(0).message ==
1844
- "Syntax error: value, object or array expected.");
1845
- }
1846
-
1847
- JSONTEST_FIXTURE(ReaderTest, parseWithDetailError) {
1848
- Json::Reader reader;
1849
- Json::Value root;
1850
- bool ok = reader.parse("{ \"property\" : \"v\\alue\" }", root);
1851
- JSONTEST_ASSERT(!ok);
1852
- JSONTEST_ASSERT(reader.getFormattedErrorMessages() ==
1853
- "* Line 1, Column 16\n Bad escape sequence in string\nSee "
1854
- "Line 1, Column 20 for detail.\n");
1855
- std::vector<Json::Reader::StructuredError> errors =
1856
- reader.getStructuredErrors();
1857
- JSONTEST_ASSERT(errors.size() == 1);
1858
- JSONTEST_ASSERT(errors.at(0).offset_start == 15);
1859
- JSONTEST_ASSERT(errors.at(0).offset_limit == 23);
1860
- JSONTEST_ASSERT(errors.at(0).message == "Bad escape sequence in string");
1861
- }
1862
-
1863
- struct CharReaderTest : JsonTest::TestCase {};
1864
-
1865
- JSONTEST_FIXTURE(CharReaderTest, parseWithNoErrors) {
1866
- Json::CharReaderBuilder b;
1867
- Json::CharReader* reader(b.newCharReader());
1868
- JSONCPP_STRING errs;
1869
- Json::Value root;
1870
- char const doc[] = "{ \"property\" : \"value\" }";
1871
- bool ok = reader->parse(
1872
- doc, doc + std::strlen(doc),
1873
- &root, &errs);
1874
- JSONTEST_ASSERT(ok);
1875
- JSONTEST_ASSERT(errs.size() == 0);
1876
- delete reader;
1877
- }
1878
-
1879
- JSONTEST_FIXTURE(CharReaderTest, parseWithNoErrorsTestingOffsets) {
1880
- Json::CharReaderBuilder b;
1881
- Json::CharReader* reader(b.newCharReader());
1882
- JSONCPP_STRING errs;
1883
- Json::Value root;
1884
- char const doc[] =
1885
- "{ \"property\" : [\"value\", \"value2\"], \"obj\" : "
1886
- "{ \"nested\" : 123, \"bool\" : true}, \"null\" : "
1887
- "null, \"false\" : false }";
1888
- bool ok = reader->parse(
1889
- doc, doc + std::strlen(doc),
1890
- &root, &errs);
1891
- JSONTEST_ASSERT(ok);
1892
- JSONTEST_ASSERT(errs.size() == 0);
1893
- delete reader;
1894
- }
1895
-
1896
- JSONTEST_FIXTURE(CharReaderTest, parseWithOneError) {
1897
- Json::CharReaderBuilder b;
1898
- Json::CharReader* reader(b.newCharReader());
1899
- JSONCPP_STRING errs;
1900
- Json::Value root;
1901
- char const doc[] =
1902
- "{ \"property\" :: \"value\" }";
1903
- bool ok = reader->parse(
1904
- doc, doc + std::strlen(doc),
1905
- &root, &errs);
1906
- JSONTEST_ASSERT(!ok);
1907
- JSONTEST_ASSERT(errs ==
1908
- "* Line 1, Column 15\n Syntax error: value, object or array "
1909
- "expected.\n");
1910
- delete reader;
1911
- }
1912
-
1913
- JSONTEST_FIXTURE(CharReaderTest, parseChineseWithOneError) {
1914
- Json::CharReaderBuilder b;
1915
- Json::CharReader* reader(b.newCharReader());
1916
- JSONCPP_STRING errs;
1917
- Json::Value root;
1918
- char const doc[] =
1919
- "{ \"pr佐藤erty\" :: \"value\" }";
1920
- bool ok = reader->parse(
1921
- doc, doc + std::strlen(doc),
1922
- &root, &errs);
1923
- JSONTEST_ASSERT(!ok);
1924
- JSONTEST_ASSERT(errs ==
1925
- "* Line 1, Column 19\n Syntax error: value, object or array "
1926
- "expected.\n");
1927
- delete reader;
1928
- }
1929
-
1930
- JSONTEST_FIXTURE(CharReaderTest, parseWithDetailError) {
1931
- Json::CharReaderBuilder b;
1932
- Json::CharReader* reader(b.newCharReader());
1933
- JSONCPP_STRING errs;
1934
- Json::Value root;
1935
- char const doc[] =
1936
- "{ \"property\" : \"v\\alue\" }";
1937
- bool ok = reader->parse(
1938
- doc, doc + std::strlen(doc),
1939
- &root, &errs);
1940
- JSONTEST_ASSERT(!ok);
1941
- JSONTEST_ASSERT(errs ==
1942
- "* Line 1, Column 16\n Bad escape sequence in string\nSee "
1943
- "Line 1, Column 20 for detail.\n");
1944
- delete reader;
1945
- }
1946
-
1947
- JSONTEST_FIXTURE(CharReaderTest, parseWithStackLimit) {
1948
- Json::CharReaderBuilder b;
1949
- Json::Value root;
1950
- char const doc[] =
1951
- "{ \"property\" : \"value\" }";
1952
- {
1953
- b.settings_["stackLimit"] = 2;
1954
- Json::CharReader* reader(b.newCharReader());
1955
- JSONCPP_STRING errs;
1956
- bool ok = reader->parse(
1957
- doc, doc + std::strlen(doc),
1958
- &root, &errs);
1959
- JSONTEST_ASSERT(ok);
1960
- JSONTEST_ASSERT(errs == "");
1961
- JSONTEST_ASSERT_EQUAL("value", root["property"]);
1962
- delete reader;
1963
- }
1964
- {
1965
- b.settings_["stackLimit"] = 1;
1966
- Json::CharReader* reader(b.newCharReader());
1967
- JSONCPP_STRING errs;
1968
- JSONTEST_ASSERT_THROWS(reader->parse(
1969
- doc, doc + std::strlen(doc),
1970
- &root, &errs));
1971
- delete reader;
1972
- }
1973
- }
1974
-
1975
- struct CharReaderStrictModeTest : JsonTest::TestCase {};
1976
-
1977
- JSONTEST_FIXTURE(CharReaderStrictModeTest, dupKeys) {
1978
- Json::CharReaderBuilder b;
1979
- Json::Value root;
1980
- char const doc[] =
1981
- "{ \"property\" : \"value\", \"key\" : \"val1\", \"key\" : \"val2\" }";
1982
- {
1983
- b.strictMode(&b.settings_);
1984
- Json::CharReader* reader(b.newCharReader());
1985
- JSONCPP_STRING errs;
1986
- bool ok = reader->parse(
1987
- doc, doc + std::strlen(doc),
1988
- &root, &errs);
1989
- JSONTEST_ASSERT(!ok);
1990
- JSONTEST_ASSERT_STRING_EQUAL(
1991
- "* Line 1, Column 41\n"
1992
- " Duplicate key: 'key'\n",
1993
- errs);
1994
- JSONTEST_ASSERT_EQUAL("val1", root["key"]); // so far
1995
- delete reader;
1996
- }
1997
- }
1998
- struct CharReaderFailIfExtraTest : JsonTest::TestCase {};
1999
-
2000
- JSONTEST_FIXTURE(CharReaderFailIfExtraTest, issue164) {
2001
- // This is interpreted as a string value followed by a colon.
2002
- Json::CharReaderBuilder b;
2003
- Json::Value root;
2004
- char const doc[] =
2005
- " \"property\" : \"value\" }";
2006
- {
2007
- b.settings_["failIfExtra"] = false;
2008
- Json::CharReader* reader(b.newCharReader());
2009
- JSONCPP_STRING errs;
2010
- bool ok = reader->parse(
2011
- doc, doc + std::strlen(doc),
2012
- &root, &errs);
2013
- JSONTEST_ASSERT(ok);
2014
- JSONTEST_ASSERT(errs == "");
2015
- JSONTEST_ASSERT_EQUAL("property", root);
2016
- delete reader;
2017
- }
2018
- {
2019
- b.settings_["failIfExtra"] = true;
2020
- Json::CharReader* reader(b.newCharReader());
2021
- JSONCPP_STRING errs;
2022
- bool ok = reader->parse(
2023
- doc, doc + std::strlen(doc),
2024
- &root, &errs);
2025
- JSONTEST_ASSERT(!ok);
2026
- JSONTEST_ASSERT_STRING_EQUAL(errs,
2027
- "* Line 1, Column 13\n"
2028
- " Extra non-whitespace after JSON value.\n");
2029
- JSONTEST_ASSERT_EQUAL("property", root);
2030
- delete reader;
2031
- }
2032
- {
2033
- b.settings_["failIfExtra"] = false;
2034
- b.strictMode(&b.settings_);
2035
- Json::CharReader* reader(b.newCharReader());
2036
- JSONCPP_STRING errs;
2037
- bool ok = reader->parse(
2038
- doc, doc + std::strlen(doc),
2039
- &root, &errs);
2040
- JSONTEST_ASSERT(!ok);
2041
- JSONTEST_ASSERT_STRING_EQUAL(errs,
2042
- "* Line 1, Column 13\n"
2043
- " Extra non-whitespace after JSON value.\n");
2044
- JSONTEST_ASSERT_EQUAL("property", root);
2045
- delete reader;
2046
- }
2047
- }
2048
- JSONTEST_FIXTURE(CharReaderFailIfExtraTest, issue107) {
2049
- // This is interpreted as an int value followed by a colon.
2050
- Json::CharReaderBuilder b;
2051
- Json::Value root;
2052
- char const doc[] =
2053
- "1:2:3";
2054
- b.settings_["failIfExtra"] = true;
2055
- Json::CharReader* reader(b.newCharReader());
2056
- JSONCPP_STRING errs;
2057
- bool ok = reader->parse(
2058
- doc, doc + std::strlen(doc),
2059
- &root, &errs);
2060
- JSONTEST_ASSERT(!ok);
2061
- JSONTEST_ASSERT_STRING_EQUAL(
2062
- "* Line 1, Column 2\n"
2063
- " Extra non-whitespace after JSON value.\n",
2064
- errs);
2065
- JSONTEST_ASSERT_EQUAL(1, root.asInt());
2066
- delete reader;
2067
- }
2068
- JSONTEST_FIXTURE(CharReaderFailIfExtraTest, commentAfterObject) {
2069
- Json::CharReaderBuilder b;
2070
- Json::Value root;
2071
- {
2072
- char const doc[] =
2073
- "{ \"property\" : \"value\" } //trailing\n//comment\n";
2074
- b.settings_["failIfExtra"] = true;
2075
- Json::CharReader* reader(b.newCharReader());
2076
- JSONCPP_STRING errs;
2077
- bool ok = reader->parse(
2078
- doc, doc + std::strlen(doc),
2079
- &root, &errs);
2080
- JSONTEST_ASSERT(ok);
2081
- JSONTEST_ASSERT_STRING_EQUAL("", errs);
2082
- JSONTEST_ASSERT_EQUAL("value", root["property"]);
2083
- delete reader;
2084
- }
2085
- }
2086
- JSONTEST_FIXTURE(CharReaderFailIfExtraTest, commentAfterArray) {
2087
- Json::CharReaderBuilder b;
2088
- Json::Value root;
2089
- char const doc[] =
2090
- "[ \"property\" , \"value\" ] //trailing\n//comment\n";
2091
- b.settings_["failIfExtra"] = true;
2092
- Json::CharReader* reader(b.newCharReader());
2093
- JSONCPP_STRING errs;
2094
- bool ok = reader->parse(
2095
- doc, doc + std::strlen(doc),
2096
- &root, &errs);
2097
- JSONTEST_ASSERT(ok);
2098
- JSONTEST_ASSERT_STRING_EQUAL("", errs);
2099
- JSONTEST_ASSERT_EQUAL("value", root[1u]);
2100
- delete reader;
2101
- }
2102
- JSONTEST_FIXTURE(CharReaderFailIfExtraTest, commentAfterBool) {
2103
- Json::CharReaderBuilder b;
2104
- Json::Value root;
2105
- char const doc[] =
2106
- " true /*trailing\ncomment*/";
2107
- b.settings_["failIfExtra"] = true;
2108
- Json::CharReader* reader(b.newCharReader());
2109
- JSONCPP_STRING errs;
2110
- bool ok = reader->parse(
2111
- doc, doc + std::strlen(doc),
2112
- &root, &errs);
2113
- JSONTEST_ASSERT(ok);
2114
- JSONTEST_ASSERT_STRING_EQUAL("", errs);
2115
- JSONTEST_ASSERT_EQUAL(true, root.asBool());
2116
- delete reader;
2117
- }
2118
- struct CharReaderAllowDropNullTest : JsonTest::TestCase {};
2119
-
2120
- JSONTEST_FIXTURE(CharReaderAllowDropNullTest, issue178) {
2121
- Json::CharReaderBuilder b;
2122
- b.settings_["allowDroppedNullPlaceholders"] = true;
2123
- Json::Value root;
2124
- JSONCPP_STRING errs;
2125
- Json::CharReader* reader(b.newCharReader());
2126
- {
2127
- char const doc[] = "{\"a\":,\"b\":true}";
2128
- bool ok = reader->parse(
2129
- doc, doc + std::strlen(doc),
2130
- &root, &errs);
2131
- JSONTEST_ASSERT(ok);
2132
- JSONTEST_ASSERT_STRING_EQUAL("", errs);
2133
- JSONTEST_ASSERT_EQUAL(2u, root.size());
2134
- JSONTEST_ASSERT_EQUAL(Json::nullValue, root.get("a", true));
2135
- }
2136
- {
2137
- char const doc[] = "{\"a\":}";
2138
- bool ok = reader->parse(
2139
- doc, doc + std::strlen(doc),
2140
- &root, &errs);
2141
- JSONTEST_ASSERT(ok);
2142
- JSONTEST_ASSERT_STRING_EQUAL("", errs);
2143
- JSONTEST_ASSERT_EQUAL(1u, root.size());
2144
- JSONTEST_ASSERT_EQUAL(Json::nullValue, root.get("a", true));
2145
- }
2146
- {
2147
- char const doc[] = "[]";
2148
- bool ok = reader->parse(
2149
- doc, doc + std::strlen(doc),
2150
- &root, &errs);
2151
- JSONTEST_ASSERT(ok);
2152
- JSONTEST_ASSERT(errs == "");
2153
- JSONTEST_ASSERT_EQUAL(0u, root.size());
2154
- JSONTEST_ASSERT_EQUAL(Json::arrayValue, root);
2155
- }
2156
- {
2157
- char const doc[] = "[null]";
2158
- bool ok = reader->parse(
2159
- doc, doc + std::strlen(doc),
2160
- &root, &errs);
2161
- JSONTEST_ASSERT(ok);
2162
- JSONTEST_ASSERT(errs == "");
2163
- JSONTEST_ASSERT_EQUAL(1u, root.size());
2164
- }
2165
- {
2166
- char const doc[] = "[,]";
2167
- bool ok = reader->parse(
2168
- doc, doc + std::strlen(doc),
2169
- &root, &errs);
2170
- JSONTEST_ASSERT(ok);
2171
- JSONTEST_ASSERT_STRING_EQUAL("", errs);
2172
- JSONTEST_ASSERT_EQUAL(2u, root.size());
2173
- }
2174
- {
2175
- char const doc[] = "[,,,]";
2176
- bool ok = reader->parse(
2177
- doc, doc + std::strlen(doc),
2178
- &root, &errs);
2179
- JSONTEST_ASSERT(ok);
2180
- JSONTEST_ASSERT_STRING_EQUAL("", errs);
2181
- JSONTEST_ASSERT_EQUAL(4u, root.size());
2182
- }
2183
- {
2184
- char const doc[] = "[null,]";
2185
- bool ok = reader->parse(
2186
- doc, doc + std::strlen(doc),
2187
- &root, &errs);
2188
- JSONTEST_ASSERT(ok);
2189
- JSONTEST_ASSERT_STRING_EQUAL("", errs);
2190
- JSONTEST_ASSERT_EQUAL(2u, root.size());
2191
- }
2192
- {
2193
- char const doc[] = "[,null]";
2194
- bool ok = reader->parse(
2195
- doc, doc + std::strlen(doc),
2196
- &root, &errs);
2197
- JSONTEST_ASSERT(ok);
2198
- JSONTEST_ASSERT(errs == "");
2199
- JSONTEST_ASSERT_EQUAL(2u, root.size());
2200
- }
2201
- {
2202
- char const doc[] = "[,,]";
2203
- bool ok = reader->parse(
2204
- doc, doc + std::strlen(doc),
2205
- &root, &errs);
2206
- JSONTEST_ASSERT(ok);
2207
- JSONTEST_ASSERT_STRING_EQUAL("", errs);
2208
- JSONTEST_ASSERT_EQUAL(3u, root.size());
2209
- }
2210
- {
2211
- char const doc[] = "[null,,]";
2212
- bool ok = reader->parse(
2213
- doc, doc + std::strlen(doc),
2214
- &root, &errs);
2215
- JSONTEST_ASSERT(ok);
2216
- JSONTEST_ASSERT_STRING_EQUAL("", errs);
2217
- JSONTEST_ASSERT_EQUAL(3u, root.size());
2218
- }
2219
- {
2220
- char const doc[] = "[,null,]";
2221
- bool ok = reader->parse(
2222
- doc, doc + std::strlen(doc),
2223
- &root, &errs);
2224
- JSONTEST_ASSERT(ok);
2225
- JSONTEST_ASSERT_STRING_EQUAL("", errs);
2226
- JSONTEST_ASSERT_EQUAL(3u, root.size());
2227
- }
2228
- {
2229
- char const doc[] = "[,,null]";
2230
- bool ok = reader->parse(
2231
- doc, doc + std::strlen(doc),
2232
- &root, &errs);
2233
- JSONTEST_ASSERT(ok);
2234
- JSONTEST_ASSERT(errs == "");
2235
- JSONTEST_ASSERT_EQUAL(3u, root.size());
2236
- }
2237
- {
2238
- char const doc[] = "[[],,,]";
2239
- bool ok = reader->parse(
2240
- doc, doc + std::strlen(doc),
2241
- &root, &errs);
2242
- JSONTEST_ASSERT(ok);
2243
- JSONTEST_ASSERT_STRING_EQUAL("", errs);
2244
- JSONTEST_ASSERT_EQUAL(4u, root.size());
2245
- JSONTEST_ASSERT_EQUAL(Json::arrayValue, root[0u]);
2246
- }
2247
- {
2248
- char const doc[] = "[,[],,]";
2249
- bool ok = reader->parse(
2250
- doc, doc + std::strlen(doc),
2251
- &root, &errs);
2252
- JSONTEST_ASSERT(ok);
2253
- JSONTEST_ASSERT_STRING_EQUAL("", errs);
2254
- JSONTEST_ASSERT_EQUAL(4u, root.size());
2255
- JSONTEST_ASSERT_EQUAL(Json::arrayValue, root[1u]);
2256
- }
2257
- {
2258
- char const doc[] = "[,,,[]]";
2259
- bool ok = reader->parse(
2260
- doc, doc + std::strlen(doc),
2261
- &root, &errs);
2262
- JSONTEST_ASSERT(ok);
2263
- JSONTEST_ASSERT(errs == "");
2264
- JSONTEST_ASSERT_EQUAL(4u, root.size());
2265
- JSONTEST_ASSERT_EQUAL(Json::arrayValue, root[3u]);
2266
- }
2267
- delete reader;
2268
- }
2269
-
2270
- struct CharReaderAllowSingleQuotesTest : JsonTest::TestCase {};
2271
-
2272
- JSONTEST_FIXTURE(CharReaderAllowSingleQuotesTest, issue182) {
2273
- Json::CharReaderBuilder b;
2274
- b.settings_["allowSingleQuotes"] = true;
2275
- Json::Value root;
2276
- JSONCPP_STRING errs;
2277
- Json::CharReader* reader(b.newCharReader());
2278
- {
2279
- char const doc[] = "{'a':true,\"b\":true}";
2280
- bool ok = reader->parse(
2281
- doc, doc + std::strlen(doc),
2282
- &root, &errs);
2283
- JSONTEST_ASSERT(ok);
2284
- JSONTEST_ASSERT_STRING_EQUAL("", errs);
2285
- JSONTEST_ASSERT_EQUAL(2u, root.size());
2286
- JSONTEST_ASSERT_EQUAL(true, root.get("a", false));
2287
- JSONTEST_ASSERT_EQUAL(true, root.get("b", false));
2288
- }
2289
- {
2290
- char const doc[] = "{'a': 'x', \"b\":'y'}";
2291
- bool ok = reader->parse(
2292
- doc, doc + std::strlen(doc),
2293
- &root, &errs);
2294
- JSONTEST_ASSERT(ok);
2295
- JSONTEST_ASSERT_STRING_EQUAL("", errs);
2296
- JSONTEST_ASSERT_EQUAL(2u, root.size());
2297
- JSONTEST_ASSERT_STRING_EQUAL("x", root["a"].asString());
2298
- JSONTEST_ASSERT_STRING_EQUAL("y", root["b"].asString());
2299
- }
2300
- delete reader;
2301
- }
2302
-
2303
- struct CharReaderAllowZeroesTest : JsonTest::TestCase {};
2304
-
2305
- JSONTEST_FIXTURE(CharReaderAllowZeroesTest, issue176) {
2306
- Json::CharReaderBuilder b;
2307
- b.settings_["allowSingleQuotes"] = true;
2308
- Json::Value root;
2309
- JSONCPP_STRING errs;
2310
- Json::CharReader* reader(b.newCharReader());
2311
- {
2312
- char const doc[] = "{'a':true,\"b\":true}";
2313
- bool ok = reader->parse(
2314
- doc, doc + std::strlen(doc),
2315
- &root, &errs);
2316
- JSONTEST_ASSERT(ok);
2317
- JSONTEST_ASSERT_STRING_EQUAL("", errs);
2318
- JSONTEST_ASSERT_EQUAL(2u, root.size());
2319
- JSONTEST_ASSERT_EQUAL(true, root.get("a", false));
2320
- JSONTEST_ASSERT_EQUAL(true, root.get("b", false));
2321
- }
2322
- {
2323
- char const doc[] = "{'a': 'x', \"b\":'y'}";
2324
- bool ok = reader->parse(
2325
- doc, doc + std::strlen(doc),
2326
- &root, &errs);
2327
- JSONTEST_ASSERT(ok);
2328
- JSONTEST_ASSERT_STRING_EQUAL("", errs);
2329
- JSONTEST_ASSERT_EQUAL(2u, root.size());
2330
- JSONTEST_ASSERT_STRING_EQUAL("x", root["a"].asString());
2331
- JSONTEST_ASSERT_STRING_EQUAL("y", root["b"].asString());
2332
- }
2333
- delete reader;
2334
- }
2335
-
2336
- struct CharReaderAllowSpecialFloatsTest : JsonTest::TestCase {};
2337
-
2338
- JSONTEST_FIXTURE(CharReaderAllowSpecialFloatsTest, issue209) {
2339
- Json::CharReaderBuilder b;
2340
- b.settings_["allowSpecialFloats"] = true;
2341
- Json::Value root;
2342
- JSONCPP_STRING errs;
2343
- Json::CharReader* reader(b.newCharReader());
2344
- {
2345
- char const doc[] = "{\"a\":NaN,\"b\":Infinity,\"c\":-Infinity}";
2346
- bool ok = reader->parse(
2347
- doc, doc + std::strlen(doc),
2348
- &root, &errs);
2349
- JSONTEST_ASSERT(ok);
2350
- JSONTEST_ASSERT_STRING_EQUAL("", errs);
2351
- JSONTEST_ASSERT_EQUAL(3u, root.size());
2352
- double n = root["a"].asDouble();
2353
- JSONTEST_ASSERT(n != n);
2354
- JSONTEST_ASSERT_EQUAL(std::numeric_limits<double>::infinity(), root.get("b", 0.0));
2355
- JSONTEST_ASSERT_EQUAL(-std::numeric_limits<double>::infinity(), root.get("c", 0.0));
2356
- }
2357
-
2358
- struct TestData {
2359
- int line;
2360
- bool ok;
2361
- JSONCPP_STRING in;
2362
- };
2363
- const TestData test_data[] = {
2364
- {__LINE__, 1, "{\"a\":9}"},
2365
- {__LINE__, 0, "{\"a\":0Infinity}"},
2366
- {__LINE__, 0, "{\"a\":1Infinity}"},
2367
- {__LINE__, 0, "{\"a\":9Infinity}"},
2368
- {__LINE__, 0, "{\"a\":0nfinity}"},
2369
- {__LINE__, 0, "{\"a\":1nfinity}"},
2370
- {__LINE__, 0, "{\"a\":9nfinity}"},
2371
- {__LINE__, 0, "{\"a\":nfinity}"},
2372
- {__LINE__, 0, "{\"a\":.nfinity}"},
2373
- {__LINE__, 0, "{\"a\":9nfinity}"},
2374
- {__LINE__, 0, "{\"a\":-nfinity}"},
2375
- {__LINE__, 1, "{\"a\":Infinity}"},
2376
- {__LINE__, 0, "{\"a\":.Infinity}"},
2377
- {__LINE__, 0, "{\"a\":_Infinity}"},
2378
- {__LINE__, 0, "{\"a\":_nfinity}"},
2379
- {__LINE__, 1, "{\"a\":-Infinity}"}
2380
- };
2381
- for (size_t tdi = 0; tdi < sizeof(test_data) / sizeof(*test_data); ++tdi) {
2382
- const TestData& td = test_data[tdi];
2383
- bool ok = reader->parse(&*td.in.begin(),
2384
- &*td.in.begin() + td.in.size(),
2385
- &root, &errs);
2386
- JSONTEST_ASSERT(td.ok == ok)
2387
- << "line:" << td.line << "\n"
2388
- << " expected: {"
2389
- << "ok:" << td.ok
2390
- << ", in:\'" << td.in << "\'"
2391
- << "}\n"
2392
- << " actual: {"
2393
- << "ok:" << ok
2394
- << "}\n";
2395
- }
2396
-
2397
- {
2398
- char const doc[] = "{\"posInf\": Infinity, \"NegInf\": -Infinity}";
2399
- bool ok = reader->parse(
2400
- doc, doc + std::strlen(doc),
2401
- &root, &errs);
2402
- JSONTEST_ASSERT(ok);
2403
- JSONTEST_ASSERT_STRING_EQUAL("", errs);
2404
- JSONTEST_ASSERT_EQUAL(2u, root.size());
2405
- JSONTEST_ASSERT_EQUAL(std::numeric_limits<double>::infinity(), root["posInf"].asDouble());
2406
- JSONTEST_ASSERT_EQUAL(-std::numeric_limits<double>::infinity(), root["NegInf"].asDouble());
2407
- }
2408
- delete reader;
2409
- }
2410
-
2411
- struct BuilderTest : JsonTest::TestCase {};
2412
-
2413
- JSONTEST_FIXTURE(BuilderTest, settings) {
2414
- {
2415
- Json::Value errs;
2416
- Json::CharReaderBuilder rb;
2417
- JSONTEST_ASSERT_EQUAL(false, rb.settings_.isMember("foo"));
2418
- JSONTEST_ASSERT_EQUAL(true, rb.validate(&errs));
2419
- rb["foo"] = "bar";
2420
- JSONTEST_ASSERT_EQUAL(true, rb.settings_.isMember("foo"));
2421
- JSONTEST_ASSERT_EQUAL(false, rb.validate(&errs));
2422
- }
2423
- {
2424
- Json::Value errs;
2425
- Json::StreamWriterBuilder wb;
2426
- JSONTEST_ASSERT_EQUAL(false, wb.settings_.isMember("foo"));
2427
- JSONTEST_ASSERT_EQUAL(true, wb.validate(&errs));
2428
- wb["foo"] = "bar";
2429
- JSONTEST_ASSERT_EQUAL(true, wb.settings_.isMember("foo"));
2430
- JSONTEST_ASSERT_EQUAL(false, wb.validate(&errs));
2431
- }
2432
- }
2433
-
2434
- struct IteratorTest : JsonTest::TestCase {};
2435
-
2436
- JSONTEST_FIXTURE(IteratorTest, distance) {
2437
- Json::Value json;
2438
- json["k1"] = "a";
2439
- json["k2"] = "b";
2440
- int dist = 0;
2441
- JSONCPP_STRING str;
2442
- for (Json::ValueIterator it = json.begin(); it != json.end(); ++it) {
2443
- dist = it - json.begin();
2444
- str = it->asString().c_str();
2445
- }
2446
- JSONTEST_ASSERT_EQUAL(1, dist);
2447
- JSONTEST_ASSERT_STRING_EQUAL("b", str);
2448
- }
2449
-
2450
- JSONTEST_FIXTURE(IteratorTest, names) {
2451
- Json::Value json;
2452
- json["k1"] = "a";
2453
- json["k2"] = "b";
2454
- Json::ValueIterator it = json.begin();
2455
- JSONTEST_ASSERT(it != json.end());
2456
- JSONTEST_ASSERT_EQUAL(Json::Value("k1"), it.key());
2457
- JSONTEST_ASSERT_STRING_EQUAL("k1", it.name());
2458
- JSONTEST_ASSERT_EQUAL(-1, it.index());
2459
- ++it;
2460
- JSONTEST_ASSERT(it != json.end());
2461
- JSONTEST_ASSERT_EQUAL(Json::Value("k2"), it.key());
2462
- JSONTEST_ASSERT_STRING_EQUAL("k2", it.name());
2463
- JSONTEST_ASSERT_EQUAL(-1, it.index());
2464
- ++it;
2465
- JSONTEST_ASSERT(it == json.end());
2466
- }
2467
-
2468
- JSONTEST_FIXTURE(IteratorTest, indexes) {
2469
- Json::Value json;
2470
- json[0] = "a";
2471
- json[1] = "b";
2472
- Json::ValueIterator it = json.begin();
2473
- JSONTEST_ASSERT(it != json.end());
2474
- JSONTEST_ASSERT_EQUAL(Json::Value(Json::ArrayIndex(0)), it.key());
2475
- JSONTEST_ASSERT_STRING_EQUAL("", it.name());
2476
- JSONTEST_ASSERT_EQUAL(0, it.index());
2477
- ++it;
2478
- JSONTEST_ASSERT(it != json.end());
2479
- JSONTEST_ASSERT_EQUAL(Json::Value(Json::ArrayIndex(1)), it.key());
2480
- JSONTEST_ASSERT_STRING_EQUAL("", it.name());
2481
- JSONTEST_ASSERT_EQUAL(1, it.index());
2482
- ++it;
2483
- JSONTEST_ASSERT(it == json.end());
2484
- }
2485
-
2486
- JSONTEST_FIXTURE(IteratorTest, const) {
2487
- Json::Value const v;
2488
- JSONTEST_ASSERT_THROWS(
2489
- Json::Value::iterator it(v.begin()) // Compile, but throw.
2490
- );
2491
-
2492
- Json::Value value;
2493
-
2494
- for(int i = 9; i < 12; ++i)
2495
- {
2496
- JSONCPP_OSTRINGSTREAM out;
2497
- out << std::setw(2) << i;
2498
- JSONCPP_STRING str = out.str();
2499
- value[str] = str;
2500
- }
2501
-
2502
- JSONCPP_OSTRINGSTREAM out;
2503
- //in old code, this will get a compile error
2504
- Json::Value::const_iterator iter = value.begin();
2505
- for(; iter != value.end(); ++iter)
2506
- {
2507
- out << *iter << ',';
2508
- }
2509
- JSONCPP_STRING expected = "\" 9\",\"10\",\"11\",";
2510
- JSONTEST_ASSERT_STRING_EQUAL(expected, out.str());
2511
- }
2512
-
2513
- struct RValueTest : JsonTest::TestCase {};
2514
-
2515
- JSONTEST_FIXTURE(RValueTest, moveConstruction) {
2516
- #if JSON_HAS_RVALUE_REFERENCES
2517
- Json::Value json;
2518
- json["key"] = "value";
2519
- Json::Value moved = std::move(json);
2520
- JSONTEST_ASSERT(moved != json); // Possibly not nullValue; definitely not equal.
2521
- JSONTEST_ASSERT_EQUAL(Json::objectValue, moved.type());
2522
- JSONTEST_ASSERT_EQUAL(Json::stringValue, moved["key"].type());
2523
- #endif
2524
- }
2525
-
2526
- int main(int argc, const char* argv[]) {
2527
- JsonTest::Runner runner;
2528
- JSONTEST_REGISTER_FIXTURE(runner, ValueTest, checkNormalizeFloatingPointStr);
2529
- JSONTEST_REGISTER_FIXTURE(runner, ValueTest, memberCount);
2530
- JSONTEST_REGISTER_FIXTURE(runner, ValueTest, objects);
2531
- JSONTEST_REGISTER_FIXTURE(runner, ValueTest, arrays);
2532
- JSONTEST_REGISTER_FIXTURE(runner, ValueTest, arrayIssue252);
2533
- JSONTEST_REGISTER_FIXTURE(runner, ValueTest, null);
2534
- JSONTEST_REGISTER_FIXTURE(runner, ValueTest, strings);
2535
- JSONTEST_REGISTER_FIXTURE(runner, ValueTest, bools);
2536
- JSONTEST_REGISTER_FIXTURE(runner, ValueTest, integers);
2537
- JSONTEST_REGISTER_FIXTURE(runner, ValueTest, nonIntegers);
2538
- JSONTEST_REGISTER_FIXTURE(runner, ValueTest, compareNull);
2539
- JSONTEST_REGISTER_FIXTURE(runner, ValueTest, compareInt);
2540
- JSONTEST_REGISTER_FIXTURE(runner, ValueTest, compareUInt);
2541
- JSONTEST_REGISTER_FIXTURE(runner, ValueTest, compareDouble);
2542
- JSONTEST_REGISTER_FIXTURE(runner, ValueTest, compareString);
2543
- JSONTEST_REGISTER_FIXTURE(runner, ValueTest, compareBoolean);
2544
- JSONTEST_REGISTER_FIXTURE(runner, ValueTest, compareArray);
2545
- JSONTEST_REGISTER_FIXTURE(runner, ValueTest, compareObject);
2546
- JSONTEST_REGISTER_FIXTURE(runner, ValueTest, compareType);
2547
- JSONTEST_REGISTER_FIXTURE(runner, ValueTest, offsetAccessors);
2548
- JSONTEST_REGISTER_FIXTURE(runner, ValueTest, typeChecksThrowExceptions);
2549
- JSONTEST_REGISTER_FIXTURE(runner, ValueTest, StaticString);
2550
- JSONTEST_REGISTER_FIXTURE(runner, ValueTest, CommentBefore);
2551
- //JSONTEST_REGISTER_FIXTURE(runner, ValueTest, nulls);
2552
- JSONTEST_REGISTER_FIXTURE(runner, ValueTest, zeroes);
2553
- JSONTEST_REGISTER_FIXTURE(runner, ValueTest, zeroesInKeys);
2554
- JSONTEST_REGISTER_FIXTURE(runner, ValueTest, specialFloats);
2555
- JSONTEST_REGISTER_FIXTURE(runner, ValueTest, precision);
2556
-
2557
- JSONTEST_REGISTER_FIXTURE(runner, WriterTest, dropNullPlaceholders);
2558
- JSONTEST_REGISTER_FIXTURE(runner, StreamWriterTest, dropNullPlaceholders);
2559
- JSONTEST_REGISTER_FIXTURE(runner, StreamWriterTest, writeZeroes);
2560
-
2561
- JSONTEST_REGISTER_FIXTURE(runner, ReaderTest, parseWithNoErrors);
2562
- JSONTEST_REGISTER_FIXTURE(
2563
- runner, ReaderTest, parseWithNoErrorsTestingOffsets);
2564
- JSONTEST_REGISTER_FIXTURE(runner, ReaderTest, parseWithOneError);
2565
- JSONTEST_REGISTER_FIXTURE(runner, ReaderTest, parseChineseWithOneError);
2566
- JSONTEST_REGISTER_FIXTURE(runner, ReaderTest, parseWithDetailError);
2567
-
2568
- JSONTEST_REGISTER_FIXTURE(runner, CharReaderTest, parseWithNoErrors);
2569
- JSONTEST_REGISTER_FIXTURE(
2570
- runner, CharReaderTest, parseWithNoErrorsTestingOffsets);
2571
- JSONTEST_REGISTER_FIXTURE(runner, CharReaderTest, parseWithOneError);
2572
- JSONTEST_REGISTER_FIXTURE(runner, CharReaderTest, parseChineseWithOneError);
2573
- JSONTEST_REGISTER_FIXTURE(runner, CharReaderTest, parseWithDetailError);
2574
- JSONTEST_REGISTER_FIXTURE(runner, CharReaderTest, parseWithStackLimit);
2575
-
2576
- JSONTEST_REGISTER_FIXTURE(runner, CharReaderStrictModeTest, dupKeys);
2577
-
2578
- JSONTEST_REGISTER_FIXTURE(runner, CharReaderFailIfExtraTest, issue164);
2579
- JSONTEST_REGISTER_FIXTURE(runner, CharReaderFailIfExtraTest, issue107);
2580
- JSONTEST_REGISTER_FIXTURE(runner, CharReaderFailIfExtraTest, commentAfterObject);
2581
- JSONTEST_REGISTER_FIXTURE(runner, CharReaderFailIfExtraTest, commentAfterArray);
2582
- JSONTEST_REGISTER_FIXTURE(runner, CharReaderFailIfExtraTest, commentAfterBool);
2583
-
2584
- JSONTEST_REGISTER_FIXTURE(runner, CharReaderAllowDropNullTest, issue178);
2585
-
2586
- JSONTEST_REGISTER_FIXTURE(runner, CharReaderAllowSingleQuotesTest, issue182);
2587
-
2588
- JSONTEST_REGISTER_FIXTURE(runner, CharReaderAllowZeroesTest, issue176);
2589
-
2590
- JSONTEST_REGISTER_FIXTURE(runner, CharReaderAllowSpecialFloatsTest, issue209);
2591
-
2592
- JSONTEST_REGISTER_FIXTURE(runner, BuilderTest, settings);
2593
-
2594
- JSONTEST_REGISTER_FIXTURE(runner, IteratorTest, distance);
2595
- JSONTEST_REGISTER_FIXTURE(runner, IteratorTest, names);
2596
- JSONTEST_REGISTER_FIXTURE(runner, IteratorTest, indexes);
2597
- JSONTEST_REGISTER_FIXTURE(runner, IteratorTest, const);
2598
-
2599
- JSONTEST_REGISTER_FIXTURE(runner, RValueTest, moveConstruction);
2600
-
2601
- return runner.runCommandLine(argc, argv);
2602
- }
2603
-
2604
- #if defined(__GNUC__)
2605
- #pragma GCC diagnostic pop
2606
- #endif