summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Radomski <github@mintwerk.de>2016-05-09 20:44:01 (GMT)
committerStefan Radomski <github@mintwerk.de>2016-05-09 20:44:01 (GMT)
commit1b11b310be61e51b3ac5ebb83f7c8a33aef3d6e8 (patch)
tree94dd97bce2b62c890514fef506ff1b49a0228709
parent43ac168a8ea4a75f1df7b2b6d7444b618eedd42c (diff)
downloaduscxml-legacy-1.0.zip
uscxml-legacy-1.0.tar.gz
uscxml-legacy-1.0.tar.bz2
Fixed a typo and added a test for issue 56legacy-1.0
-rw-r--r--src/uscxml/Interpreter.h2
-rw-r--r--test/src/issues/test-issue56.cpp66
-rwxr-xr-xtest/w3c/convert-tests.sh13
3 files changed, 78 insertions, 3 deletions
diff --git a/src/uscxml/Interpreter.h b/src/uscxml/Interpreter.h
index a22b7b8..81d12d0 100644
--- a/src/uscxml/Interpreter.h
+++ b/src/uscxml/Interpreter.h
@@ -70,7 +70,7 @@ catch (Event e) { \
} catch (boost::bad_weak_ptr e) { \
LOG(ERROR) << "Unclean shutdown " << std::endl << std::endl; \
} catch (...) { \
- LOG(ERROR) << "An exception occured when calling " #callback " on monitors"; \
+ LOG(ERROR) << "An exception occurred when calling " #callback " on monitors"; \
} \
if (_state == USCXML_DESTROYED) { \
throw boost::bad_weak_ptr(); \
diff --git a/test/src/issues/test-issue56.cpp b/test/src/issues/test-issue56.cpp
new file mode 100644
index 0000000..0330512
--- /dev/null
+++ b/test/src/issues/test-issue56.cpp
@@ -0,0 +1,66 @@
+#include "uscxml/Interpreter.h"
+
+using namespace uscxml;
+
+// -- Issue 56 on github
+int main(int argc, char** argv) {
+ std::deque<std::string> messageQueue;
+ messageQueue.push_back("a");
+ messageQueue.push_back("b");
+ messageQueue.push_back("c");
+ messageQueue.push_back("d");
+
+ const char* scxmlContent =
+ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+ "<scxml xmlns=\"http://www.w3.org/2005/07/scxml\" version=\"1.0\" initial=\"initial_state\">"
+ " <state id=\"initial_state\">"
+ " <transition event=\"a\" target=\"parallel_state\"/>"
+ " </state>"
+ " <parallel id=\"parallel_state\">"
+ " <transition event=\"done.state.parallel_state\" target=\"join_state\"/>"
+ " <state id=\"p1out\" initial=\"p1\">"
+ " <state id=\"p1\">"
+ " <transition event=\"b\" target=\"p11\"/>"
+ " </state>"
+ " <final id=\"p11\"/>"
+ " </state>"
+ " <state id=\"p2out\" initial=\"p2\">"
+ " <state id=\"p2\">"
+ " <transition event=\"c\" target=\"p21\"/>"
+ " </state>"
+ " <final id=\"p21\"/>"
+ " </state>"
+ " </parallel>"
+ " <state id=\"join_state\">"
+ " <transition event=\"d\" target=\"final_state\"/>"
+ " </state>"
+ " <final id=\"final_state\"/>"
+ "</scxml>";
+
+ std::string msg;
+
+ uscxml::Interpreter scxml = uscxml::Interpreter::fromXML(scxmlContent, "");
+ scxml.addMonitor(new StateTransitionMonitor());
+
+ uscxml::InterpreterState state;
+ // assume initial stable configuration
+ do {
+ state = scxml.step();
+ } while(state > 0);
+
+ while(state != uscxml::USCXML_FINISHED && !messageQueue.empty()) {
+ msg = messageQueue.front();
+ messageQueue.pop_front();
+
+ scxml.receive(uscxml::Event(msg, uscxml::Event::EXTERNAL));
+
+ // step to next stable configuration
+ do {
+ state = scxml.step();
+ } while(state > 0);
+
+ }
+
+ return EXIT_SUCCESS;
+
+} \ No newline at end of file
diff --git a/test/w3c/convert-tests.sh b/test/w3c/convert-tests.sh
index 0e43b48..bd8d140 100755
--- a/test/w3c/convert-tests.sh
+++ b/test/w3c/convert-tests.sh
@@ -26,19 +26,28 @@ TXMLS=`ls txml/*.txml`
# java -jar /Users/sradomski/Developer/Applications/SaxonHE9-4-0-7J/saxon9he.jar $TXML confPromela.xsl -o:$DEST
# done
+# for TXML in $TXMLS
+# do
+# DEST=prolog/`basename $TXML .txml`.scxml
+# echo "Processing $TXML to $DEST"
+# java -jar /Users/sradomski/Developer/Applications/SaxonHE9-4-0-7J/saxon9he.jar $TXML confProlog.xsl -o:$DEST
+# done
+
for TXML in $TXMLS
do
- DEST=prolog/`basename $TXML .txml`.scxml
+ DEST=namespace/`basename $TXML .txml`.scxml
echo "Processing $TXML to $DEST"
- java -jar /Users/sradomski/Developer/Applications/SaxonHE9-4-0-7J/saxon9he.jar $TXML confProlog.xsl -o:$DEST
+ java -jar /Users/sradomski/Developer/Applications/SaxonHE9-4-0-7J/saxon9he.jar $TXML confEcma-ns.xsl -o:$DEST
done
cp txml/*.txt ecma/
+cp txml/*.txt ecma.ns/
cp txml/*.txt xpath/
cp txml/*.txt promela/
cp txml/*.txt prolog/
find ./ecma -type f -exec grep -Ili 'datamodel="xpath"' {} \; |xargs rm -fv
+find ./namespace -type f -exec grep -Ili 'datamodel="xpath"' {} \; |xargs rm -fv
find ./xpath -type f -exec grep -Ili 'datamodel="ecmascript"' {} \; |xargs rm -fv