summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-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/libs/commons-jexl3-3.0.jarbin383861 -> 0 bytes
-rw-r--r--test/bindings/java/libs/commons-logging-1.2.jarbin61829 -> 0 bytes
-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/dm/jexl/JEXLDataModel.java267
-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/examples/hello-world.xml25
-rw-r--r--test/bindings/java/org/uscxml/helper/StopWatch.java22
-rw-r--r--test/bindings/java/org/uscxml/helper/TestMonitor.java71
-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
24 files changed, 248 insertions, 900 deletions
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/libs/commons-jexl3-3.0.jar b/test/bindings/java/libs/commons-jexl3-3.0.jar
deleted file mode 100644
index 94566bf..0000000
--- a/test/bindings/java/libs/commons-jexl3-3.0.jar
+++ /dev/null
Binary files differ
diff --git a/test/bindings/java/libs/commons-logging-1.2.jar b/test/bindings/java/libs/commons-logging-1.2.jar
deleted file mode 100644
index 93a3b9f..0000000
--- a/test/bindings/java/libs/commons-logging-1.2.jar
+++ /dev/null
Binary files differ
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/dm/jexl/JEXLDataModel.java b/test/bindings/java/org/uscxml/dm/jexl/JEXLDataModel.java
deleted file mode 100644
index cd9d175..0000000
--- a/test/bindings/java/org/uscxml/dm/jexl/JEXLDataModel.java
+++ /dev/null
@@ -1,267 +0,0 @@
-package org.uscxml.dm.jexl;
-
-import java.lang.reflect.Array;
-import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.commons.jexl3.JexlBuilder;
-import org.apache.commons.jexl3.JexlEngine;
-import org.apache.commons.jexl3.JexlException;
-import org.apache.commons.jexl3.JexlExpression;
-import org.apache.commons.jexl3.MapContext;
-import org.uscxml.Data;
-import org.uscxml.DataList;
-import org.uscxml.DataMap;
-import org.uscxml.DataModel;
-import org.uscxml.DataModelExtension;
-import org.uscxml.ErrorEvent;
-import org.uscxml.Event;
-import org.uscxml.StringList;
-import org.uscxml.StringVector;
-
-public class JexlDataModel extends DataModel {
-
- protected static final JexlEngine jexl = new JexlBuilder().cache(512).strict(true).silent(false).create();
- public MapContext ctx = new MapContext();
-
- @Override
- public void addExtension(DataModelExtension ext) {
- throw new UnsupportedOperationException("Cannot add extensions to the jexl datamodel");
- }
-
- @Override
- public StringList getNames() {
- StringList names = new StringList();
- names.add("jexl");
- return names;
- }
-
- @Override
- public DataModel create() {
- JexlDataModel dm = new JexlDataModel();
- return dm;
- }
-
- @Override
- public boolean isValidSyntax(String expr) {
- try {
- jexl.createExpression(expr);
- return true;
- } catch(JexlException e) {
- return false;
- }
- }
-
- @Override
- public void setEvent(Event event) {
- ctx.set("_event", event);
- }
-
- @Override
- public Data getAsData(String content) {
- try {
- JexlExpression ex = jexl.createExpression(content);
- return getJexlObjectAsData(ex.evaluate(ctx));
- } catch(Exception e) {
- }
- return null;
- }
-
- @Override
- public Data evalAsData(String content) {
- JexlExpression expr = jexl.createExpression(content);
- Data d = getJexlObjectAsData(expr.evaluate(ctx));
-// d.setAtom(expr.getParsedText());
-// d.setType(Data.Type.VERBATIM);
- return d;
- }
-
- @Override
- public boolean evalAsBool(String expr) {
- try {
- JexlExpression ex = jexl.createExpression("!!" + expr);
- Object result = ex.evaluate(ctx);
- return (Boolean) result;
- } catch(Exception e) {
- e.printStackTrace();
- }
- return false;
- }
-
- @Override
- public long getLength(String expr) {
- try {
- JexlExpression ex = jexl.createExpression(expr);
- Object res = ex.evaluate(ctx);
-
- return Array.getLength(res);
-
- } catch(Exception e) {
- throw new ErrorEvent("Cannot evaluate '" + expr + "' as an array: " + e.getMessage());
- }
- }
-
- @Override
- public void setForeach(String item, String array, String index, long iteration) {
- Object res = null;
- try {
- JexlExpression ex = jexl.createExpression(array);
- res = ex.evaluate(ctx);
- } catch(Exception e) {
- throw new ErrorEvent("Cannot evaluate '" + array + "' as an array: " + e.getMessage());
- }
- try {
- JexlExpression ex = jexl.createExpression(item + "==" + item + ";");
- ex.evaluate(ctx);
-
- ctx.set(item, Array.get(res, (int) iteration));
- } catch(Exception e) {
- throw new ErrorEvent("Cannot set item '" + item + "' to current item: " + e.getMessage());
- }
- try {
- if (index.length() > 0) {
- ctx.set(index, iteration);
- }
- } catch(Exception e) {
- throw new ErrorEvent("Cannot set index '" + index + "' to current index: " + e.getMessage());
- }
- }
-
- @Override
- public void assign(String location, Data data) {
- try {
- ctx.set(location, getDataAsJexlObject(data));
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- @Override
- public void init(String location, Data data) {
- ctx.set(location, null);
- assign(location, data);
- }
-
- @Override
- public boolean isDeclared(String expr) {
- try {
- JexlExpression ex = jexl.createExpression(expr);
- Object result = ex.evaluate(ctx);
- return (boolean) result;
- } catch(JexlException e) {
- }
- return false;
- }
-
- protected Object evalAsObject(String expr) {
- try {
- JexlExpression ex = jexl.createExpression(expr);
- return (ex.evaluate(ctx));
- } catch(JexlException e) {
- }
- return null;
- }
-
- protected Data getJexlObjectAsData(Object obj) {
- Data d = new Data();
- if (obj.getClass().isArray()) {
- int length = Array.getLength(obj);
- for (int i = 0; i < length; i ++) {
- d.getArray().add(getJexlObjectAsData(Array.get(obj, i)));
- }
- } else if (obj.getClass().isPrimitive() || isWrapperType(obj.getClass())) {
- String val = obj.toString();
- try {
- Integer.parseInt(obj.toString());
- d.setAtom(obj.toString());
- d.setType(Data.Type.INTERPRETED);
- return d;
- } catch(NumberFormatException e) {}
- try {
- Double.parseDouble(obj.toString());
- d.setAtom(obj.toString());
- d.setType(Data.Type.INTERPRETED);
- return d;
- } catch(NumberFormatException e) {}
- d.setAtom(obj.toString());
- d.setType(Data.Type.VERBATIM);
- return d;
- } else {
- Field[] fields = obj.getClass().getDeclaredFields();
- for (Field field: fields) {
- Object newObj = null;
- try {
- field.get(newObj);
- d.getCompound().set(field.getName(), getJexlObjectAsData(newObj));
- } catch (IllegalArgumentException | IllegalAccessException e) {
- }
- }
- return d;
- }
-
- return d;
- }
-
- protected Object getDataAsJexlObject(Data data) {
- if (data.getAtom().length() > 0) {
- if (data.getType() == Data.Type.INTERPRETED) {
- try {
- JexlExpression exp = jexl.createExpression(data.getAtom());
- return exp.evaluate(ctx);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return new String(data.getAtom());
- }
- try {
- JexlExpression exp = jexl.createExpression(data.getAtom());
- return exp.evaluate(ctx);
- } catch (Exception e) {
- }
- return new String("\"" + data.getAtom() + "\"");
-
- } else if (data.getCompound().size() > 0) {
- StringVector keys = data.getCompoundKeys();
- DataMap dataCompound = data.getCompound();
- Map<String, Object> objCompound = new HashMap<String, Object>();
- for (int i = 0; i < keys.size(); i++) {
- objCompound.put(keys.get(i), getDataAsJexlObject(dataCompound.get(keys.get(i))));
- }
- return objCompound;
- } else if (data.getArray().size() > 0) {
- DataList dataList = data.getArray();
- List<Object> objList = new ArrayList<Object>((int) data.getArray().size());
- for (int i = 0; i < dataList.size(); i++) {
- objList.add(i, getDataAsJexlObject(dataList.get(i)));
- }
- return objList;
- }
- return new Object();
- }
-
- protected static boolean isWrapperType(Class<?> clazz) {
- return WRAPPER_TYPES.contains(clazz);
- }
-
- private static final Set<Class<?>> WRAPPER_TYPES = getWrapperTypes();
-
- private static Set<Class<?>> getWrapperTypes() {
- Set<Class<?>> ret = new HashSet<Class<?>>();
- ret.add(Boolean.class);
- ret.add(Character.class);
- ret.add(Byte.class);
- ret.add(Short.class);
- ret.add(Integer.class);
- ret.add(Long.class);
- ret.add(Float.class);
- ret.add(Double.class);
- ret.add(Void.class);
- return ret;
- }
-
-}
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/examples/hello-world.xml b/test/bindings/java/org/uscxml/examples/hello-world.xml
deleted file mode 100644
index 3ac168c..0000000
--- a/test/bindings/java/org/uscxml/examples/hello-world.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" ?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with this
- work for additional information regarding copyright ownership. The ASF
- licenses this file to You under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law
- or agreed to in writing, software distributed under the License is
- distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the specific language
- governing permissions and limitations under the License.
--->
-<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0"
- initial="hello">
-
- <final id="hello">
- <onentry>
- <log expr="'Hello, World!'" />
- </onentry>
- </final>
-
-</scxml> \ No newline at end of file
diff --git a/test/bindings/java/org/uscxml/helper/StopWatch.java b/test/bindings/java/org/uscxml/helper/StopWatch.java
deleted file mode 100644
index 4123ba1..0000000
--- a/test/bindings/java/org/uscxml/helper/StopWatch.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package org.uscxml.helper;
-
-import org.uscxml.Data;
-import org.uscxml.DataModelExtension;
-
-public class StopWatch {
-
- public StopWatch() {
- }
-
- public void reset() {
- System.out.println("RESET");
- }
-
- public void start() {
- System.out.println("START");
- }
- public void stop() {
- System.out.println("STOP");
- }
-
-}
diff --git a/test/bindings/java/org/uscxml/helper/TestMonitor.java b/test/bindings/java/org/uscxml/helper/TestMonitor.java
deleted file mode 100644
index 2b71d82..0000000
--- a/test/bindings/java/org/uscxml/helper/TestMonitor.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package org.uscxml.helper;
-
-import org.uscxml.InterpreterMonitor;
-import org.uscxml.StringList;
-
-public class TestMonitor extends InterpreterMonitor {
-
- public TestMonitor() {}
-
- @Override
- public void beforeExitingState(String stateId, String xpath, String stateXML) {
- System.out.println("beforeExitingState: " + stateId + " " + xpath);
- }
-
- @Override
- public void afterExitingState(String stateId, String xpath, String stateXML) {
- System.out.println("afterExitingState: " + stateId + " " + xpath);
- }
-
- @Override
- public void beforeExecutingContent(String tagName, String xpath, String contentXML) {
- System.out.println("afterExecutingContent: " + tagName + " " + xpath);
- }
-
- @Override
- public void afterExecutingContent(String tagName, String xpath, String contentXML) {
- System.out.println("afterExecutingContent: " + tagName + " " + xpath);
- }
-
- @Override
- public void beforeUninvoking(String xpath, String invokeid, String invokerXML) {
- System.out.println("beforeUninvoking: " + xpath + " " + invokeid);
- }
-
- @Override
- public void afterUninvoking(String xpath, String invokeid, String invokerXML) {
- System.out.println("beforeUninvoking: " + xpath + " " + invokeid);
- }
-
- @Override
- public void beforeTakingTransition(String xpath, String source, StringList targets, String transitionXML) {
- System.out.println("beforeTakingTransition: " + xpath + " " + source + " " + targets);
- }
-
- @Override
- public void afterTakingTransition(String xpath, String source, StringList targets, String transitionXML) {
- System.out.println("afterTakingTransition: " + xpath + " " + source + " " + targets);
- }
-
- @Override
- public void beforeEnteringState(String stateId, String xpath, String stateXML) {
- System.out.println("beforeEnteringState: " + stateId + " " + xpath);
- }
-
- @Override
- public void afterEnteringState(String stateId, String xpath, String stateXML) {
- System.out.println("afterEnteringState: " + stateId + " " + xpath);
- }
-
- @Override
- public void beforeInvoking(String xpath, String invokeid, String invokerXML) {
- System.out.println("beforeInvoking: " + xpath + " " + invokeid);
- }
-
- @Override
- public void afterInvoking(String xpath, String invokeid, String invokerXML) {
- System.out.println("afterInvoking: " + xpath + " " + invokeid);
- }
-
-
-}
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")