109 lines
2.7 KiB
C++
109 lines
2.7 KiB
C++
#ifndef TESTSUITE_H
|
|
#define TESTSUITE_H
|
|
|
|
#include "UnitTest.h"
|
|
#include "../../JSONOptions.h"
|
|
#include "../../libjson.h"
|
|
#include "../Source/JSONNode.h"
|
|
|
|
#include <iostream>
|
|
using namespace std;
|
|
|
|
/*
|
|
This class tests libjson's internal working and it's
|
|
C++ interface
|
|
*/
|
|
|
|
#ifdef JSON_UNICODE
|
|
#define assertCStringSame(a, b) assertCStringEqualsW(a, b)
|
|
#define assertCStringNotSame(a, b) assertCStringNotEqualsW(a, b)
|
|
#else
|
|
#define assertCStringSame(a, b) assertCStringEquals(a, b)
|
|
#define assertCStringNotSame(a, b) assertCStringNotEquals(a, b)
|
|
#endif
|
|
|
|
|
|
class TestSuite {
|
|
public:
|
|
static void TestSelf(void);
|
|
static void TestString(void);
|
|
static void TestConverters(void);
|
|
#ifdef JSON_BINARY
|
|
static void TestBase64(void);
|
|
#endif
|
|
static void TestReferenceCounting(void);
|
|
static void TestConstructors(void);
|
|
static void TestAssigning(void);
|
|
static void TestEquality(void);
|
|
static void TestInequality(void);
|
|
static void TestChildren(void);
|
|
static void TestFunctions(void);
|
|
static void TestIterators(void);
|
|
static void TestInspectors(void);
|
|
static void TestNamespace(void);
|
|
static void TestValidator(void);
|
|
static void TestStreams(void);
|
|
#ifdef JSON_WRITE_PRIORITY
|
|
static void TestWriter(void);
|
|
#endif
|
|
#ifdef JSON_COMMENTS
|
|
static void TestComments(void);
|
|
#endif
|
|
#ifdef JSON_MUTEX_CALLBACKS
|
|
static void TestMutex(void);
|
|
static void TestThreading(void);
|
|
#endif
|
|
static void TestSharedString(void);
|
|
static void TestFinal(void);
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef JSON_LIBRARY
|
|
static void testParsingItself(JSONNODE * x){
|
|
#if defined(JSON_WRITE_PRIORITY) && defined(JSON_READ_PRIORITY)
|
|
{
|
|
json_char * written = json_write(x);
|
|
JSONNODE * copy = json_parse(written);
|
|
assertTrue(json_equal(x, copy));
|
|
json_delete(copy);
|
|
json_free(written);
|
|
}
|
|
{
|
|
json_char * written = json_write_formatted(x);
|
|
JSONNODE * copy = json_parse(written);
|
|
assertTrue(json_equal(x, copy));
|
|
json_delete(copy);
|
|
json_free(written);
|
|
}
|
|
{
|
|
json_char * written = json_write_formatted(x);
|
|
json_char * written2 = json_write(x);
|
|
json_char * stripped = json_strip_white_space(written);
|
|
assertCStringSame(written2, stripped);
|
|
json_free(stripped);
|
|
json_free(written);
|
|
json_free(written2);
|
|
}
|
|
#endif
|
|
{
|
|
JSONNODE * copy = json_duplicate(x);
|
|
assertTrue(json_equal(x, copy));
|
|
json_delete(copy);
|
|
}
|
|
}
|
|
#else
|
|
static void testParsingItself(JSONNode & x){
|
|
#if defined(JSON_WRITE_PRIORITY) && defined(JSON_READ_PRIORITY)
|
|
assertEquals(libjson::parse(x.write()), x);
|
|
assertEquals(libjson::parse(x.write_formatted()), x);
|
|
assertEquals(libjson::strip_white_space(x.write_formatted()), x.write());
|
|
#endif
|
|
assertEquals(x, x.duplicate())
|
|
}
|
|
#endif
|
|
};
|
|
|
|
#endif
|
|
|