summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/CMakeLists.txt4
-rw-r--r--test/src/test-flat-stateid.cpp57
2 files changed, 61 insertions, 0 deletions
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index b106d87..dc827d3 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -45,6 +45,10 @@ target_link_libraries(test-eventdelay uscxml)
add_test(test-eventdelay ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test-eventdelay)
set_target_properties(test-eventdelay PROPERTIES FOLDER "Tests")
+add_executable(test-flat-stateid src/test-flat-stateid.cpp)
+add_test(test-flat-stateid ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test-flat-stateid)
+set_target_properties(test-flat-stateid PROPERTIES FOLDER "Tests")
+
if (OFF)
add_executable(test-dirmon src/test-dirmon.cpp)
target_link_libraries(test-dirmon uscxml)
diff --git a/test/src/test-flat-stateid.cpp b/test/src/test-flat-stateid.cpp
new file mode 100644
index 0000000..7bc826c
--- /dev/null
+++ b/test/src/test-flat-stateid.cpp
@@ -0,0 +1,57 @@
+#include "uscxml/transform/FlatStateIdentifier.h"
+#include <cassert>
+
+int main(int argc, char** argv) {
+ std::list<std::string>::const_iterator listIter;
+
+ {
+ std::string stateId = "active:{};entered:{};history:{}";
+ uscxml::FlatStateIdentifier flat1(stateId);
+ assert(flat1.getActive().size() == 0);
+ assert(flat1.getVisited().size() == 0);
+ assert(flat1.getHistory().size() == 0);
+
+ uscxml::FlatStateIdentifier flat2(flat1.getActive(), flat1.getVisited(), flat1.getHistory());
+ assert(flat2.getStateId() == stateId);
+ }
+
+ {
+ std::string stateId = "active:{s1};entered:{s1,s2};history:{}";
+ uscxml::FlatStateIdentifier flat1(stateId);
+ assert(flat1.getActive().size() == 1);
+ assert(flat1.getVisited().size() == 2);
+ assert(flat1.getHistory().size() == 0);
+
+ uscxml::FlatStateIdentifier flat2(flat1.getActive(), flat1.getVisited(), flat1.getHistory());
+ assert(flat2.getStateId() == stateId);
+ }
+
+ {
+
+ std::string stateId = "active:{s0,s1,s2};entered:{s0,s1,s2};history:{h0:{s1,s2},h1:{s2,s3}}";
+ uscxml::FlatStateIdentifier flat1(stateId);
+
+ listIter = flat1.getActive().begin();
+ assert(*listIter++ == "s0");
+ assert(*listIter++ == "s1");
+ assert(*listIter++ == "s2");
+
+ listIter = flat1.getVisited().begin();
+ assert(*listIter++ == "s0");
+ assert(*listIter++ == "s1");
+ assert(*listIter++ == "s2");
+
+ assert(flat1.getHistory().find("h0") != flat1.getHistory().end());
+ listIter = flat1.getHistory().at("h0").begin();
+ assert(*listIter++ == "s1");
+ assert(*listIter++ == "s2");
+
+ assert(flat1.getHistory().find("h1") != flat1.getHistory().end());
+ listIter = flat1.getHistory().at("h1").begin();
+ assert(*listIter++ == "s2");
+ assert(*listIter++ == "s3");
+
+ uscxml::FlatStateIdentifier flat2(flat1.getActive(), flat1.getVisited(), flat1.getHistory());
+ assert(flat2.getStateId() == stateId);
+ }
+} \ No newline at end of file