| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- #include "TestSuite.h"
- #ifdef JSON_STREAM
- unsigned int counter = 0;
- unsigned int errorCounter = 0;
- void errorCallback(void *);
- void errorCallback(void *){
- ++errorCounter;
- }
- #ifdef JSON_LIBRARY
- void Callback(JSONNODE * test, void *);
- void Callback(JSONNODE * test, void *){
- ++counter;
- switch(counter){
- case 1:
- assertEquals(json_type(test), JSON_NODE);
- assertTrue(json_empty(test));
- break;
- case 2:
- assertEquals(json_type(test), JSON_ARRAY);
- assertTrue(json_empty(test));
- break;
- case 3:{
- assertEquals(json_type(test), JSON_NODE);
- assertEquals(json_size(test), 1);
- json_char * temp = json_name(json_at(test, 0));
- assertCStringSame(temp, JSON_TEXT("hello"));
- json_free(temp);
- assertEquals(json_as_int(json_at(test, 0)), 1);
- break;}
- case 4:
- assertEquals(json_type(test), JSON_ARRAY);
- assertEquals(json_size(test), 3);
- break;
- case 5:{
- assertEquals(json_type(test), JSON_NODE);
- assertEquals(json_size(test), 1);
- json_char * temp = json_name(json_at(test, 0));
- assertCStringSame(temp, JSON_TEXT("hi"));
- json_free(temp);
- assertEquals(json_size(json_at(test, 0)), 1);
- assertEquals(json_type(json_at(json_at(test, 0),0)), JSON_NUMBER);
- temp = json_name(json_at(json_at(test, 0),0));
- assertCStringSame(temp, JSON_TEXT("one"));
- json_free(temp);
- assertEquals(json_as_int(json_at(json_at(test, 0),0)), 1);
- break;}
- }
- }
- #else
- void Callback(JSONNode & test, void * ide);
- void Callback(JSONNode & test, void * ide){
- assertEquals(ide, (void*)0xDEADBEEF);
- ++counter;
- switch(counter){
- case 1:
- assertEquals(test.type(), JSON_NODE);
- assertTrue(test.empty());
- break;
- case 2:
- assertEquals(test.type(), JSON_ARRAY);
- assertTrue(test.empty());
- break;
- case 3:
- assertEquals(test.type(), JSON_NODE);
- assertEquals(test.size(), 1);
- assertEquals(test[0].name(), JSON_TEXT("hello"));
- assertEquals(test[0].as_int(), 1);
- break;
- case 4:
- assertEquals(test.type(), JSON_ARRAY);
- assertEquals(test.size(), 3);
- break;
- case 5:
- assertEquals(test.type(), JSON_NODE);
- assertEquals(test.size(), 1);
- assertEquals(test[0].name(), JSON_TEXT("hi"));
- assertEquals(test[0].size(), 1)
- assertEquals(test[0][0].type(), JSON_NUMBER);
- assertEquals(test[0][0].name(), JSON_TEXT("one"));
- assertEquals(test[0][0].as_int(), 1);
- break;
- }
- }
- #endif //library
- #endif //stream
- void TestSuite::TestStreams(void){
- #ifdef JSON_STREAM
- UnitTest::SetPrefix("TestStreams.cpp - Streams");
- counter = 0;
- errorCounter = 0;
- #ifdef JSON_LIBRARY
- JSONSTREAM * test = json_new_stream(Callback, errorCallback, (void*)0xDEADBEEF);
- json_stream_push(test, JSON_TEXT("{}[]"));
- assertEquals(2, counter);
- assertEquals(0, errorCounter);
- json_stream_push(test, JSON_TEXT("{\"hel"));
- assertEquals(2, counter);
- assertEquals(0, errorCounter);
- json_stream_push(test, JSON_TEXT("lo\" : 1"));
- assertEquals(2, counter);
- assertEquals(0, errorCounter);
- json_stream_push(test, JSON_TEXT("}["));
- assertEquals(3, counter);
- assertEquals(0, errorCounter);
- json_stream_push(test, JSON_TEXT("1,2,3]{\"hi\" : { \"one\" : 1}"));
- assertEquals(4, counter);
- assertEquals(0, errorCounter);
- json_stream_push(test, JSON_TEXT("}"));
- assertEquals(5, counter);
- assertEquals(0, errorCounter);
-
- #ifdef JSON_SAFE
- json_stream_push(test, JSON_TEXT("{\"hello\":12keaueuataueaouhe"));
- assertEquals(1, errorCounter);
- #endif
- json_delete_stream(test);
- #else
- JSONStream test(Callback, errorCallback, (void*)0xDEADBEEF);
- test << JSON_TEXT("{}[]");
- assertEquals(2, counter);
- assertEquals(0, errorCounter);
- test << JSON_TEXT("{\"hel");
- assertEquals(2, counter);
- assertEquals(0, errorCounter);
- test << JSON_TEXT("lo\" : 1");
- assertEquals(2, counter);
- assertEquals(0, errorCounter);
- test << JSON_TEXT("}[");
- assertEquals(3, counter);
- assertEquals(0, errorCounter);
- test << JSON_TEXT("1,2,3]{\"hi\" : { \"one\" : 1}");
- assertEquals(4, counter);
- assertEquals(0, errorCounter);
- test << JSON_TEXT("}");
- assertEquals(5, counter);
- assertEquals(0, errorCounter);
-
- #ifdef JSON_SAFE
- test << JSON_TEXT("{\"hello\":12keaueuataueaouhe");
- assertEquals(1, errorCounter);
- #endif
-
- #ifdef JSON_SECURITY_MAX_STREAM_OBJECTS
- test.reset();
- unsigned int currentCount = errorCounter;
- json_string safe;
- for(int i = 0; i < JSON_SECURITY_MAX_STREAM_OBJECTS; ++i){
- safe += JSON_TEXT("{}");
- }
- test << safe;
- assertEquals(133, counter);
- assertEquals(currentCount, errorCounter);
-
- test.reset();
- json_string unsafe;
- for(int i = 0; i <= JSON_SECURITY_MAX_STREAM_OBJECTS + 1; ++i){
- unsafe += JSON_TEXT("{}");
- }
- test << unsafe;
- assertEquals(261, counter);
- assertEquals(currentCount + 1, errorCounter);
- #endif
- #endif
- #endif
- }
|