| 84 CxJsonValue *position = cxJsonObjGet(obj, "position"); |
84 CxJsonValue *position = cxJsonObjGet(obj, "position"); |
| 85 CX_TEST_ASSERT(cxJsonIsObject(position)); |
85 CX_TEST_ASSERT(cxJsonIsObject(position)); |
| 86 CxJsonValue *longitude = cxJsonObjGet(position, "longitude"); |
86 CxJsonValue *longitude = cxJsonObjGet(position, "longitude"); |
| 87 CX_TEST_ASSERT(cxJsonIsNumber(longitude)); |
87 CX_TEST_ASSERT(cxJsonIsNumber(longitude)); |
| 88 CX_TEST_ASSERT(!cxJsonIsInteger(longitude)); |
88 CX_TEST_ASSERT(!cxJsonIsInteger(longitude)); |
| 89 CX_TEST_ASSERT(cxJsonAsDouble(longitude) == -94.7099); |
89 CX_TEST_ASSERT(0 == cx_vcmp_double(cxJsonAsDouble(longitude), -94.7099)); |
| 90 CX_TEST_ASSERT(cxJsonAsInteger(longitude) == -94); |
90 CX_TEST_ASSERT(cxJsonAsInteger(longitude) == -94); |
| 91 CxJsonValue *latitude = cxJsonObjGet(position, "latitude"); |
91 CxJsonValue *latitude = cxJsonObjGet(position, "latitude"); |
| 92 CX_TEST_ASSERT(cxJsonIsNumber(latitude)); |
92 CX_TEST_ASSERT(cxJsonIsNumber(latitude)); |
| 93 CX_TEST_ASSERT(!cxJsonIsInteger(latitude)); |
93 CX_TEST_ASSERT(!cxJsonIsInteger(latitude)); |
| 94 CX_TEST_ASSERT(cxJsonAsDouble(latitude) == 51.5539); |
94 CX_TEST_ASSERT(0 == cx_vcmp_double(cxJsonAsDouble(latitude), 51.5539)); |
| 95 CX_TEST_ASSERT(cxJsonAsInteger(latitude) == 51); |
95 CX_TEST_ASSERT(cxJsonAsInteger(latitude) == 51); |
| 96 |
96 |
| 97 CxJsonValue *timestamp = cxJsonObjGet(obj, "timestamp"); |
97 CxJsonValue *timestamp = cxJsonObjGet(obj, "timestamp"); |
| 98 CX_TEST_ASSERT(cxJsonIsInteger(timestamp)); |
98 CX_TEST_ASSERT(cxJsonIsInteger(timestamp)); |
| 99 CX_TEST_ASSERT(cxJsonIsNumber(timestamp)); |
99 CX_TEST_ASSERT(cxJsonIsNumber(timestamp)); |
| 350 |
350 |
| 351 cxJsonFill(&json, "3.1415 "); |
351 cxJsonFill(&json, "3.1415 "); |
| 352 result = cxJsonNext(&json, &v); |
352 result = cxJsonNext(&json, &v); |
| 353 CX_TEST_ASSERT(result == CX_JSON_NO_ERROR); |
353 CX_TEST_ASSERT(result == CX_JSON_NO_ERROR); |
| 354 CX_TEST_ASSERT(cxJsonIsNumber(v)); |
354 CX_TEST_ASSERT(cxJsonIsNumber(v)); |
| 355 CX_TEST_ASSERT(cxJsonAsDouble(v) == 3.1415); |
355 CX_TEST_ASSERT(0 == cx_vcmp_double(cxJsonAsDouble(v), 3.1415)); |
| 356 cxJsonValueFree(v); |
356 cxJsonValueFree(v); |
| 357 |
357 |
| 358 cxJsonFill(&json, "-47.11e2 "); |
358 cxJsonFill(&json, "-47.11e2 "); |
| 359 result = cxJsonNext(&json, &v); |
359 result = cxJsonNext(&json, &v); |
| 360 CX_TEST_ASSERT(result == CX_JSON_NO_ERROR); |
360 CX_TEST_ASSERT(result == CX_JSON_NO_ERROR); |
| 361 CX_TEST_ASSERT(cxJsonIsNumber(v)); |
361 CX_TEST_ASSERT(cxJsonIsNumber(v)); |
| 362 CX_TEST_ASSERT(cxJsonAsDouble(v) == -4711.0); |
362 CX_TEST_ASSERT(0 == cx_vcmp_double(cxJsonAsDouble(v), -4711.0)); |
| 363 cxJsonValueFree(v); |
363 cxJsonValueFree(v); |
| 364 |
364 |
| 365 cxJsonFill(&json, "0.815e-3 "); |
365 cxJsonFill(&json, "0.815e-3 "); |
| 366 result = cxJsonNext(&json, &v); |
366 result = cxJsonNext(&json, &v); |
| 367 CX_TEST_ASSERT(result == CX_JSON_NO_ERROR); |
367 CX_TEST_ASSERT(result == CX_JSON_NO_ERROR); |
| 368 CX_TEST_ASSERT(cxJsonIsNumber(v)); |
368 CX_TEST_ASSERT(cxJsonIsNumber(v)); |
| 369 CX_TEST_ASSERT(cxJsonAsDouble(v) == 0.000815); |
369 CX_TEST_ASSERT(0 == cx_vcmp_double(cxJsonAsDouble(v), 0.000815)); |
| 370 cxJsonValueFree(v); |
370 cxJsonValueFree(v); |
| 371 |
371 |
| 372 cxJsonFill(&json, "1.23E4 "); |
372 cxJsonFill(&json, "1.23E4 "); |
| 373 result = cxJsonNext(&json, &v); |
373 result = cxJsonNext(&json, &v); |
| 374 CX_TEST_ASSERT(result == CX_JSON_NO_ERROR); |
374 CX_TEST_ASSERT(result == CX_JSON_NO_ERROR); |
| 380 cxJsonFill(&json, "18446744073709551615.0123456789 "); |
380 cxJsonFill(&json, "18446744073709551615.0123456789 "); |
| 381 result = cxJsonNext(&json, &v); |
381 result = cxJsonNext(&json, &v); |
| 382 CX_TEST_ASSERT(result == CX_JSON_NO_ERROR); |
382 CX_TEST_ASSERT(result == CX_JSON_NO_ERROR); |
| 383 CX_TEST_ASSERT(cxJsonIsNumber(v)); |
383 CX_TEST_ASSERT(cxJsonIsNumber(v)); |
| 384 // be as precise as possible |
384 // be as precise as possible |
| 385 CX_TEST_ASSERT(cxJsonAsDouble(v) == 1.8446744073709552e+19); |
385 // TODO: this might produce format error / out of range in future implementations |
| |
386 CX_TEST_ASSERT(0 == cx_vcmp_double(cxJsonAsDouble(v), 1.8446744073709552e+19)); |
| 386 cxJsonValueFree(v); |
387 cxJsonValueFree(v); |
| 387 } |
388 } |
| 388 cxJsonDestroy(&json); |
389 cxJsonDestroy(&json); |
| 389 } |
390 } |
| 390 |
391 |