summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Radomski <github@mintwerk.de>2016-11-28 17:03:31 (GMT)
committerStefan Radomski <github@mintwerk.de>2016-11-28 17:03:31 (GMT)
commita6313d4ab2005196f376870c9ca945c691948416 (patch)
tree5345422d235e7c511885601854b6a2923db09e2e
parentfcfc842a1ccee7a6b2579889f3236d50849c0679 (diff)
downloaduscxml-a6313d4ab2005196f376870c9ca945c691948416.zip
uscxml-a6313d4ab2005196f376870c9ca945c691948416.tar.gz
uscxml-a6313d4ab2005196f376870c9ca945c691948416.tar.bz2
Refactored Java into bindings and generated
-rw-r--r--apps/uscxml-transform.cpp30
-rw-r--r--contrib/java/common/org/uscxml/dm/jexl/JexlDataModel.java (renamed from test/bindings/java/org/uscxml/dm/jexl/JEXLDataModel.java)7
-rw-r--r--contrib/java/common/org/uscxml/helper/StopWatch.java (renamed from test/bindings/java/org/uscxml/helper/StopWatch.java)3
-rw-r--r--contrib/java/common/org/uscxml/helper/TestMonitor.java (renamed from test/bindings/java/org/uscxml/helper/TestMonitor.java)0
-rw-r--r--contrib/java/generated/build.properties5
-rw-r--r--contrib/java/generated/build.xml35
-rw-r--r--contrib/java/generated/org/uscxml/Data.java59
-rw-r--r--contrib/java/generated/org/uscxml/DataList.java20
-rw-r--r--contrib/java/generated/org/uscxml/DataMap.java20
-rw-r--r--contrib/java/generated/org/uscxml/DataModel.java77
-rw-r--r--contrib/java/generated/org/uscxml/DataModelExtension.java5
-rw-r--r--contrib/java/generated/org/uscxml/ErrorEvent.java9
-rw-r--r--contrib/java/generated/org/uscxml/Event.java5
-rw-r--r--contrib/java/generated/org/uscxml/InterpreterException.java11
-rw-r--r--contrib/java/generated/org/uscxml/InterpreterMonitor.java65
-rw-r--r--contrib/java/generated/org/uscxml/StateChart.java222
-rw-r--r--contrib/java/generated/org/uscxml/StateChartJava5Impl.java89
-rw-r--r--contrib/java/generated/org/uscxml/StringList.java10
-rw-r--r--contrib/java/generated/org/uscxml/StringVector.java15
-rw-r--r--contrib/java/generated/org/uscxml/dm/jexl/DataModelExtension.java5
-rw-r--r--contrib/java/generated/org/uscxml/dm/jexl/Event.java5
-rw-r--r--contrib/java/generated/org/uscxml/examples/hello-world.xml (renamed from test/bindings/java/org/uscxml/examples/hello-world.xml)0
-rw-r--r--contrib/java/generated/org/uscxml/tests/gen/TestStateChart.java27
-rw-r--r--contrib/java/libs/commons-jexl3-3.0.jar (renamed from test/bindings/java/libs/commons-jexl3-3.0.jar)bin383861 -> 383861 bytes
-rw-r--r--contrib/java/libs/commons-logging-1.2.jar (renamed from test/bindings/java/libs/commons-logging-1.2.jar)bin61829 -> 61829 bytes
-rw-r--r--src/uscxml/transform/ChartToJava.cpp55
-rw-r--r--src/uscxml/transform/ChartToVHDL.cpp4
-rw-r--r--src/uscxml/transform/Transformer.h2
-rw-r--r--src/uscxml/util/String.cpp5
-rw-r--r--test/CMakeLists.txt155
-rw-r--r--test/bindings/java/build.properties9
-rw-r--r--test/bindings/java/build.xml43
-rw-r--r--test/bindings/java/org/uscxml/apache/commons/scxml2/Context.java7
-rw-r--r--test/bindings/java/org/uscxml/apache/commons/scxml2/Evaluator.java7
-rw-r--r--test/bindings/java/org/uscxml/apache/commons/scxml2/JexlEvaluator.java19
-rw-r--r--test/bindings/java/org/uscxml/apache/commons/scxml2/SCXML.java8
-rw-r--r--test/bindings/java/org/uscxml/apache/commons/scxml2/SCXMLExecutor.java49
-rw-r--r--test/bindings/java/org/uscxml/apache/commons/scxml2/SCXMLReader.java13
-rw-r--r--test/bindings/java/org/uscxml/apache/commons/scxml2/SimpleErrorReporter.java5
-rw-r--r--test/bindings/java/org/uscxml/examples/ApacheCommonsAPI.java45
-rw-r--r--test/bindings/java/org/uscxml/examples/BasicExample.java46
-rw-r--r--test/bindings/java/org/uscxml/examples/DataModelExample.java60
-rw-r--r--test/bindings/java/org/uscxml/examples/MonitorExample.java55
-rw-r--r--test/bindings/java/org/uscxml/tests/JexlDataModelTest.java73
-rw-r--r--test/ctest/scripts/test_generated_c.cmake89
-rw-r--r--test/ctest/scripts/test_generated_java.cmake32
-rw-r--r--test/ctest/scripts/test_generated_vhdl.cmake48
47 files changed, 1000 insertions, 553 deletions
diff --git a/apps/uscxml-transform.cpp b/apps/uscxml-transform.cpp
index b85879a..d9be7cf 100644
--- a/apps/uscxml-transform.cpp
+++ b/apps/uscxml-transform.cpp
@@ -125,6 +125,7 @@ int main(int argc, char** argv) {
break;
case 'o':
outputFile = optarg;
+ extensions.insert(std::pair<std::string, std::string>("outputFile", outputFile));
break;
case 'l':
break;
@@ -370,38 +371,15 @@ int main(int argc, char** argv) {
outStream.close();
}
-#if 0
- if (options.size() > 0) {
- ChartToFSM annotater(interpreter);
- if (std::find(options.begin(), options.end(), "priority") != options.end())
- annotater.indexTransitions();
- if (std::find(options.begin(), options.end(), "conflicts") != options.end())
- annotater.annotateConflicts();
- if (std::find(options.begin(), options.end(), "exitset") != options.end())
- annotater.annotateExitSet();
- if (std::find(options.begin(), options.end(), "entryset") != options.end())
- annotater.annotateEntrySet();
- if (std::find(options.begin(), options.end(), "domain") != options.end())
- annotater.annotateDomain();
-
- if (outputFile.size() == 0 || outputFile == "-") {
- std::cout << annotater.getDocument();
- } else {
- std::ofstream outStream;
- outStream.open(outputFile.c_str());
- outStream << annotater.getDocument();
- outStream.close();
- }
- exit(EXIT_SUCCESS);
- }
-#endif
} catch (Event e) {
std::cout << e << std::endl;
+ return EXIT_FAILURE;
} catch (const std::exception &e) {
std::cout << e.what() << std::endl;
+ return EXIT_FAILURE;
}
- return EXIT_SUCCESS;
+ return EXIT_SUCCESS;
}
diff --git a/test/bindings/java/org/uscxml/dm/jexl/JEXLDataModel.java b/contrib/java/common/org/uscxml/dm/jexl/JexlDataModel.java
index cd9d175..731ceaa 100644
--- a/test/bindings/java/org/uscxml/dm/jexl/JEXLDataModel.java
+++ b/contrib/java/common/org/uscxml/dm/jexl/JexlDataModel.java
@@ -152,7 +152,7 @@ public class JexlDataModel extends DataModel {
try {
JexlExpression ex = jexl.createExpression(expr);
Object result = ex.evaluate(ctx);
- return (boolean) result;
+ return (Boolean) result;
} catch(JexlException e) {
}
return false;
@@ -198,8 +198,9 @@ public class JexlDataModel extends DataModel {
try {
field.get(newObj);
d.getCompound().set(field.getName(), getJexlObjectAsData(newObj));
- } catch (IllegalArgumentException | IllegalAccessException e) {
- }
+ }
+ catch (IllegalArgumentException e) {}
+ catch (IllegalAccessException e) {}
}
return d;
}
diff --git a/test/bindings/java/org/uscxml/helper/StopWatch.java b/contrib/java/common/org/uscxml/helper/StopWatch.java
index 4123ba1..29ce434 100644
--- a/test/bindings/java/org/uscxml/helper/StopWatch.java
+++ b/contrib/java/common/org/uscxml/helper/StopWatch.java
@@ -1,8 +1,5 @@
package org.uscxml.helper;
-import org.uscxml.Data;
-import org.uscxml.DataModelExtension;
-
public class StopWatch {
public StopWatch() {
diff --git a/test/bindings/java/org/uscxml/helper/TestMonitor.java b/contrib/java/common/org/uscxml/helper/TestMonitor.java
index 2b71d82..2b71d82 100644
--- a/test/bindings/java/org/uscxml/helper/TestMonitor.java
+++ b/contrib/java/common/org/uscxml/helper/TestMonitor.java
diff --git a/contrib/java/generated/build.properties b/contrib/java/generated/build.properties
new file mode 100644
index 0000000..94338e2
--- /dev/null
+++ b/contrib/java/generated/build.properties
@@ -0,0 +1,5 @@
+# Default path on Windows (maybe with an '(x86)' in there for good measure)
+#umundo.jar=C:\\Program Files\\uMundo\\share\\umundo\\lib\\umundo.jar
+
+jexl.jar=../libs/commons-jexl3-3.0.jar
+logging.jar=../libs/commons-logging-1.2.jar \ No newline at end of file
diff --git a/contrib/java/generated/build.xml b/contrib/java/generated/build.xml
new file mode 100644
index 0000000..087ee3e
--- /dev/null
+++ b/contrib/java/generated/build.xml
@@ -0,0 +1,35 @@
+<project name="java-tests" default="test-w3c">
+
+ <property environment="env"/>
+
+ <property file="build.properties" />
+ <property name="src" value="." />
+ <property name="common" value="../common" />
+ <property name="bin" value="bin" />
+
+ <target name="clean">
+ <delete dir="${bin}" />
+ </target>
+
+ <target name="compile">
+ <mkdir dir="${bin}" />
+ <javac destdir="${bin}" debuglevel="lines,vars,source" debug="on"
+ encoding="utf-8" includeantruntime="false" target="1.5" source="1.5">
+ <src path="${src}" />
+ <src path="${common}" />
+ <src path="${generated.dir}" />
+ <classpath>
+ <pathelement location="${logging.jar}" />
+ <pathelement location="${jexl.jar}" />
+ </classpath>
+ <include name="**/*.java" />
+ </javac>
+ </target>
+
+ <target name="test-w3c" depends="compile">
+ <java classpath="${jexl.jar}:${logging.jar}:${bin}:${generated.dir}" classname="org.uscxml.tests.gen.TestStateChart">
+ <arg value="${test.file}"/>
+ </java>
+ </target>
+
+</project> \ No newline at end of file
diff --git a/contrib/java/generated/org/uscxml/Data.java b/contrib/java/generated/org/uscxml/Data.java
new file mode 100644
index 0000000..c3dfe7d
--- /dev/null
+++ b/contrib/java/generated/org/uscxml/Data.java
@@ -0,0 +1,59 @@
+package org.uscxml;
+
+import java.lang.reflect.Field;
+
+import org.uscxml.Data.Type;
+
+public class Data {
+
+ public static enum Type {
+ VERBATIM,
+ INTERPRETED
+ }
+
+ public DataList getArray() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public void setAtom(String string) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void setType(Type interpreted) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public DataMap getCompound() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public void set(String name, Data jexlObjectAsData) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public String getAtom() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Type getType() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public int size() {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public StringVector getCompoundKeys() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
diff --git a/contrib/java/generated/org/uscxml/DataList.java b/contrib/java/generated/org/uscxml/DataList.java
new file mode 100644
index 0000000..f98d5f6
--- /dev/null
+++ b/contrib/java/generated/org/uscxml/DataList.java
@@ -0,0 +1,20 @@
+package org.uscxml;
+
+public class DataList {
+
+ public void add(Data jexlObjectAsData) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public int size() {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public Data get(int i) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
diff --git a/contrib/java/generated/org/uscxml/DataMap.java b/contrib/java/generated/org/uscxml/DataMap.java
new file mode 100644
index 0000000..ceed1ce
--- /dev/null
+++ b/contrib/java/generated/org/uscxml/DataMap.java
@@ -0,0 +1,20 @@
+package org.uscxml;
+
+public class DataMap {
+
+ public int size() {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public Data get(String object) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public void set(String name, Data jexlObjectAsData) {
+ // TODO Auto-generated method stub
+
+ }
+
+}
diff --git a/contrib/java/generated/org/uscxml/DataModel.java b/contrib/java/generated/org/uscxml/DataModel.java
new file mode 100644
index 0000000..8e12d19
--- /dev/null
+++ b/contrib/java/generated/org/uscxml/DataModel.java
@@ -0,0 +1,77 @@
+package org.uscxml;
+
+import org.uscxml.dm.jexl.Event;
+
+public class DataModel {
+
+ public long getLength(String expr) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public void setEvent(Event event) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void addExtension(DataModelExtension ext) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public StringList getNames() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public DataModel create() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public boolean isValidSyntax(String expr) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public void setEvent(org.uscxml.Event event) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public Data getAsData(String content) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Data evalAsData(String content) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public boolean evalAsBool(String expr) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public void setForeach(String item, String array, String index, long iteration) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void assign(String location, Data data) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void init(String location, Data data) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public boolean isDeclared(String expr) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+}
diff --git a/contrib/java/generated/org/uscxml/DataModelExtension.java b/contrib/java/generated/org/uscxml/DataModelExtension.java
new file mode 100644
index 0000000..fbb38f9
--- /dev/null
+++ b/contrib/java/generated/org/uscxml/DataModelExtension.java
@@ -0,0 +1,5 @@
+package org.uscxml;
+
+public class DataModelExtension {
+
+}
diff --git a/contrib/java/generated/org/uscxml/ErrorEvent.java b/contrib/java/generated/org/uscxml/ErrorEvent.java
new file mode 100644
index 0000000..699ddad
--- /dev/null
+++ b/contrib/java/generated/org/uscxml/ErrorEvent.java
@@ -0,0 +1,9 @@
+package org.uscxml;
+
+public class ErrorEvent extends Event {
+
+ public ErrorEvent(String string) {
+ // TODO Auto-generated constructor stub
+ }
+
+}
diff --git a/contrib/java/generated/org/uscxml/Event.java b/contrib/java/generated/org/uscxml/Event.java
new file mode 100644
index 0000000..9469b5f
--- /dev/null
+++ b/contrib/java/generated/org/uscxml/Event.java
@@ -0,0 +1,5 @@
+package org.uscxml;
+
+public class Event extends java.lang.RuntimeException {
+
+}
diff --git a/contrib/java/generated/org/uscxml/InterpreterException.java b/contrib/java/generated/org/uscxml/InterpreterException.java
new file mode 100644
index 0000000..b2baa99
--- /dev/null
+++ b/contrib/java/generated/org/uscxml/InterpreterException.java
@@ -0,0 +1,11 @@
+package org.uscxml;
+
+public class InterpreterException extends Exception {
+ private static final long serialVersionUID = -3534919496547591015L;
+
+ public InterpreterException(String name, String msg) {
+ super(msg);
+ }
+
+ public String name;
+}
diff --git a/contrib/java/generated/org/uscxml/InterpreterMonitor.java b/contrib/java/generated/org/uscxml/InterpreterMonitor.java
new file mode 100644
index 0000000..f67039f
--- /dev/null
+++ b/contrib/java/generated/org/uscxml/InterpreterMonitor.java
@@ -0,0 +1,65 @@
+package org.uscxml;
+
+public class InterpreterMonitor {
+
+ public void beforeExitingState(String stateId, String xpath, String stateXML) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void afterExitingState(String stateId, String xpath, String stateXML) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void beforeExecutingContent(String tagName, String xpath, String contentXML) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void afterExecutingContent(String tagName, String xpath, String contentXML) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void beforeUninvoking(String xpath, String invokeid, String invokerXML) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void afterUninvoking(String xpath, String invokeid, String invokerXML) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void beforeTakingTransition(String xpath, String source, StringList targets, String transitionXML) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void afterTakingTransition(String xpath, String source, StringList targets, String transitionXML) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void beforeEnteringState(String stateId, String xpath, String stateXML) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void afterEnteringState(String stateId, String xpath, String stateXML) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void beforeInvoking(String xpath, String invokeid, String invokerXML) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void afterInvoking(String xpath, String invokeid, String invokerXML) {
+ // TODO Auto-generated method stub
+
+ }
+
+}
diff --git a/contrib/java/generated/org/uscxml/StateChart.java b/contrib/java/generated/org/uscxml/StateChart.java
new file mode 100644
index 0000000..6b620ab
--- /dev/null
+++ b/contrib/java/generated/org/uscxml/StateChart.java
@@ -0,0 +1,222 @@
+package org.uscxml;
+
+import java.util.BitSet;
+import java.util.Deque;
+import java.util.List;
+import java.util.Map;
+
+/** Base class for generated StateCharts */
+
+public abstract class StateChart {
+
+ public enum InterpreterState {
+ USCXML_FINISHED,
+ USCXML_UNDEF,
+ USCXML_IDLE,
+ USCXML_INITIALIZED,
+ USCXML_INSTANTIATED,
+ USCXML_MICROSTEPPED,
+ USCXML_MACROSTEPPED,
+ USCXML_CANCELLED
+ }
+
+ public enum StateType {
+ USCXML_STATE_ATOMIC,
+ USCXML_STATE_PARALLEL,
+ USCXML_STATE_COMPOUND,
+ USCXML_STATE_FINAL,
+ USCXML_STATE_HISTORY_DEEP,
+ USCXML_STATE_HISTORY_SHALLOW,
+ USCXML_STATE_INITIAL,
+ USCXML_STATE_HAS_HISTORY
+ }
+
+ public enum TransitionType {
+ USCXML_TRANS_SPONTANEOUS,
+ USCXML_TRANS_TARGETLESS,
+ USCXML_TRANS_INTERNAL,
+ USCXML_TRANS_HISTORY,
+ USCXML_TRANS_INITIAL
+ }
+
+ public abstract class State {
+ String name;
+ int parent;
+ BitSet children;
+ BitSet completion;
+ BitSet ancestors;
+ Data data;
+ StateType type;
+
+ public abstract void onEntry() throws InterpreterException;
+ public abstract void onExit() throws InterpreterException;
+ public abstract void invoke(Invoke invoker, boolean invoke) throws InterpreterException;
+ }
+
+ public abstract class Transition {
+ int source;
+ BitSet target;
+ String event;
+ String condition;
+ TransitionType type;
+ BitSet conflicts;
+ BitSet exitSet;
+
+ public abstract boolean isEnabled();
+ public abstract boolean isMatched();
+ public abstract void onTransition();
+ }
+
+ public class Data {
+ String id;
+ String src;
+ String expr;
+ String content;
+ }
+
+ public class Assign {
+ String location;
+ String expr;
+ String content;
+ }
+
+ public class Foreach {
+ String array;
+ String item;
+ String index;
+ }
+
+ public class Param {
+ String name;
+ String expr;
+ String location;
+ }
+
+ public class DoneData {
+ int source;
+ String content;
+ String contentExpr;
+ List<Param> params;
+ }
+
+ public abstract class Invoke {
+ StateChart machine;
+ String type;
+ String typeExpr;
+ String src;
+ String srcExpr;
+ String id;
+ String idlocation;
+ String sourceName;
+ String namelist;
+ boolean autoForward;
+ String content;
+ String contentExpr;
+ List<Param> params;
+
+ public abstract void finalize();
+ }
+
+ public class Send {
+ String event;
+ String eventExpr;
+ String target;
+ String targetExpr;
+ String type;
+ String typeExpr;
+ String id;
+ String idlocation;
+ String delay;
+ String delayExpr;
+ String namelist;
+ String content;
+ String contentExpr;
+ List<Param> params;
+ }
+
+ public List<Transition> transitions;
+ public List<State> states;
+
+ public Deque<Object> externalQueue;
+ public Deque<Object> internalQueue;
+
+ protected InterpreterState state = InterpreterState.USCXML_UNDEF;
+ protected Object event;
+
+ protected BitSet flags;
+ protected BitSet config;
+ protected BitSet history;
+ protected BitSet invocations;
+ protected BitSet initializedData;
+
+ protected Map<String, Integer> stateNamesToIndex;
+
+ public InterpreterState step() throws org.uscxml.InterpreterException {
+ return step(0);
+ }
+
+ public InterpreterState step(long blockMs) throws org.uscxml.InterpreterException {
+ /** Here you would implement microstep(T) as in the book chapter */
+
+
+ /** Just to silence the compiler warning */
+ if (true) throw new InterpreterException("", "");
+ return state;
+ }
+
+ public void cancel() {
+ state = InterpreterState.USCXML_CANCELLED;
+ }
+
+ public void reset() {
+ history.clear();
+ config.clear();
+ flags.clear();
+ // @TODO: uninvoke any invokers
+ invocations.clear();
+ }
+
+ public InterpreterState getState() { return state; }
+
+ public boolean isInState(String stateId) {
+ if (!stateNamesToIndex.containsKey(stateId))
+ return false;
+ return config.get((int) stateNamesToIndex.get(stateId));
+ }
+
+ public void receive(Object event) {
+ externalQueue.addLast(event);
+ }
+
+ protected Object dequeueInternal() {
+ try {
+ return internalQueue.removeLast();
+ } catch(Exception e) {
+ return null;
+ }
+ }
+
+ protected Object dequeueExternal() {
+ try {
+ return externalQueue.removeLast();
+ } catch(Exception e) {
+ return null;
+ }
+ }
+
+ public abstract boolean isTrue(String expression);
+ public abstract void raiseDoneEvent(State state, DoneData doneData);
+
+ public abstract void execContentLog(String label, String expression);
+ public abstract void execContentRaise(String event);
+ public abstract void execContentSend(Send send);
+ public abstract void execContentForeachInit(Foreach foreach);
+ public abstract void execContentForeachNext(Foreach foreach);
+ public abstract void execContentForeachDone(Foreach foreach);
+ public abstract void execContentAssign(Assign assign);
+ public abstract void execContentInit(Data data);
+ public abstract void execContentCancel(String sendId, String sendIdExpr);
+ public abstract void execContentScript(String src, String content);
+ public abstract void execContentFinalize(Invoke invoker, Object event);
+
+} \ No newline at end of file
diff --git a/contrib/java/generated/org/uscxml/StateChartJava5Impl.java b/contrib/java/generated/org/uscxml/StateChartJava5Impl.java
new file mode 100644
index 0000000..381a214
--- /dev/null
+++ b/contrib/java/generated/org/uscxml/StateChartJava5Impl.java
@@ -0,0 +1,89 @@
+package org.uscxml;
+
+/**
+ * @author sradomski
+ *
+ * This is the base class inheriting the abstract StateChart class
+ * It is supposed to realize the callbacks with the language features
+ * found in Java5 only.
+ */
+
+public class StateChartJava5Impl extends StateChart {
+
+ @Override
+ public boolean isTrue(String expression) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public void raiseDoneEvent(State state, DoneData doneData) {
+ // TODO Auto-generated method stub
+ }
+
+ @Override
+ public void execContentLog(String label, String expression) {
+ // TODO Auto-generated method stub
+ }
+
+ @Override
+ public void execContentRaise(String event) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void execContentSend(Send send) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void execContentForeachInit(Foreach foreach) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void execContentForeachNext(Foreach foreach) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void execContentForeachDone(Foreach foreach) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void execContentAssign(Assign assign) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void execContentInit(Data data) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void execContentCancel(String sendId, String sendIdExpr) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void execContentScript(String src, String content) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void execContentFinalize(Invoke invoker, Object event) {
+ // TODO Auto-generated method stub
+
+ }
+
+}
diff --git a/contrib/java/generated/org/uscxml/StringList.java b/contrib/java/generated/org/uscxml/StringList.java
new file mode 100644
index 0000000..6b37b36
--- /dev/null
+++ b/contrib/java/generated/org/uscxml/StringList.java
@@ -0,0 +1,10 @@
+package org.uscxml;
+
+public class StringList {
+
+ public void add(String string) {
+ // TODO Auto-generated method stub
+
+ }
+
+}
diff --git a/contrib/java/generated/org/uscxml/StringVector.java b/contrib/java/generated/org/uscxml/StringVector.java
new file mode 100644
index 0000000..d760a37
--- /dev/null
+++ b/contrib/java/generated/org/uscxml/StringVector.java
@@ -0,0 +1,15 @@
+package org.uscxml;
+
+public class StringVector {
+
+ public int size() {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public String get(int i) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
diff --git a/contrib/java/generated/org/uscxml/dm/jexl/DataModelExtension.java b/contrib/java/generated/org/uscxml/dm/jexl/DataModelExtension.java
new file mode 100644
index 0000000..0f70395
--- /dev/null
+++ b/contrib/java/generated/org/uscxml/dm/jexl/DataModelExtension.java
@@ -0,0 +1,5 @@
+package org.uscxml.dm.jexl;
+
+public class DataModelExtension {
+
+}
diff --git a/contrib/java/generated/org/uscxml/dm/jexl/Event.java b/contrib/java/generated/org/uscxml/dm/jexl/Event.java
new file mode 100644
index 0000000..aa1eaae
--- /dev/null
+++ b/contrib/java/generated/org/uscxml/dm/jexl/Event.java
@@ -0,0 +1,5 @@
+package org.uscxml.dm.jexl;
+
+public class Event {
+
+}
diff --git a/test/bindings/java/org/uscxml/examples/hello-world.xml b/contrib/java/generated/org/uscxml/examples/hello-world.xml
index 3ac168c..3ac168c 100644
--- a/test/bindings/java/org/uscxml/examples/hello-world.xml
+++ b/contrib/java/generated/org/uscxml/examples/hello-world.xml
diff --git a/contrib/java/generated/org/uscxml/tests/gen/TestStateChart.java b/contrib/java/generated/org/uscxml/tests/gen/TestStateChart.java
new file mode 100644
index 0000000..d459c7e
--- /dev/null
+++ b/contrib/java/generated/org/uscxml/tests/gen/TestStateChart.java
@@ -0,0 +1,27 @@
+package org.uscxml.tests.gen;
+
+import org.uscxml.InterpreterException;
+import org.uscxml.StateChart;
+import org.uscxml.gen.TestStateChartBase;
+
+public class TestStateChart extends TestStateChartBase {
+
+ public static void main(String[] args) {
+ System.out.println("Testing " + args[0]);
+
+ TestStateChart machine = new TestStateChart();
+ try {
+ while(machine.step() != StateChart.InterpreterState.USCXML_FINISHED) {
+ // here we could inspect the state chart after a step
+ }
+ // when we arrive here, the state chart is finished
+ assert(machine.isInState("pass"));
+ System.out.println("PASSED");
+ System.exit(0); // EXIT_SUCCESS
+ } catch (InterpreterException e) {
+ System.out.println("FAILED");
+ System.exit(-1); // EXIT_FAILURE
+ }
+ }
+
+}
diff --git a/test/bindings/java/libs/commons-jexl3-3.0.jar b/contrib/java/libs/commons-jexl3-3.0.jar
index 94566bf..94566bf 100644
--- a/test/bindings/java/libs/commons-jexl3-3.0.jar
+++ b/contrib/java/libs/commons-jexl3-3.0.jar
Binary files differ
diff --git a/test/bindings/java/libs/commons-logging-1.2.jar b/contrib/java/libs/commons-logging-1.2.jar
index 93a3b9f..93a3b9f 100644
--- a/test/bindings/java/libs/commons-logging-1.2.jar
+++ b/contrib/java/libs/commons-logging-1.2.jar
Binary files differ
diff --git a/src/uscxml/transform/ChartToJava.cpp b/src/uscxml/transform/ChartToJava.cpp
index da9c4d6..f31db71 100644
--- a/src/uscxml/transform/ChartToJava.cpp
+++ b/src/uscxml/transform/ChartToJava.cpp
@@ -42,6 +42,59 @@ ChartToJava::~ChartToJava() {
}
void ChartToJava::writeTo(std::ostream& stream) {
+ std::string className;
+ std::string packageName = "org.uscxml.gen";
+
+ if (_extensions.find("packageName") != _extensions.end()) {
+ packageName = _extensions.equal_range("packageName").first->second;
+ }
+
+ if (_extensions.find("outputFile") != _extensions.end()) {
+ URL outputFileURL(_extensions.equal_range("outputFile").first->second);
+ className = outputFileURL.pathComponents().back();
+ } else if (_baseURL.pathComponents().size() > 0) {
+ className = _baseURL.pathComponents().back();
+ } else {
+ className = "StateChartBase";
+ }
+
+ std::string javaVersion = "5";
+ if (_extensions.find("javaVersion") != _extensions.end()) {
+ javaVersion = _extensions.equal_range("javaVersion").first->second;
+ }
+ std::string baseClass = "StateChartJava" + javaVersion + "Impl";
+
+
+ size_t dotPos = std::string::npos;
+ if ((dotPos = className.find(".")) != std::string::npos) {
+ className = className.substr(0, dotPos);
+ }
+
+ stream << "package " << packageName << ";" << std::endl;
+ stream << std::endl;
+
+ stream << "/**" << std::endl;
+ stream << " Generated from source:" << std::endl;
+ stream << " " << (std::string)_baseURL << std::endl;
+ stream << "*/" << std::endl;
+ stream << std::endl;
+
+
+ stream << std::endl;
+ stream << "import java.util.ArrayList;" << std::endl;
+ stream << "import java.util.HashMap;" << std::endl;
+ stream << "import org.uscxml.*;" << std::endl;
+ stream << std::endl;
+ stream << "public abstract class " << className << " extends " << baseClass << " {" << std::endl;
+ stream << std::endl;
+ stream << " public " << className << "() {" << std::endl;
+ stream << " transitions = new ArrayList<Transition>();" << std::endl;
+ stream << " states = new ArrayList<State>();" << std::endl;
+ stream << " stateNamesToIndex = new HashMap<String, Integer>();" << std::endl;
+ stream << " /* TODO: initialize all members */" << std::endl;
+ stream << " }" << std::endl;
+ stream << "}" << std::endl;
+
}
-} \ No newline at end of file
+}
diff --git a/src/uscxml/transform/ChartToVHDL.cpp b/src/uscxml/transform/ChartToVHDL.cpp
index cbd46ef..9ef2f75 100644
--- a/src/uscxml/transform/ChartToVHDL.cpp
+++ b/src/uscxml/transform/ChartToVHDL.cpp
@@ -90,7 +90,7 @@ void ChartToVHDL::findEvents() {
// Calculate needed bit size for the event fifo
// --> |log2(n)| +1 with n is number of events
// we do not add +1 because the std_logic_vector startes with 0
- _eventBitSize = ceil(abs(log2(_eventNames.size())));
+ _eventBitSize = ceil(std::abs(log2(_eventNames.size())));
_execContent = DOMUtils::inDocumentOrder({
XML_PREFIX(_scxml).str() + "raise",
@@ -1605,4 +1605,4 @@ void ChartToVHDL::writeSystemSignalMapping(std::ostream &stream) {
}
-} \ No newline at end of file
+}
diff --git a/src/uscxml/transform/Transformer.h b/src/uscxml/transform/Transformer.h
index 6a9f2f3..d3c60e8 100644
--- a/src/uscxml/transform/Transformer.h
+++ b/src/uscxml/transform/Transformer.h
@@ -31,7 +31,7 @@ class USCXML_API TransformerImpl {
public:
TransformerImpl(const Interpreter& other) {
interpreter = other; // we need to keep a reference to retain the document!
- other.getImpl()->init();
+ other.getImpl()->setupDOM();
_document = other.getImpl()->_document;
_baseURL = other.getImpl()->_baseURL;
_scxml = other.getImpl()->_scxml;
diff --git a/src/uscxml/util/String.cpp b/src/uscxml/util/String.cpp
index 95d69e9..7334d73 100644
--- a/src/uscxml/util/String.cpp
+++ b/src/uscxml/util/String.cpp
@@ -90,7 +90,8 @@ std::list<std::string> tokenize(const std::string &line, const char sep, bool tr
i++; // skip multiple occurences of seperator and whitespaces
}
start = i;
- } else if (i + 1 == line.size()) {
+ }
+ if (i + 1 == line.size()) {
tokens.push_back(line.substr(start, i + 1 - start));
}
}
@@ -224,4 +225,4 @@ NEXT_DESC:
}
-} \ No newline at end of file
+}
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index f07df8d..850aa21 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -1,23 +1,23 @@
set(TEST_TIMEOUT 30)
set(TEST_BENCHMARK_ITERATIONS 1000)
-find_program(SPIN spin)
-find_program(CC gcc)
-find_program(CXX g++)
-find_program(ANT_EXECUTABLE ant)
-find_program(PERL perl)
-find_program(GHDL ghdl)
+find_program(SPIN_BIN spin)
+find_program(CC_BIN gcc)
+find_program(CXX_BIN g++)
+find_program(ANT_BIN ant)
+find_program(PERL_BIN perl)
+find_program(GHDL_BIN ghdl)
set(GHDL_VERSION "0")
-if (GHDL)
- execute_process(COMMAND ${GHDL} -v OUTPUT_VARIABLE GHDL_VERSION_OUT)
+if (GHDL_BIN)
+ execute_process(COMMAND ${GHDL_BIN} -v OUTPUT_VARIABLE GHDL_VERSION_OUT)
string(REGEX REPLACE "^GHDL " "" GHDL_VERSION_OUT ${GHDL_VERSION_OUT})
string(REGEX MATCH "^([0-9]+\\.[0-9]+)" GHDL_VERSION ${GHDL_VERSION_OUT})
if (${GHDL_VERSION} VERSION_LESS "0.32")
message(WARNING "GHDL version 0.32 required - ${GHDL_VERSION} found, not building VHDL tests")
message(WARNING "Try https://github.com/tgingold/ghdl/releases/tag/v0.33")
- unset(GHDL)
+ unset(GHDL_BIN)
endif ()
endif ()
@@ -110,8 +110,8 @@ foreach (USCXML_HEADER ${USCXML_PUBLIC_HEADERS})
add_test(NAME "header/${USCXML_REL_HEADER}"
COMMAND ${CMAKE_COMMAND}
-DTESTFILE:FILEPATH=${CMAKE_CURRENT_BINARY_DIR}/headers/${USCXML_REL_HEADER}.cpp
- -DCC_BIN:FILEPATH=${CC}
- -DCXX_BIN:FILEPATH=${CXX}
+ -DCC_BIN:FILEPATH=${CC_BIN}
+ -DCXX_BIN:FILEPATH=${CXX_BIN}
-DPROJECT_SOURCE_DIR=${PROJECT_SOURCE_DIR}
-DUSCXML_PLATFORM_ID=${USCXML_PLATFORM_ID}
-DCMAKE_BINARY_DIR=${CMAKE_BINARY_DIR}
@@ -123,9 +123,9 @@ foreach (USCXML_HEADER ${USCXML_PUBLIC_HEADERS})
endforeach ()
# debugger REST API
-if (PERL)
+if (PERL_BIN)
add_test(NAME "general/test-debug-api"
- COMMAND ${PERL}
+ COMMAND ${PERL_BIN}
"${PROJECT_SOURCE_DIR}/test/src/test-http-debugger.pl"
"${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/uscxml-browser"
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/test/src
@@ -247,81 +247,84 @@ if (NOT BUILD_MINIMAL)
# more properties for standard tests
- else ()
-
- if (TEST_TYPE MATCHES "^gen.*")
- get_filename_component(TEST_TARGET ${TEST_TYPE} NAME)
- if (TEST_TYPE MATCHES "^gen/${TEST_TARGET}")
-
- if (TEST_TARGET MATCHES "vhdl" AND "${GHDL_VERSION}" VERSION_LESS "0.32")
- # do nothing
- else ()
-
- # generate native interpreters
- add_test(NAME "${TEST_NAME}"
- COMMAND ${CMAKE_COMMAND}
- -DOUTDIR:FILEPATH=${CMAKE_CURRENT_BINARY_DIR}/${TEST_CLASS}
- -DTESTFILE:FILEPATH=${W3C_TEST}
- -DTARGETLANG=${TEST_TARGET}
- -DJSC_LIBRARY:FILEPATH=${JSC_LIBRARY}
- -DUSCXML_TRANSFORM_BIN:FILEPATH=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/uscxml-transform
- -DCC_BIN:FILEPATH=${CC}
- -DCXX_BIN:FILEPATH=${CXX}
- -DGHDL_BIN:FILEPATH=${GHDL}
- -DPROJECT_SOURCE_DIR=${PROJECT_SOURCE_DIR}
- -DUSCXML_PLATFORM_ID=${USCXML_PLATFORM_ID}
- -DCMAKE_BINARY_DIR=${CMAKE_BINARY_DIR}
- -DPROJECT_BINARY_DIR=${PROJECT_BINARY_DIR}
- -DXercesC_INCLUDE_DIRS=${XercesC_INCLUDE_DIRS}
- -DURIPARSER_INCLUDE_DIR=${URIPARSER_INCLUDE_DIR}
- -DLIBEVENT_INCLUDE_DIR=${LIBEVENT_INCLUDE_DIR}
- -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
- -DSCAFFOLDING_FOR_GENERATED_C:FILEPATH=${CMAKE_CURRENT_SOURCE_DIR}/src/test-gen-c.cpp
- -P ${CMAKE_CURRENT_SOURCE_DIR}/ctest/scripts/run_generated_test.cmake)
- set_tests_properties("${TEST_NAME}" PROPERTIES DEPENDS uscxml-transform)
- set(TEST_ADDED ON)
- endif()
- endif ()
-
- elseif (TEST_TYPE MATCHES "^binding.*")
- get_filename_component(TEST_LANG ${TEST_TYPE} NAME)
-
- if (TARGET jar AND TEST_LANG STREQUAL "java")
- add_test(NAME "${TEST_NAME}"
- COMMAND
- ${ANT_EXECUTABLE}
- -Dtest.file=${W3C_TEST}
- -Duscxml.jar=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/uscxml.jar
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bindings/java
- )
- set_tests_properties("${TEST_NAME}" PROPERTIES DEPENDS jar)
- set(TEST_ADDED ON)
- endif ()
-
- elseif (TEST_TYPE MATCHES "^spin.*")
-
- if (NOT ${TEST_DATAMODEL} STREQUAL "promela")
+ elseif (TEST_TYPE MATCHES "^gen.*")
+ # tests for generated languages via ctest/scripts/test_generated_${TEST_TARGET}.cmake
+ get_filename_component(TEST_TARGET ${TEST_TYPE} NAME)
+ if (TEST_TYPE MATCHES "^gen/${TEST_TARGET}")
+
+ # a few necessary preconditions per target language
+ if (TEST_TARGET MATCHES "vhdl" AND "${GHDL_VERSION}" VERSION_LESS "0.32")
+ break()
+ endif()
+
+ if (TEST_TARGET MATCHES "java" AND NOT ANT_BIN)
break()
- endif ()
+ endif()
+ # call test script
add_test(NAME "${TEST_NAME}"
COMMAND ${CMAKE_COMMAND}
- -DOUTDIR:FILEPATH=${CMAKE_CURRENT_BINARY_DIR}/promela
+ -DOUTDIR:FILEPATH=${CMAKE_CURRENT_BINARY_DIR}/${TEST_CLASS}
-DTESTFILE:FILEPATH=${W3C_TEST}
+ -DTARGETLANG=${TEST_TARGET}
+ -DJSC_LIBRARY:FILEPATH=${JSC_LIBRARY}
-DUSCXML_TRANSFORM_BIN:FILEPATH=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/uscxml-transform
- -DSPIN_BIN:FILEPATH=${SPIN}
- -DCC_BIN:FILEPATH=${CC}
- -P ${CMAKE_CURRENT_SOURCE_DIR}/ctest/scripts/run_promela_test.cmake)
- set_tests_properties("${TEST_NAME}" PROPERTIES PASS_REGULAR_EXPRESSION "depth reached [0-9]+, errors: 0")
- set_tests_properties("${TEST_NAME}" PROPERTIES FAIL_REGULAR_EXPRESSION "depth reached [0-9]+, errors: [1-9]+")
+ -DANT_BIN:FILEPATH=${ANT_BIN}
+ -DCC_BIN:FILEPATH=${CC_BIN}
+ -DCXX_BIN:FILEPATH=${CXX_BIN}
+ -DGHDL_BIN:FILEPATH=${GHDL_BIN}
+ -DPROJECT_SOURCE_DIR=${PROJECT_SOURCE_DIR}
+ -DUSCXML_PLATFORM_ID=${USCXML_PLATFORM_ID}
+ -DCMAKE_BINARY_DIR=${CMAKE_BINARY_DIR}
+ -DPROJECT_BINARY_DIR=${PROJECT_BINARY_DIR}
+ -DXercesC_INCLUDE_DIRS=${XercesC_INCLUDE_DIRS}
+ -DURIPARSER_INCLUDE_DIR=${URIPARSER_INCLUDE_DIR}
+ -DLIBEVENT_INCLUDE_DIR=${LIBEVENT_INCLUDE_DIR}
+ -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
+ -DSCAFFOLDING_FOR_GENERATED_C:FILEPATH=${CMAKE_CURRENT_SOURCE_DIR}/src/test-gen-c.cpp
+ -P ${CMAKE_CURRENT_SOURCE_DIR}/ctest/scripts/test_generated_${TEST_TARGET}.cmake)
+ set_tests_properties("${TEST_NAME}" PROPERTIES DEPENDS uscxml-transform)
set(TEST_ADDED ON)
+ endif()
- elseif (TEST_TYPE MATCHES "^fsm.*")
+ elseif (TEST_TYPE MATCHES "^binding.*")
+ get_filename_component(TEST_LANG ${TEST_TYPE} NAME)
- add_test("${TEST_NAME}" ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test-state-pass -f ${W3C_TEST})
+ if (TARGET jar AND TEST_LANG STREQUAL "java")
+ add_test(NAME "${TEST_NAME}"
+ COMMAND
+ ${ANT_BIN}
+ -Dtest.file=${W3C_TEST}
+ -Duscxml.jar=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/uscxml.jar
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bindings/java
+ )
+ set_tests_properties("${TEST_NAME}" PROPERTIES DEPENDS jar)
set(TEST_ADDED ON)
+ endif ()
+
+ elseif (TEST_TYPE MATCHES "^spin.*")
+ if (NOT ${TEST_DATAMODEL} STREQUAL "promela")
+ break()
endif ()
+
+ add_test(NAME "${TEST_NAME}"
+ COMMAND ${CMAKE_COMMAND}
+ -DOUTDIR:FILEPATH=${CMAKE_CURRENT_BINARY_DIR}/promela
+ -DTESTFILE:FILEPATH=${W3C_TEST}
+ -DUSCXML_TRANSFORM_BIN:FILEPATH=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/uscxml-transform
+ -DSPIN_BIN:FILEPATH=${SPIN_BIN}
+ -DCC_BIN:FILEPATH=${CC_BIN}
+ -P ${CMAKE_CURRENT_SOURCE_DIR}/ctest/scripts/run_promela_test.cmake)
+ set_tests_properties("${TEST_NAME}" PROPERTIES PASS_REGULAR_EXPRESSION "depth reached [0-9]+, errors: 0")
+ set_tests_properties("${TEST_NAME}" PROPERTIES FAIL_REGULAR_EXPRESSION "depth reached [0-9]+, errors: [1-9]+")
+ set(TEST_ADDED ON)
+
+ elseif (TEST_TYPE MATCHES "^fsm.*")
+
+ add_test("${TEST_NAME}" ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test-state-pass -f ${W3C_TEST})
+ set(TEST_ADDED ON)
+
endif ()
if (TEST_ADDED)
diff --git a/test/bindings/java/build.properties b/test/bindings/java/build.properties
deleted file mode 100644
index dd0fe62..0000000
--- a/test/bindings/java/build.properties
+++ /dev/null
@@ -1,9 +0,0 @@
-# Default path on Windows (maybe with an '(x86)' in there for good measure)
-#umundo.jar=C:\\Program Files\\uMundo\\share\\umundo\\lib\\umundo.jar
-
-# Default path on MacOSX and Linux
-uscxml.library.path=/usr/local/share/uscxml/bindings/java
-uscxml.jar=/usr/local/share/uscxml/bindings/uscxml.jar
-
-jexl.jar=libs/commons-jexl3-3.0.jar
-logging.jar=libs/commons-logging-1.2.jar \ No newline at end of file
diff --git a/test/bindings/java/build.xml b/test/bindings/java/build.xml
deleted file mode 100644
index 2f1f362..0000000
--- a/test/bindings/java/build.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<project name="java-tests" default="test-w3c">
-
- <property environment="env"/>
-
- <property file="build.properties" />
- <property name="src" value="." />
- <property name="bin" value="bin" />
- <!-- <property name="test.file" value="..." /> -->
-
- <!-- Allow to override actual value with environment .. yes ant sucks -->
- <condition property="real.uscxml.jar" value="${env.USCXML_JAVA_JAR}" else="${uscxml.jar}">
- <isset property="env.USCXML_JAVA_JAR" />
- </condition>
-
- <target name="clean">
- <delete dir="${bin}" />
- </target>
-
- <target name="compile">
- <mkdir dir="${bin}" />
- <javac destdir="${bin}" debuglevel="lines,vars,source" debug="on"
- encoding="utf-8" includeantruntime="false">
- <src path="${src}" />
- <classpath>
- <pathelement location="${real.uscxml.jar}" />
- <pathelement location="${jexl.jar}" />
- <pathelement location="${logging.jar}" />
- </classpath>
- <include name="**/*.java" />
- </javac>
- </target>
-
- <target name="test-w3c">
- <antcall target="test-w3c-jexl" />
-
- </target>
-
- <target name="test-w3c-jexl" depends="compile">
- <java classpath="${real.uscxml.jar}:${jexl.jar}:${logging.jar}:${bin}" classname="org.uscxml.tests.JexlDataModelTest">
- <arg value="${test.file}"/>
- </java>
- </target>
-</project> \ No newline at end of file
diff --git a/test/bindings/java/org/uscxml/apache/commons/scxml2/Context.java b/test/bindings/java/org/uscxml/apache/commons/scxml2/Context.java
deleted file mode 100644
index a0208c9..0000000
--- a/test/bindings/java/org/uscxml/apache/commons/scxml2/Context.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package org.uscxml.apache.commons.scxml2;
-
-import org.uscxml.DataModel;
-
-public class Context {
- public DataModel dm = null;
-}
diff --git a/test/bindings/java/org/uscxml/apache/commons/scxml2/Evaluator.java b/test/bindings/java/org/uscxml/apache/commons/scxml2/Evaluator.java
deleted file mode 100644
index 5bd5642..0000000
--- a/test/bindings/java/org/uscxml/apache/commons/scxml2/Evaluator.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package org.uscxml.apache.commons.scxml2;
-
-public abstract class Evaluator {
-
- public abstract Context newContext(Object object);
-
-}
diff --git a/test/bindings/java/org/uscxml/apache/commons/scxml2/JexlEvaluator.java b/test/bindings/java/org/uscxml/apache/commons/scxml2/JexlEvaluator.java
deleted file mode 100644
index 127bed3..0000000
--- a/test/bindings/java/org/uscxml/apache/commons/scxml2/JexlEvaluator.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package org.uscxml.apache.commons.scxml2;
-
-import org.uscxml.Factory;
-import org.uscxml.dm.jexl.JexlDataModel;
-
-public class JexlEvaluator extends Evaluator {
-
- public JexlEvaluator() {
-
- }
-
- @Override
- public Context newContext(Object object) {
- // TODO Auto-generated method stub
- Context ctx = new Context();
- ctx.dm = new JexlDataModel();
- return ctx;
- }
-}
diff --git a/test/bindings/java/org/uscxml/apache/commons/scxml2/SCXML.java b/test/bindings/java/org/uscxml/apache/commons/scxml2/SCXML.java
deleted file mode 100644
index 67e5b1f..0000000
--- a/test/bindings/java/org/uscxml/apache/commons/scxml2/SCXML.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package org.uscxml.apache.commons.scxml2;
-
-import java.net.URL;
-
-public class SCXML {
- public URL url = null;
-
-}
diff --git a/test/bindings/java/org/uscxml/apache/commons/scxml2/SCXMLExecutor.java b/test/bindings/java/org/uscxml/apache/commons/scxml2/SCXMLExecutor.java
deleted file mode 100644
index 704e897..0000000
--- a/test/bindings/java/org/uscxml/apache/commons/scxml2/SCXMLExecutor.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package org.uscxml.apache.commons.scxml2;
-
-import java.net.URL;
-
-import org.uscxml.ActionLanguage;
-import org.uscxml.Factory;
-import org.uscxml.Interpreter;
-import org.uscxml.InterpreterException;
-import org.uscxml.InterpreterState;
-import org.uscxml.helper.TestMonitor;
-
-public class SCXMLExecutor {
-
- public Interpreter interpreter = null;
- public URL sourceURL = null;
- public ActionLanguage al = new ActionLanguage();
-
- public SCXMLExecutor(Evaluator evaluator, Object object, SimpleErrorReporter simpleErrorReporter) {
- // TODO Auto-generated constructor stub
- }
-
- public void setStateMachine(SCXML scxml) {
- sourceURL = scxml.url;
- }
-
- public void setRootContext(Context rootContext) {
- al.setDataModel(rootContext.dm);
- }
-
- public void go() {
- try {
- interpreter = Interpreter.fromURL(sourceURL.toString());
- interpreter.setActionLanguage(al);
-
- TestMonitor tm = new TestMonitor();
- interpreter.addMonitor(tm);
-
- InterpreterState state = InterpreterState.USCXML_UNDEF;
- while(state != InterpreterState.USCXML_FINISHED) {
- interpreter.step();
- }
-
- } catch (InterpreterException e) {
- e.printStackTrace();
- }
-
- }
-
-}
diff --git a/test/bindings/java/org/uscxml/apache/commons/scxml2/SCXMLReader.java b/test/bindings/java/org/uscxml/apache/commons/scxml2/SCXMLReader.java
deleted file mode 100644
index 45c2a54..0000000
--- a/test/bindings/java/org/uscxml/apache/commons/scxml2/SCXMLReader.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package org.uscxml.apache.commons.scxml2;
-
-import java.net.URL;
-
-public class SCXMLReader {
-
- public static SCXML read(URL scxml) {
- SCXML foo = new SCXML();
- foo.url = scxml;
- return foo;
- }
-
-}
diff --git a/test/bindings/java/org/uscxml/apache/commons/scxml2/SimpleErrorReporter.java b/test/bindings/java/org/uscxml/apache/commons/scxml2/SimpleErrorReporter.java
deleted file mode 100644
index 06187f8..0000000
--- a/test/bindings/java/org/uscxml/apache/commons/scxml2/SimpleErrorReporter.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package org.uscxml.apache.commons.scxml2;
-
-public class SimpleErrorReporter {
-
-}
diff --git a/test/bindings/java/org/uscxml/examples/ApacheCommonsAPI.java b/test/bindings/java/org/uscxml/examples/ApacheCommonsAPI.java
deleted file mode 100644
index 4cf3de4..0000000
--- a/test/bindings/java/org/uscxml/examples/ApacheCommonsAPI.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package org.uscxml.examples;
-
-import java.net.URL;
-
-//import org.uscxml.apache.commons.scxml2.*;
-import org.apache.commons.scxml2.*;
-import org.apache.commons.scxml2.env.SimpleErrorReporter;
-import org.apache.commons.scxml2.env.jexl.JexlEvaluator;
-import org.apache.commons.scxml2.io.SCXMLReader;
-import org.apache.commons.scxml2.model.SCXML;
-
-public class ApacheCommonsAPI {
-
- // SCXML model source URL
- private static final URL SCXML = ApacheCommonsAPI.class.getResource("hello-world.xml");
-
- public static void main(String [] args) throws Exception {
- String uSCXMLLibPath = "/Users/sradomski/Documents/TK/Code/uscxml/build/cli/lib/libuscxmlNativeJava.jnilib";
- if (System.getenv().containsKey("USCXML_JAVA_LIB")) {
- uSCXMLLibPath = System.getenv("USCXML_JAVA_LIB");
- }
-
- System.load(uSCXMLLibPath);
-
-
- // evaluator instance which is used by SCXML engine to evaluate expressions in SCXML
- Evaluator evaluator = new JexlEvaluator();
- // engine to execute the scxml instance
- SCXMLExecutor executor = new SCXMLExecutor(evaluator, null, new SimpleErrorReporter());
-
- // parse SCXML URL into SCXML model
- SCXML scxml = SCXMLReader.read(SCXML);
- // set state machine (scxml instance) to execute
- executor.setStateMachine(scxml);
-
- // create root context storing variables and being used by evaluator
- Context rootContext = evaluator.newContext(null);
- // set the root context for the engine
- executor.setRootContext(rootContext);
-
- // initiate the execution of the state machine
- executor.go();
- }
-
-}
diff --git a/test/bindings/java/org/uscxml/examples/BasicExample.java b/test/bindings/java/org/uscxml/examples/BasicExample.java
deleted file mode 100644
index 129a116..0000000
--- a/test/bindings/java/org/uscxml/examples/BasicExample.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package org.uscxml.examples;
-
-import org.uscxml.Interpreter;
-import org.uscxml.InterpreterException;
-import org.uscxml.InterpreterState;
-
-public class BasicExample {
-
- public static void main(String[] args) {
-
- String uSCXMLLibPath = "/Users/sradomski/Documents/TK/Code/uscxml/build/cli/lib/libuscxmlNativeJava.jnilib";
- if (System.getenv().containsKey("USCXML_JAVA_LIB")) {
- uSCXMLLibPath = System.getenv("USCXML_JAVA_LIB");
- }
-
- System.load(uSCXMLLibPath);
-
- try {
- Interpreter scxml = Interpreter.fromURL("https://raw.githubusercontent.com/tklab-tud/uscxml/master/test/w3c/null/test436.scxml");
- InterpreterState state = InterpreterState.USCXML_UNDEF;
- while((state = scxml.step()) != InterpreterState.USCXML_FINISHED) {
- switch (state) {
- case USCXML_FINISHED:
- case USCXML_UNDEF:
- case USCXML_IDLE:
- case USCXML_INITIALIZED:
- case USCXML_INSTANTIATED:
- case USCXML_MICROSTEPPED:
- case USCXML_MACROSTEPPED:
- case USCXML_CANCELLED:
- break;
- default:
- break;
- }
- }
- System.out.println("Machine finished");
-
- } catch (InterpreterException e) {
- e.printStackTrace();
- System.exit(-1);
- }
- System.exit(0);
-
- }
-
-}
diff --git a/test/bindings/java/org/uscxml/examples/DataModelExample.java b/test/bindings/java/org/uscxml/examples/DataModelExample.java
deleted file mode 100644
index bba64eb..0000000
--- a/test/bindings/java/org/uscxml/examples/DataModelExample.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package org.uscxml.examples;
-
-import java.io.File;
-import java.net.MalformedURLException;
-
-import org.uscxml.Factory;
-import org.uscxml.Interpreter;
-import org.uscxml.InterpreterException;
-import org.uscxml.InterpreterState;
-import org.uscxml.dm.jexl.JexlDataModel;
-import org.uscxml.helper.TestMonitor;
-
-public class DataModelExample {
-
- public static void main(String[] args) {
- String uSCXMLLibPath = "/Users/sradomski/Documents/TK/Code/uscxml/build/cli/lib/libuscxmlNativeJava.jnilib";
- if (System.getenv().containsKey("USCXML_JAVA_LIB")) {
- uSCXMLLibPath = System.getenv("USCXML_JAVA_LIB");
- }
-
- System.load(uSCXMLLibPath);
-
- JexlDataModel jdm = new JexlDataModel();
- Factory.getInstance().registerDataModel(jdm);;
-
- TestMonitor tm = new TestMonitor();
-
- File folder = new File("/Users/sradomski/Documents/TK/Code/uscxml/test/w3c/jexl");
- File[] listOfFiles = folder.listFiles();
-
- try {
- for (File file : listOfFiles) {
- if (!file.getName().endsWith(".scxml"))
- continue;
- String testName = file.toURI().toURL().toString();
- System.out.println(testName);
-
- Interpreter scxml = Interpreter.fromURL(testName);
-// scxml.setMonitor(tm);
-
- while(scxml.step() != InterpreterState.USCXML_FINISHED) {}
-
- if (!scxml.isInState("pass")) {
- System.out.println("FAIL: " + testName);
-
- throw new RuntimeException();
- }
- System.out.println("SUCCESS");
-
- }
-
- } catch (InterpreterException | MalformedURLException e) {
- e.printStackTrace();
- System.exit(-1);
- }
- System.exit(0);
-
- }
-
-}
diff --git a/test/bindings/java/org/uscxml/examples/MonitorExample.java b/test/bindings/java/org/uscxml/examples/MonitorExample.java
deleted file mode 100644
index dc4cffa..0000000
--- a/test/bindings/java/org/uscxml/examples/MonitorExample.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package org.uscxml.examples;
-
-import org.uscxml.Interpreter;
-import org.uscxml.InterpreterException;
-import org.uscxml.InterpreterState;
-import org.uscxml.StringVector;
-import org.uscxml.helper.TestMonitor;
-
-
-public class MonitorExample {
-
- public static void main(String[] args) {
-
- String uSCXMLLibPath = "/Users/sradomski/Documents/TK/Code/uscxml/build/cli/lib/libuscxmlNativeJava.jnilib";
- if (System.getenv().containsKey("USCXML_JAVA_LIB")) {
- uSCXMLLibPath = System.getenv("USCXML_JAVA_LIB");
- }
-
- System.load(uSCXMLLibPath);
-
- try {
- TestMonitor tm = new TestMonitor();
- Interpreter scxml = Interpreter.fromURL("https://raw.githubusercontent.com/tklab-tud/uscxml/master/test/w3c/null/test436.scxml");
- scxml.addMonitor(tm);
- InterpreterState state = InterpreterState.USCXML_UNDEF;
- while((state = scxml.step()) != InterpreterState.USCXML_FINISHED) {
- switch (state) {
- case USCXML_FINISHED:
- case USCXML_UNDEF:
- case USCXML_IDLE:
- case USCXML_INITIALIZED:
- case USCXML_INSTANTIATED:
- break;
- case USCXML_MICROSTEPPED:
- case USCXML_MACROSTEPPED:
- StringVector states = scxml.getConfiguration();
- for (int i = 0; i < states.size(); i++) {
- System.out.print(states.get(i) + " ");
- }
- System.out.println();
- case USCXML_CANCELLED:
- break;
- default:
- break;
- }
- }
-
- } catch (InterpreterException e) {
- e.printStackTrace();
- System.exit(-1);
- }
- System.exit(0);
- }
-
-}
diff --git a/test/bindings/java/org/uscxml/tests/JexlDataModelTest.java b/test/bindings/java/org/uscxml/tests/JexlDataModelTest.java
deleted file mode 100644
index da79d37..0000000
--- a/test/bindings/java/org/uscxml/tests/JexlDataModelTest.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package org.uscxml.tests;
-
-import java.io.File;
-import java.net.MalformedURLException;
-
-import org.uscxml.ActionLanguage;
-import org.uscxml.Factory;
-import org.uscxml.Interpreter;
-import org.uscxml.InterpreterException;
-import org.uscxml.InterpreterState;
-import org.uscxml.dm.jexl.JexlDataModel;
-import org.uscxml.helper.StopWatch;
-import org.uscxml.helper.TestMonitor;
-
-public class JexlDataModelTest {
-
- public static void main(String[] args) {
- String uSCXMLLibPath = "/Users/sradomski/Documents/TK/Code/uscxml/build/cli/lib/libuscxmlNativeJava.jnilib";
- if (System.getenv().containsKey("USCXML_JAVA_LIB")) {
- uSCXMLLibPath = System.getenv("USCXML_JAVA_LIB");
- }
-
- System.load(uSCXMLLibPath);
-// String testUri = "/Users/sradomski/Documents/TK/Code/uscxml/test/w3c/jexl/test144.scxml";
-// String testUri = "/Users/sradomski/Desktop/stopwatch.xml";
-
-
-// if (args.length > 0) {
-// testUri = args[0];
-// }
-
- {
- JexlDataModel jdm = new JexlDataModel();
-// Factory.getInstance().registerDataModel(jdm);
-
-
- TestMonitor tm = new TestMonitor();
-
- try {
-// File testFile = new File(testUri);
-// String testName = testFile.toURI().toURL().toString();
- String testName = "https://raw.githubusercontent.com/woonsan/commons-scxml-examples/master/stopwatch/src/main/resources/com/github/woonsan/commons/scxml/examples/stopwatch/stopwatch.xml";
- System.out.println(testName);
-
- Interpreter scxml = Interpreter.fromURL(testName);
-
- jdm.ctx.set("stopWatch", new StopWatch());
-
- ActionLanguage al = new ActionLanguage();
- al.setDataModel(jdm);
- scxml.setActionLanguage(al);
-
- scxml.addMonitor(tm);
-
- while (scxml.step() != InterpreterState.USCXML_FINISHED) {
- }
-
- if (!scxml.isInState("pass")) {
- System.out.println("FAIL: " + testName);
- throw new RuntimeException();
- }
- System.out.println("SUCCESS");
-
- } catch (InterpreterException e) {
- e.printStackTrace();
- System.exit(-1);
- }
- }
-
- System.exit(0);
- }
-
-}
diff --git a/test/ctest/scripts/test_generated_c.cmake b/test/ctest/scripts/test_generated_c.cmake
new file mode 100644
index 0000000..c170639
--- /dev/null
+++ b/test/ctest/scripts/test_generated_c.cmake
@@ -0,0 +1,89 @@
+# see test/CMakeLists.txt for passed variables
+
+set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/contrib/cmake)
+include("${CMAKE_MODULE_PATH}/FileInformation.cmake")
+
+get_filename_component(TEST_FILE_NAME ${TESTFILE} NAME)
+execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${OUTDIR})
+
+# message(FATAL_ERROR "PROJECT_BINARY_DIR: ${PROJECT_BINARY_DIR}")
+
+message(STATUS "${USCXML_TRANSFORM_BIN} -t${TARGETLANG} -i ${TESTFILE} -o ${OUTDIR}/${TEST_FILE_NAME}.machine.c")
+execute_process(COMMAND time -p ${USCXML_TRANSFORM_BIN} -t${TARGETLANG} -i ${TESTFILE} -o ${OUTDIR}/${TEST_FILE_NAME}.machine.c RESULT_VARIABLE CMD_RESULT)
+if (CMD_RESULT)
+ message(FATAL_ERROR "Error running ${USCXML_TRANSFORM_BIN}: ${CMD_RESULT}")
+endif ()
+message(STATUS "time for transforming to c machine")
+
+# set(COMPILE_CMD_OBJ
+# "-c" "${OUTDIR}/${TEST_FILE_NAME}.machine.c"
+# "-o" "${OUTDIR}/${TEST_FILE_NAME}.machine.c.o"
+# "-Ofast" "-ansi" "-m16")
+#
+# message(STATUS "${CC_BIN} ${COMPILE_CMD_OBJ}")
+# execute_process(
+# COMMAND time -p ${CC_BIN} ${COMPILE_CMD_OBJ}
+# WORKING_DIRECTORY ${OUTDIR} RESULT_VARIABLE CMD_RESULT)
+# if(CMD_RESULT)
+# message(FATAL_ERROR "Error running gcc ${CC_BIN}: ${CMD_RESULT}")
+# endif()
+# file (SIZE "${OUTDIR}/${TEST_FILE_NAME}.machine.c.o" BINARY_SIZE)
+# message("Size of compiled unit optimized for speed: ${BINARY_SIZE}")
+#
+# set(COMPILE_CMD_OBJ
+# "-c" "${OUTDIR}/${TEST_FILE_NAME}.machine.c"
+# "-o" "${OUTDIR}/${TEST_FILE_NAME}.machine.c.o"
+# "-Os" "-ansi" "-m16")
+#
+# message(STATUS "${CC_BIN} ${COMPILE_CMD_OBJ}")
+# execute_process(
+# COMMAND time -p ${CC_BIN} ${COMPILE_CMD_OBJ}
+# WORKING_DIRECTORY ${OUTDIR} RESULT_VARIABLE CMD_RESULT)
+# if(CMD_RESULT)
+# message(FATAL_ERROR "Error running gcc ${CC_BIN}: ${CMD_RESULT}")
+# endif()
+# file (SIZE "${OUTDIR}/${TEST_FILE_NAME}.machine.c.o" BINARY_SIZE)
+# message("Size of compiled unit optimized for size: ${BINARY_SIZE}")
+
+set(COMPILE_CMD_BIN
+ "-O0"
+ "-std=c++11"
+ "-Wl,-search_paths_first"
+ "-Wl,-headerpad_max_install_names"
+ "-o" "${OUTDIR}/${TEST_FILE_NAME}"
+ "-L${CMAKE_LIBRARY_OUTPUT_DIRECTORY}"
+ "-L${PROJECT_BINARY_DIR}/deps/xerces-c/lib"
+ "-luscxml"
+ "-lxerces-c"
+ "-include" "${OUTDIR}/${TEST_FILE_NAME}.machine.c"
+ "-I${PROJECT_SOURCE_DIR}/contrib/src"
+ "-I${PROJECT_SOURCE_DIR}/src"
+ "-I${PROJECT_BINARY_DIR}"
+ "-I${XercesC_INCLUDE_DIRS}"
+ "-I${URIPARSER_INCLUDE_DIR}"
+ "-I${LIBEVENT_INCLUDE_DIR}"
+ "-Wl,-rpath,${CMAKE_LIBRARY_OUTPUT_DIRECTORY}"
+ "-DAUTOINCLUDE_TEST=ON"
+ "${SCAFFOLDING_FOR_GENERATED_C}")
+
+message(STATUS "${CXX_BIN} ${COMPILE_CMD_BIN}")
+execute_process(
+ COMMAND time -p ${CXX_BIN} ${COMPILE_CMD_BIN}
+ WORKING_DIRECTORY ${OUTDIR} RESULT_VARIABLE CMD_RESULT)
+if (CMD_RESULT)
+ message(FATAL_ERROR "Error running g++ ${CXX_BIN}: ${CMD_RESULT}")
+endif ()
+message(STATUS "time for transforming to binary")
+
+message(STATUS "${OUTDIR}/${TEST_FILE_NAME}")
+execute_process(
+ COMMAND time -p ${OUTDIR}/${TEST_FILE_NAME}
+ WORKING_DIRECTORY ${OUTDIR}
+ RESULT_VARIABLE CMD_RESULT)
+if (CMD_RESULT)
+ message(FATAL_ERROR "Error running generated c test: ${CMD_RESULT}")
+endif ()
+message(STATUS "time for execution")
+
+# message(STATUS "${TEST_OUT}")
+# file(WRITE ${OUTDIR}/${TEST_FILE_NAME}.pml.out ${TEST_OUT}) \ No newline at end of file
diff --git a/test/ctest/scripts/test_generated_java.cmake b/test/ctest/scripts/test_generated_java.cmake
new file mode 100644
index 0000000..81317ef
--- /dev/null
+++ b/test/ctest/scripts/test_generated_java.cmake
@@ -0,0 +1,32 @@
+# see test/CMakeLists.txt for passed variables
+
+get_filename_component(TEST_FILE_NAME ${TESTFILE} NAME)
+get_filename_component(TEST_FILE_NAME_WE ${TESTFILE} NAME_WE)
+set(JAVA_PACKAGE_NAME "org.uscxml.gen")
+set(JAVA_PACKAGE_PATH "org/uscxml/gen")
+
+execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${OUTDIR}/${JAVA_PACKAGE_PATH})
+
+# message(FATAL_ERROR "PROJECT_BINARY_DIR: ${PROJECT_BINARY_DIR}")
+
+execute_process(
+ COMMAND time -p ${USCXML_TRANSFORM_BIN} -t${TARGETLANG} -i ${TESTFILE} -o ${OUTDIR}/${JAVA_PACKAGE_PATH}/TestStateChartBase.java -XpackageName=${JAVA_PACKAGE_NAME} -XjavaVersion=5
+ RESULT_VARIABLE CMD_RESULT
+)
+if (CMD_RESULT)
+ message(FATAL_ERROR "Error running ${USCXML_TRANSFORM_BIN}: ${CMD_RESULT}")
+endif ()
+message(STATUS "time for transforming to Java machine")
+
+execute_process(COMMAND
+ ${ANT_BIN}
+ -Dtest.file=${W3C_TEST}
+ -Dgenerated.dir=${OUTDIR}
+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/test/bindings/java
+ RESULT_VARIABLE CMD_RESULT
+ OUTPUT_VARIABLE CMD_OUTPUT
+)
+
+if (CMD_RESULT)
+ message(FATAL_ERROR "Error running ${ANT_BIN} : ${CMD_RESULT} ${CMAKE_PROJECT_DIR}/test/bindings/java ${CMD_OUTPUT}")
+endif ()
diff --git a/test/ctest/scripts/test_generated_vhdl.cmake b/test/ctest/scripts/test_generated_vhdl.cmake
new file mode 100644
index 0000000..f621c2c
--- /dev/null
+++ b/test/ctest/scripts/test_generated_vhdl.cmake
@@ -0,0 +1,48 @@
+# see test/CMakeLists.txt for passed variables
+
+get_filename_component(TEST_FILE_NAME ${TESTFILE} NAME)
+execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${OUTDIR})
+
+if(NOT GHDL_BIN)
+ return()
+endif()
+
+set(VHDL_TESTBENCH_NAME "tb")
+
+execute_process(COMMAND time -p ${USCXML_TRANSFORM_BIN} -t${TARGETLANG} -i ${TESTFILE} -o ${OUTDIR}/${TEST_FILE_NAME}.machine.vhdl RESULT_VARIABLE CMD_RESULT)
+if (CMD_RESULT)
+ message(FATAL_ERROR "Error running ${USCXML_TRANSFORM_BIN}: ${CMD_RESULT}")
+endif ()
+message(STATUS "time for transforming to VHDL machine")
+
+message(STATUS "GHDL cleaning directory")
+execute_process(
+ COMMAND time -p ${GHDL_BIN} --clean
+ WORKING_DIRECTORY ${OUTDIR} RESULT_VARIABLE CMD_RESULT)
+
+message(STATUS "${GHDL_BIN} -a --std=08 ${OUTDIR}/${TEST_FILE_NAME}.machine.vhdl")
+execute_process(
+ COMMAND time -p ${GHDL_BIN} -a --std=08 ${OUTDIR}/${TEST_FILE_NAME}.machine.vhdl
+ WORKING_DIRECTORY ${OUTDIR} RESULT_VARIABLE CMD_RESULT)
+if (CMD_RESULT)
+ message(FATAL_ERROR "Error running ghdl ${GHDL_BIN}: ${CMD_RESULT}")
+endif ()
+message(STATUS "time for syntax check")
+
+message(STATUS "${GHDL_BIN} -e --std=08 ${VHDL_TESTBENCH_NAME}")
+execute_process(
+ COMMAND time -p ${GHDL_BIN} -e --std=08 ${VHDL_TESTBENCH_NAME}
+ WORKING_DIRECTORY ${OUTDIR} RESULT_VARIABLE CMD_RESULT)
+if (CMD_RESULT)
+ message(FATAL_ERROR "Error running ghdl ${GHDL_BIN}: ${CMD_RESULT}")
+endif ()
+message(STATUS "time for transforming to binary")
+
+message(STATUS "${GHDL_BIN} -r ${VHDL_TESTBENCH_NAME}")
+execute_process(
+ COMMAND time -p ${GHDL_BIN} -r ${VHDL_TESTBENCH_NAME}
+ WORKING_DIRECTORY ${OUTDIR} RESULT_VARIABLE CMD_RESULT)
+if (CMD_RESULT)
+ message(FATAL_ERROR "Error running ghdl ${GHDL_BIN}: ${CMD_RESULT}")
+endif ()
+message(STATUS "time for transforming to binary")