summaryrefslogtreecommitdiffstats
path: root/test/src
diff options
context:
space:
mode:
authorStefan Radomski <github@mintwerk.de>2017-05-22 19:17:48 (GMT)
committerStefan Radomski <github@mintwerk.de>2017-05-22 19:17:48 (GMT)
commit9a70ea561fecf533451f08ee3a490e2a5ba21372 (patch)
tree6ca253c6aa8640d50ca93d104a19421ec8ec2e3f /test/src
parentecdefbdbb55c800f9ceed67f77592b5d64927225 (diff)
downloaduscxml-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.cpp67
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();
}