tests.cpp
changeset 0 d187e7fc9970
--- /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 <iostream>
+#include <assert.h>
+
+// #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;
+}