171 lines
4.9 KiB
C++
171 lines
4.9 KiB
C++
#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
|
|
}
|