diff options
Diffstat (limited to 'test/src/test-doneevent.cpp')
-rw-r--r-- | test/src/test-doneevent.cpp | 113 |
1 files changed, 58 insertions, 55 deletions
diff --git a/test/src/test-doneevent.cpp b/test/src/test-doneevent.cpp index d49f8e2..0330512 100644 --- a/test/src/test-doneevent.cpp +++ b/test/src/test-doneevent.cpp @@ -4,60 +4,63 @@ using namespace uscxml; // -- Issue 56 on github int main(int argc, char** argv) { - std::deque<std::string> messageQueue; - messageQueue.push_back("a"); - messageQueue.push_back("b"); - messageQueue.push_back("c"); - messageQueue.push_back("d"); - - const char* scxmlContent = - "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" - "<scxml xmlns=\"http://www.w3.org/2005/07/scxml\" version=\"1.0\" initial=\"initial_state\">" - " <state id=\"initial_state\">" - " <transition event=\"a\" target=\"parallel_state\"/>" - " </state>" - " <parallel id=\"parallel_state\">" - " <transition event=\"done.state.parallel_state\" target=\"join_state\"/>" - " <state id=\"p1out\" initial=\"p1\">" - " <state id=\"p1\">" - " <transition event=\"b\" target=\"p11\"/>" - " </state>" - " <final id=\"p11\"/>" - " </state>" - " <state id=\"p2out\" initial=\"p2\">" - " <state id=\"p2\">" - " <transition event=\"c\" target=\"p21\"/>" - " </state>" - " <final id=\"p21\"/>" - " </state>" - " </parallel>" - " <state id=\"join_state\">" - " <transition event=\"d\" target=\"final_state\"/>" - " </state>" - " <final id=\"final_state\"/>" - "</scxml>"; - - std::string msg; - - uscxml::Interpreter scxml = uscxml::Interpreter::fromXML(scxmlContent, ""); - scxml.addMonitor(new StateTransitionMonitor()); - - uscxml::InterpreterState state; - // assume initial stable configuration - do { state = scxml.step(); } while(state > 0); - - while(state != uscxml::USCXML_FINISHED && !messageQueue.empty()) - { - msg = messageQueue.front(); - messageQueue.pop_front(); - - scxml.receive(uscxml::Event(msg, uscxml::Event::EXTERNAL)); - - // step to next stable configuration - do { state = scxml.step(); } while(state > 0); - - } - - return EXIT_SUCCESS; + std::deque<std::string> messageQueue; + messageQueue.push_back("a"); + messageQueue.push_back("b"); + messageQueue.push_back("c"); + messageQueue.push_back("d"); + + const char* scxmlContent = + "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<scxml xmlns=\"http://www.w3.org/2005/07/scxml\" version=\"1.0\" initial=\"initial_state\">" + " <state id=\"initial_state\">" + " <transition event=\"a\" target=\"parallel_state\"/>" + " </state>" + " <parallel id=\"parallel_state\">" + " <transition event=\"done.state.parallel_state\" target=\"join_state\"/>" + " <state id=\"p1out\" initial=\"p1\">" + " <state id=\"p1\">" + " <transition event=\"b\" target=\"p11\"/>" + " </state>" + " <final id=\"p11\"/>" + " </state>" + " <state id=\"p2out\" initial=\"p2\">" + " <state id=\"p2\">" + " <transition event=\"c\" target=\"p21\"/>" + " </state>" + " <final id=\"p21\"/>" + " </state>" + " </parallel>" + " <state id=\"join_state\">" + " <transition event=\"d\" target=\"final_state\"/>" + " </state>" + " <final id=\"final_state\"/>" + "</scxml>"; + + std::string msg; + + uscxml::Interpreter scxml = uscxml::Interpreter::fromXML(scxmlContent, ""); + scxml.addMonitor(new StateTransitionMonitor()); + + uscxml::InterpreterState state; + // assume initial stable configuration + do { + state = scxml.step(); + } while(state > 0); + + while(state != uscxml::USCXML_FINISHED && !messageQueue.empty()) { + msg = messageQueue.front(); + messageQueue.pop_front(); + + scxml.receive(uscxml::Event(msg, uscxml::Event::EXTERNAL)); + + // step to next stable configuration + do { + state = scxml.step(); + } while(state > 0); + + } + + return EXIT_SUCCESS; }
\ No newline at end of file |