diff -r 000000000000 -r d187e7fc9970 tests.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests.cpp Sat Oct 06 21:08:55 2012 -0400 @@ -0,0 +1,138 @@ +#include "jsonsax.hpp" + +#include +#include + +// #define DEBUGTEST +class JSLXTester : public IJSLXBackend +{ +public: + explicit JSLXTester(const char* json) + : m_json(json) + {} + + void debug(const char* data) + { +#ifdef DEBUGTEST + std::cerr << std::endl << "-*- " << data << " -*-" << std::endl; +#endif + } + + virtual bool Eof() + { + return *m_json == '\0'; + } + + virtual char GetChar() + { + assert(!Eof()); +#ifdef DEBUGTEST + std::cerr.put(*m_json == ' ' ? '_' : *m_json); +#endif + return *m_json++; + } + + virtual bool OnStartObject() + { + assert(m_json[-1] == '{'); + debug("OnStartObject"); + return true; + } + + virtual bool OnStopObject() + { + assert(m_json[-1] == '}'); + debug("OnStopObject"); + return true; + } + + virtual bool OnStartArray() + { + assert(m_json[-1] == '['); + debug("OnStartArray"); + return true; + } + + virtual bool OnStopArray() + { + assert(m_json[-1] == ']'); + debug("OnStopArray"); + return true; + } + + virtual bool OnStartNumber() + { + // assert(m_json[-1] == ']'); + debug("OnStartNumber"); + return true; + } + + virtual bool OnStopNumber() + { + // assert(m_json[-1] == ']'); + debug("OnStopNumber"); + return true; + } + + virtual bool OnStartString() + { + assert(m_json[-1] == '"'); + debug("OnStartString"); + return true; + } + + virtual bool OnStopString() + { + assert(m_json[-1] == '"'); + debug("OnStopString"); + return true; + } + + virtual bool OnNull() + { + // assert(m_json[-1] == ']'); + debug("OnNull"); + return true; + } + + virtual bool OnTrue() + { + // assert(m_json[-1] == ']'); + debug("OnTrue"); + return true; + } + + virtual bool OnFalse() + { + // assert(m_json[-1] == ']'); + debug("OnFalse"); + return true; + } + + virtual void OnError(const char* err) + { + debug("Error"); + debug(err); + } + + bool Check() + { + return Eof(); + } + +private: + const char* m_json; +}; + +int main() +{ + const char json[] = + "{ \"hello\" : [ 11, 12 ,1" + "3 ], \n \"world\" : -3.45e2 }"; + JSLXTester tester(json); + JSLXParser parser(&tester); + assert(parser.Parse()); + assert(tester.Check()); + + return 0; +}