summaryrefslogtreecommitdiffstats
path: root/test/src/test-state-pass.cpp
diff options
context:
space:
mode:
authorStefan Radomski <github@mintwerk.de>2016-05-12 13:12:33 (GMT)
committerStefan Radomski <github@mintwerk.de>2016-05-12 13:12:33 (GMT)
commitb62e7979600feee23dc7cdb61042a8fc7673122b (patch)
treef7351372f37979dd2d048e0b68a16a4cd3b2aadb /test/src/test-state-pass.cpp
parent1b11b310be61e51b3ac5ebb83f7c8a33aef3d6e8 (diff)
downloaduscxml-b62e7979600feee23dc7cdb61042a8fc7673122b.zip
uscxml-b62e7979600feee23dc7cdb61042a8fc7673122b.tar.gz
uscxml-b62e7979600feee23dc7cdb61042a8fc7673122b.tar.bz2
Major Refactoring v2.0
Diffstat (limited to 'test/src/test-state-pass.cpp')
-rw-r--r--test/src/test-state-pass.cpp89
1 files changed, 89 insertions, 0 deletions
diff --git a/test/src/test-state-pass.cpp b/test/src/test-state-pass.cpp
new file mode 100644
index 0000000..943b3dc
--- /dev/null
+++ b/test/src/test-state-pass.cpp
@@ -0,0 +1,89 @@
+#include <xercesc/parsers/XercesDOMParser.hpp>
+#include <xercesc/dom/DOM.hpp>
+#include <xercesc/dom/DOMLSSerializer.hpp>
+#include <xercesc/dom/DOMImplementationLS.hpp>
+#include <xercesc/sax/HandlerBase.hpp>
+#include <xercesc/util/XMLString.hpp>
+#include <xercesc/util/PlatformUtils.hpp>
+
+#include "uscxml/Interpreter.h"
+#include "uscxml/util/DOM.h"
+#include "uscxml/util/String.h"
+#include "uscxml/util/UUID.h"
+#include "uscxml/util/Predicates.h"
+#include "uscxml/util/Convenience.h" // iequals
+
+#include "easylogging++.h"
+
+#include "uscxml/messages/Event.h"
+#include "uscxml/server/HTTPServer.h"
+
+#include <iostream>
+#include <queue>
+#include <condition_variable>
+
+#include <event2/util.h> // for evutil_socket_t
+#include <event2/event.h>
+#include <event2/thread.h>
+
+#ifdef _WIN32
+#include "XGetopt.h"
+#include "XGetopt.cpp"
+#else
+#include <getopt.h>
+#endif
+
+using namespace std;
+using namespace xercesc;
+using namespace uscxml;
+
+
+int main(int argc, char** argv) {
+ size_t iterations = 1;
+
+ std::string documentURI;
+ el::Loggers::reconfigureAllLoggers(el::ConfigurationType::Format, "%datetime %level %fbase:%line: %msg");
+
+ if (argc < 2) {
+ exit(EXIT_FAILURE);
+ }
+
+ int option;
+ while ((option = getopt(argc, argv, "n:")) != -1) {
+ switch(option) {
+ case 'n':
+ iterations = strTo<size_t>(optarg);
+ break;
+ default:
+ break;
+ }
+ }
+
+ documentURI = argv[optind];
+
+ HTTPServer::getInstance(7080, 7443);
+
+ while(iterations--) {
+ try {
+ Interpreter interpreter = Interpreter::fromURL(documentURI);
+
+ ActionLanguage al;
+ al.execContent = std::shared_ptr<ContentExecutorImpl>(new BasicContentExecutorImpl(interpreter.getImpl().get()));
+ interpreter.setActionLanguage(al);
+
+ StateTransitionMonitor mon(interpreter);
+ interpreter.setMonitor(&mon);
+
+ InterpreterState state = InterpreterState::USCXML_UNDEF;
+ while(state != USCXML_FINISHED) {
+ state = interpreter.step(true);
+ }
+ assert(interpreter.isInState("pass"));
+ } catch (Event e) {
+ std::cerr << "Thrown Event out of Interpreter: " << e;
+ return EXIT_FAILURE;
+ }
+ }
+
+ return 0;
+} \ No newline at end of file