diff options
author | Stefan Radomski <github@mintwerk.de> | 2016-05-12 13:12:33 (GMT) |
---|---|---|
committer | Stefan Radomski <github@mintwerk.de> | 2016-05-12 13:12:33 (GMT) |
commit | b62e7979600feee23dc7cdb61042a8fc7673122b (patch) | |
tree | f7351372f37979dd2d048e0b68a16a4cd3b2aadb /test/src/test-state-pass.cpp | |
parent | 1b11b310be61e51b3ac5ebb83f7c8a33aef3d6e8 (diff) | |
download | uscxml-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.cpp | 89 |
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 |