# uSCXML ReadMe uSCXML is a SCXML interpreter written in C/C++. It is still in a rather early stage but mostly feature-complete as far as the W3C SCXML draft specifies. It runs on most Linux, Windows and MacOSX, each 32- as well as 64Bits. There is no technical reason for it not to run on iOS and Android as well, but we did not yet setup the respective build-process. * Datamodels * ECMAScript using Google's v8 and JavaScriptCore (JSC is incomplete) * Prolog using SWI prolog * Invokers * scxml: Invoke a nested scxml interpreter * dirmon: Watches a directory for changes to files * scenegraph: Simplified 3D scenegraphs with custom markup * heartbeat: Periodically sends events * httpservlet: Sends events for http requests to special paths * umundo: Subscribe to channels and publish events * DOM * DOM Core Level 2 + XPath extensions available for ecmascript datamodel * Namespace aware to embed custom markup for special invokers * Communication * Features the standard basichttp io-processor * Can actually respond to HTTP requests with data via <response> * Language Bindings * PHP module for apache and cli interpreter ## Test Reports [Results](http://uscxml.tk.informatik.tu-darmstadt.de/cdash/index.php?project=uscxml) for continuous testing of the [W3C IRP tests](http://www.w3.org/Voice/2013/scxml-irp/) for SCXML and some platform tests.
Test# | Status | Comment |
---|---|---|
153 | Failed / Fix in test | The XSLT transformation leave some gibberish in the file |
178 | Failed / Fix in draft | A manual test that relies on an unspecified _event.raw attribute |
226 | Failed / Fix in test | Requires a file with wrong file extension |
230 | False report | A manual test that is not actually failing but does not end in a state called pass |
250 | False report | A manual test that is not actually failing but does not end in a state called pass |
301 | Failed | "If the script can not be downloaded within a platform-specific timeout interval, the document is considered non-conformant, and the platform must reject it" -- USCXML will try to evaluate the rest of the document nevertheless. |
302 | Failed / Fix in test | datamodel attribute is missing from test |
303 | Failed / Fix in test | datamodel attribute is missing from test |
304 | Failed / Fix in test | datamodel attribute is missing from test |
307 | False report | A manual test that is not actually failing but does not end in a state called pass |
321 | Failed / Fix in test | Gibberish form XSLT transformation still inside $_sessionid |
323 | Failed / Fix in test | Gibberish form XSLT transformation still inside $_name |
329 | Failed / Raise on ML | Tests that _event cannot be assigned, but I like to add attributes to _event to have a scope that only lasts for one event |
330 | Failed | Namespace issues |
333 | Failed / Won't fix | "sendid [...] Otherwise it must leave it blank." -- USCXML sets this to the empty string instead of null. |
335 | Failed / Won't fix | "origin [...] For internal and platform events, the Processor must leave this field blank." -- USCXML sets this to the empty string instead of null. |
337 | Failed / Won't fix | "origintype [...] For internal and platform events, the Processor must leave this field blank." -- USCXML sets this to the empty string instead of null. |
339 | Failed / Won't fix | "invokeid [...] Otherwise it must leave it blank." -- USCXML sets this to the empty string instead of null. |
346 | Failed / Won't fix | "test that any attempt to change the value of a system variable causes error.execution to be raised." -- I like to edit _event. |
436 | Failed / Won't fix | Requires NULL datamodel |
441b | Failed / Won't fix | Requires NULL datamodel |
456 | Failed / Raise on ML | Expects undefined + 1 to be 1 |
463 - 486b | Failed / Won't fix | Requires xpath datamodel |
488 | Failed / Raise on ML | Expects _event.data to be the empty string when we have it as undefined |
537 - 547 | Failed / Won't fix | Requires xpath datamodel |
555 | Failed / Won't fix | Requires xpath datamodel |
569 | Failed | SCXML I/O processor is implicit at the moment |