SCXML-tutorial

SCXML Frameworks W3C Standard Specification Compliance

It is an attempt to collect test passing results per every SCXML framework in one place.

Framework Datamodel W3C Mandatory W3C Optional Compliance
uSCXML 2.0 ecmascript 159 of 159 33 of 33 Full
Qt SCXML 5.15 ecmascript 141 of 159 17 of 33 Partial
SCION CLI 1.0.37 ecmascript 156 of 159 18 of 33 Partial
PyBlendSCXML 1.0.0 python 159 of 159 22 of 33 Partial

Objective

There are variety of SCXML frameworks and validation tests passing results may vary. It means that if you write your scxml code in one platform it may not work in other. So it would be great to see the comparison between platforms and to know from the very beginning about that platform issues. Also there is a wish to be independent from framework owners in the meaning that we will execute tests in our conditions.

Rules for SCXML tests

We will collect tests in the SCXML-Tutorial/Tests folder. Then we will separate them by <datamodel> folders

SCXML-tutorial/Tests
	ecma 
		Custom 
		W3C 
			Mandatory 
				Auto 
				Manual 
			Optional 
				Auto 
				Manual
	lua
	...

W3C folder will collect tests based on W3C SCXML 1.0 Implementation Report

Test preview

TestRule1 TestRule2

1. Test description

Test MUST have commented description as the first comment in XML document or the first comment of XML root <scxml> element

WARNING! Text in comment must be a valid Markdown text!

2. Top-level <final> state with id pass

Look at the picture above

3. Top-level <final> state with id fail

Look at the picture above

4. Restriction for stable configuration

We use 5 seconds timeout per stable configuration of the state machine. It means that if your state machine does nothing per 5 seconds it will be marked as failed by timeout.

5. Syntax errors and critical SCXML bugs

We validate only tests without XML syntax errors and critical SCXML bugs such as transition deadlock (when two states are connected with empty transitions) etc.