diff --git a/test/perftest/ultrajsontest.cpp b/test/perftest/ultrajsontest.cpp new file mode 100644 index 0000000..8328c63 --- /dev/null +++ b/test/perftest/ultrajsontest.cpp @@ -0,0 +1,64 @@ +#include "perftest.h" + +#if TEST_ULTRAJSON + +#include "ultrajson/ultrajsondec.c" +#include "ultrajson/ultrajsonenc.c" + +class UltraJson : public PerfTest { +}; + +static char dummy = 0; + +static void Object_objectAddKey(JSOBJ obj, JSOBJ name, JSOBJ value) {} +static void Object_arrayAddItem(JSOBJ obj, JSOBJ value) {} + +static JSOBJ Object_newString(wchar_t *start, wchar_t *end) { return &dummy; } +static JSOBJ Object_newTrue(void) { return &dummy; } +static JSOBJ Object_newFalse(void) { return &dummy; } +static JSOBJ Object_newNull(void) { return &dummy; } +static JSOBJ Object_newObject(void) { return &dummy; } +static JSOBJ Object_newArray(void) { return &dummy; } +static JSOBJ Object_newInteger(JSINT32 value) { return &dummy; } +static JSOBJ Object_newLong(JSINT64 value) { return &dummy; } +static JSOBJ Object_newDouble(double value) { return &dummy; } + +static void Object_releaseObject(JSOBJ obj) {} + +static JSONObjectDecoder decoder = { + Object_newString, + Object_objectAddKey, + Object_arrayAddItem, + Object_newTrue, + Object_newFalse, + Object_newNull, + Object_newObject, + Object_newArray, + Object_newInteger, + Object_newLong, + Object_newDouble, + Object_releaseObject, + malloc, + free, + realloc +}; + +TEST_F(UltraJson, Decode) { + for (int i = 0; i < kTrialCount; i++) { + decoder.errorStr = NULL; + decoder.errorOffset = NULL; + void *ret = JSON_DecodeObject(&decoder, json_, length_); + ASSERT_TRUE(ret != 0); + } +} + +TEST_F(UltraJson, Whitespace) { + for (int i = 0; i < kTrialCount; i++) { + decoder.errorStr = NULL; + decoder.errorOffset = NULL; + void *ret = JSON_DecodeObject(&decoder, whitespace_, whitespace_length_); + ASSERT_TRUE(ret != 0); + } +} + +#endif // TEST_ULTRAJSON