diff options
author | Stefan Radomski <github@mintwerk.de> | 2017-05-22 19:17:48 (GMT) |
---|---|---|
committer | Stefan Radomski <github@mintwerk.de> | 2017-05-22 19:17:48 (GMT) |
commit | 9a70ea561fecf533451f08ee3a490e2a5ba21372 (patch) | |
tree | 6ca253c6aa8640d50ca93d104a19421ec8ec2e3f /test/src | |
parent | ecdefbdbb55c800f9ceed67f77592b5d64927225 (diff) | |
download | uscxml-9a70ea561fecf533451f08ee3a490e2a5ba21372.zip uscxml-9a70ea561fecf533451f08ee3a490e2a5ba21372.tar.gz uscxml-9a70ea561fecf533451f08ee3a490e2a5ba21372.tar.bz2 |
Fixed issue 135 custom executable content
Diffstat (limited to 'test/src')
-rw-r--r-- | test/src/test-extensions.cpp | 67 |
1 files changed, 65 insertions, 2 deletions
diff --git a/test/src/test-extensions.cpp b/test/src/test-extensions.cpp index 626f8e5..4051c68 100644 --- a/test/src/test-extensions.cpp +++ b/test/src/test-extensions.cpp @@ -5,6 +5,7 @@ #include "uscxml/interpreter/BasicDelayedEventQueue.h" #include "uscxml/PausableDelayedEventQueue.h" #include "uscxml/ExtendedLuaDataModel.h" +#include "uscxml/CustomExecutableContent.h" #include <event2/util.h> // for evutil_socket_t @@ -29,6 +30,7 @@ class MyPausableDelayedEventQueue : public PausableDelayedEventQueue { }; + // from issue 96: // https://github.com/tklab-tud/uscxml/issues/96 @@ -108,7 +110,6 @@ bool testPausableEventQueue() { } - static const char *customLuaExtension = "<scxml datamodel=\"lua\">" " <script>" @@ -128,7 +129,69 @@ bool testLuaExtension() { return true; } +static const char *customExecContent = + "<scxml>" + " <state>" + " <onentry>" + " <custom />" + " </onentry>" + " </state>" + "</scxml>" + ; + +bool testCustomExecContent() { + Factory::getInstance()->registerExecutableContent(new CustomExecutableContent()); + Interpreter exContent = Interpreter::fromXML(customExecContent, ""); + InterpreterState state; + + while ((state = exContent.step(0)) != USCXML_IDLE) {} + + return true; +} + +class CustomExecutableContentNS : public ExecutableContentImpl { +public: + ~CustomExecutableContentNS() {}; + virtual std::shared_ptr<ExecutableContentImpl> create(uscxml::InterpreterImpl* interpreter) { + return std::shared_ptr<ExecutableContentImpl>(new CustomExecutableContentNS()); + } + virtual std::string getLocalName() { + return "custom"; + } + virtual std::string getNamespace() { + return "http://www.example.com/custom"; + } + + virtual void enterElement(XERCESC_NS::DOMElement* node) { + std::cout << "Entering customNS element" << std::endl; + } + virtual void exitElement(XERCESC_NS::DOMElement* node) { + std::cout << "Exiting customNS element" << std::endl; + } +}; + +static const char *customExecContentNS = + "<scxml xmlns:custom=\"http://www.example.com/custom\">" + " <state>" + " <onentry>" + " <custom:custom />" + " </onentry>" + " </state>" + "</scxml>" + ; + +bool testCustomExecContentNS() { + Factory::getInstance()->registerExecutableContent(new CustomExecutableContentNS()); + Interpreter exContent = Interpreter::fromXML(customExecContentNS, ""); + InterpreterState state; + + while ((state = exContent.step(0)) != USCXML_IDLE) {} + + return true; +} + int main(int argc, char** argv) { - testLuaExtension(); +// testLuaExtension(); // testPausableEventQueue(); + testCustomExecContentNS(); } |