From 83d55c4e8ffdc5e0efb41a2b4f0cd76cc1e5d8d1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Remko=20Tron=C3=A7on?= <git@el-tramo.be>
Date: Fri, 17 Sep 2010 11:59:40 +0200
Subject: Added XMPP parser tester.


diff --git a/Swiften/Examples/EchoBot/SConscript b/Swiften/Examples/EchoBot/SConscript
index 711d8ea..fb7749d 100644
--- a/Swiften/Examples/EchoBot/SConscript
+++ b/Swiften/Examples/EchoBot/SConscript
@@ -10,4 +10,5 @@ myenv.MergeFlags(myenv["OPENSSL_FLAGS"])
 myenv.MergeFlags(myenv.get("LIBXML_FLAGS", ""))
 myenv.MergeFlags(myenv.get("EXPAT_FLAGS", ""))
 myenv.MergeFlags(myenv["PLATFORM_FLAGS"])
-tester = myenv.Program("EchoBot", ["EchoBot.cpp"])
+
+myenv.Program("EchoBot", ["EchoBot.cpp"])
diff --git a/Swiften/Examples/ParserTester/.gitignore b/Swiften/Examples/ParserTester/.gitignore
new file mode 100644
index 0000000..cbc6f36
--- /dev/null
+++ b/Swiften/Examples/ParserTester/.gitignore
@@ -0,0 +1 @@
+ParserTester
diff --git a/Swiften/Examples/ParserTester/ParserTester.cpp b/Swiften/Examples/ParserTester/ParserTester.cpp
new file mode 100644
index 0000000..3cc87e1
--- /dev/null
+++ b/Swiften/Examples/ParserTester/ParserTester.cpp
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2010 Remko Tronçon
+ * Licensed under the GNU General Public License v3.
+ * See Documentation/Licenses/GPLv3.txt for more information.
+ */
+
+#include <iostream>
+#include <fstream>
+#include <typeinfo>
+
+#include "Swiften/Parser/UnitTest/ParserTester.h"
+#include "Swiften/Parser/XMPPParser.h"
+#include "Swiften/Parser/XMPPParserClient.h"
+#include "Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.h"
+
+using namespace Swift;
+
+class MyXMPPParserClient : public XMPPParserClient {
+	public:
+		virtual void handleStreamStart(const ProtocolHeader&) {
+			std::cout << "-> Stream start" << std::endl;
+		}
+		virtual void handleElement(boost::shared_ptr<Element> element) {
+			std::cout << "-> Element " << typeid(*element.get()).name() << std::endl;
+		}
+		virtual void handleStreamEnd() {
+			std::cout << "-> Stream end" << std::endl;
+		}
+};
+
+int main(int argc, char* argv[]) {
+	if (argc != 2) {
+		std::cerr << "Usage: " << argv[0] << " file" << std::endl;
+		return 0;
+	}
+	FullPayloadParserFactoryCollection factories;
+	MyXMPPParserClient parserClient;
+	XMPPParser parser(&parserClient, &factories);
+	ParserTester<XMLParserClient> tester(&parser);
+
+	std::string line;
+	std::ifstream myfile (argv[1]);
+	if (myfile.is_open()) {
+		while (!myfile.eof()) {
+			getline (myfile,line);
+			std::cout << "Parsing: " << line << std::endl;
+			tester.parse(line);
+		}
+		myfile.close();
+	}
+	else {
+		std::cerr << "Unable to open file " << argv[1] << std::endl;
+	}
+	return 0;
+}
diff --git a/Swiften/Examples/ParserTester/SConscript b/Swiften/Examples/ParserTester/SConscript
new file mode 100644
index 0000000..e3df0ba
--- /dev/null
+++ b/Swiften/Examples/ParserTester/SConscript
@@ -0,0 +1,11 @@
+Import("env")
+
+myenv = env.Clone()
+myenv.MergeFlags(myenv["SWIFTEN_FLAGS"])
+myenv.MergeFlags(myenv["LIBIDN_FLAGS"])
+myenv.MergeFlags(myenv["BOOST_FLAGS"])
+myenv.MergeFlags(myenv.get("LIBXML_FLAGS", ""))
+myenv.MergeFlags(myenv.get("EXPAT_FLAGS", ""))
+myenv.MergeFlags(myenv["PLATFORM_FLAGS"])
+
+myenv.Program("ParserTester", ["ParserTester.cpp"])
diff --git a/Swiften/Examples/SConscript b/Swiften/Examples/SConscript
index 1c95e85..64d1859 100644
--- a/Swiften/Examples/SConscript
+++ b/Swiften/Examples/SConscript
@@ -7,4 +7,5 @@ SConscript(dirs = [
 	"ConnectivityTest",
 	"LinkLocalTool",
 	"EchoBot",
+	"ParserTester",
 ])
-- 
cgit v0.10.2-6-g49f6