Conformance
The interpreter is tested against the W3C SCXML 1.0 Implementation Report Plan
test suite, converted to the ECMAScript data model. The converted suite is vendored in
conformance/ (W3C licence in conformance/LICENSE-W3C), so running it needs no network.
A test passes when its session reaches the top-level <final id="pass">. Time is virtual, so delayed events
fire instantly and the whole suite runs in well under a second per data model.
Reproduce: mise run conformance (sandboxed), mise run conformance:trusted (trusted),
mise run docs:conformance (this page). bun test runs the suite too, in both data models.
Summary#
| Sandboxed (QuickJS) | Trusted (host engine) | |
|---|---|---|
| Mandatory tests | 160/160 | 160/160 |
| Optional tests | 21/33 | 21/33 |
| Manual tests | see below | see below |
Every test that doesn't pass is optional and needs the Basic HTTP Event I/O Processor, which isn't included: 201, 509, 510, 518, 519, 520, 522, 531, 532, 534, 567, 577. See deviations.
Manual tests#
9 tests are marked manual: a person reads the output and decides. The verdicts, with the
evidence for each, are in conformance/MANUAL.md: 8 pass, and 513 is not
applicable (it needs the Basic HTTP processor). The mechanically checkable ones are also pinned in
conformance/conformance.test.ts.
Deviations#
Where the interpreter deliberately differs from the specification, or leaves something out, is listed in deviations.md, each item pinned by a test.
All automatic tests#
Sorted by specification section. Descriptions are the W3C's, shortened.
| Test | Section | Sandboxed | Trusted | What it checks | |
|---|---|---|---|---|---|
| 355 | 3.2 | M | pass | pass | At system initialization time, if the 'initial' attribute is not present, the Processor MUST enter the first state in document order. |
| 576 | 3.2 | M | pass | pass | At system initialization time, the SCXML Processor MUST enter the states specified by the 'initial' attribute, if it is present. |
| 364 | 3.3 | M | pass | pass | Definition: The default initial state(s) of a compound state are those specified by the 'initial' attribute or initial element, if either is present.… |
| 372 | 3.7 | M | pass | pass | When the state machine enters the final child of a state element, the SCXML processor MUST generate the event done.state.id after completion of the o… |
| 570 | 3.7 | M | pass | pass | Immediately after generating done.state.id upon entering a final child of state, if the parent state is a child of a parallel element, and all of the… |
| 375 | 3.8 | M | pass | pass | The SCXML processor MUST execute the onentry handlers of a state in document order when the state is entered. |
| 376 | 3.8 | M | pass | pass | The SCXML processor MUST treat each [onentry] handler as a separate block of executable content. |
| 377 | 3.9 | M | pass | pass | The SCXML processor MUST execute the onexit handlers of a state in document order when the state is exited. |
| 378 | 3.9 | M | pass | pass | The SCXML processor MUST treat each [onexit] handler as a separate block of executable content. |
| 387 | 3.10 | M | pass | pass | Before the parent state has been visited for the first time, if a transition is executed that takes the history state as its target, the SCXML proces… |
| 388 | 3.10 | M | pass | pass | After the parent state has been visited for the first time, if a transition is executed that takes the history state as its target, the SCXML process… |
| 579 | 3.10 | M | pass | pass | Before the parent state has been visited for the first time, if a transition is executed that takes the history state as its target, the SCXML proces… |
| 580 | 3.10 | M | pass | pass | It follows from the semantics of history states that they never end up in the state configuration |
| 396 | 3.12 | M | pass | pass | The SCXML processor MUST use this same name value [the one reflected in the event variable] to match against the 'event' attribute of transitions. |
| 399 | 3.12 | M | pass | pass | [Definition: A transition matches an event if at least one of its event descriptors matches the event's name. ] [Definition: An event descriptor matc… |
| 401 | 3.12 | M | pass | pass | The processor MUST place these [error] events in the internal event queue. |
| 402 | 3.12 | M | pass | pass | The processor MUST process them [error events] like any other event. |
| 403a | 3.13 | M | pass | pass | To execute a microstep, the SCXML Processor MUST execute the transitions in the corresponding optimal enabled transition set, where the optimal trans… |
| 403b | 3.13 | M | pass | pass | To execute a microstep, the SCXML Processor MUST execute the transitions in the corresponding optimal enabled transition set, where the optimal trans… |
| 403c | 3.13 | M | pass | pass | To execute a microstep, the SCXML Processor MUST execute the transitions in the corresponding optimal enabled transition set, where the optimal trans… |
| 404 | 3.13 | M | pass | pass | To execute a set of transitions, the SCXML Processor MUST first exit all the states in the transitions' exit set in exit order. |
| 405 | 3.13 | M | pass | pass | [the SCXML Processor executing a set of transitions] MUST then [after the onexits] execute the executable content contained in the transitions in doc… |
| 406 | 3.13 | M | pass | pass | [the SCXML Processor executing a set of transitions] MUST then [after the exits and the transitions] enter the states in the transitions' entry set i… |
| 407 | 3.13 | M | pass | pass | To exit a state, the SCXML Processor MUST execute the executable content in the state's onexit handler. |
| 409 | 3.13 | M | pass | pass | Finally [after the onexits and canceling the invocations], the Processor MUST remove the state from the active state's list. |
| 411 | 3.13 | M | pass | pass | To enter a state, the SCXML Processor MUST add the state to the active state's list. Then it MUST execute the executable content in the state's onent… |
| 412 | 3.13 | M | pass | pass | If the state is a default entry state and has an initial child, the SCXML Processor MUST then [after doing the active state add and the onentry handl… |
| 413 | 3.13 | M | pass | pass | At startup, the SCXML Processor MUST place the state machine in the configuration specified by the 'initial' attribute of the scxml element. |
| 416 | 3.13 | M | pass | pass | If it [the SCXML processor] has entered a final state that is a child of a compound state [during the last microstep], it MUST generate the event don… |
| 417 | 3.13 | M | pass | pass | If the compound state [which has the final element that we entered this microstep] is itself the child of a parallel element, and all the parallel el… |
| 419 | 3.13 | M | pass | pass | After checking the state configuration, the Processor MUST select the optimal transition set enabled by NULL in the current configuration. If the [op… |
| 421 | 3.13 | M | pass | pass | If the set (of eventless transitions) is empty, the Processor MUST remove events from the internal event queue until the queue is empty or it finds a… |
| 422 | 3.13 | M | pass | pass | After completing a macrostep, the SCXML Processor MUST execute in document order the invoke handlers in all states that have been entered (and not ex… |
| 423 | 3.13 | M | pass | pass | Then [after invoking the new invoke handlers since the last macrostep] the Processor MUST remove events from the external event queue, waiting till e… |
| 503 | 3.13 | M | pass | pass | If the transition does not contain a 'target', its exit set is empty. |
| 504 | 3.13 | M | pass | pass | if [a transition's] 'type' is "external", its exit set consists of all active states that are proper descendents of the Least Common Compound Ancesto… |
| 505 | 3.13 | M | pass | pass | Otherwise, if the transition has 'type' "internal", its source state is a compound state and all its target states are proper descendents of its sour… |
| 506 | 3.13 | M | pass | pass | If a transition has 'type' of "internal", but its source state is not a compound state or its target states are not all proper descendents of its sou… |
| 533 | 3.13 | M | pass | pass | If a transition has 'type' of "internal", but its source state is not a compound state, its exit set is defined as if it had 'type' of "external". |
| 144 | 4.2 | M | pass | pass | The SCXML processor MUST place the event that is generated by the raise element at the rear of the session's internal event queue. |
| 147 | 4.3 | M | pass | pass | When the if element is executed, the SCXML processor MUST execute the first partition in document order that is defined by a tag whose 'cond' attribu… |
| 148 | 4.3 | M | pass | pass | When the if element is executed, if no 'cond'attribute evaluates to true, the SCXML Processor must execute the partition defined by the else tag, if… |
| 149 | 4.3 | M | pass | pass | When it executes an if element, if no 'cond' attribute evaluates to true and there is no else element, the SCXML processor must not evaluate any exec… |
| 150 | 4.6 | M | pass | pass | In the foreach element, the SCXML processor MUST declare a new variable if the one specified by 'item' is not already defined. |
| 151 | 4.6 | M | pass | pass | In the foreach element, if 'index' is present, the SCXML processor MUST declare a new variable if the one specified by 'index' is not already defined. |
| 152 | 4.6 | M | pass | pass | In the foreach element, if 'array' does not evaluate to a legal iterable collection, or if 'item' does not specify a legal variable name, the SCXML p… |
| 153 | 4.6 | M | pass | pass | When evaluating foreach, the SCXML processor MUST start with the first item in the collection and proceed to the last item in the iteration order tha… |
| 155 | 4.6 | M | pass | pass | when evaluating foreach, for each item, after making the assignment, the SCXML processor MUST evaluate its child executable content. It MUST then pro… |
| 156 | 4.6 | M | pass | pass | If the evaluation of any child element of foreach causes an error, the processor MUST cease execution of the foreach element and the block that conta… |
| 525 | 4.6 | M | pass | pass | The SCXML processor MUST act as if it has made a shallow copy of the collection produced by the evaluation of 'array'. Specifically, modifications to… |
| 158 | 4.9 | M | pass | pass | The SCXML processor MUST execute the elements of a block of executable contentin document order. |
| 159 | 4.9 | M | pass | pass | If the processing of an element of executable content causes an error to be raised, the processor MUST NOT process the remaining elements of the bloc… |
| 276 | 5.3 | M | pass | pass | The SCXML Processor MUST allow the environment to provide values for top-level data elements at instantiation time. (Top-level data elements are thos… |
| 277 | 5.3 | M | pass | pass | If the value specified for a data element (by 'src', children, or the environment) is not a legal data value, the SCXML Processor MUST raise place er… |
| 279 | 5.3 | M | pass | pass | When 'binding' attribute on the scxml element is assigned the value "early" (the default), the SCXML Processor MUST create all data elements and assi… |
| 280 | 5.3 | M | pass | pass | When 'binding' attribute on the scxml element is assigned the value "late", the SCXML Processor MUST create the data elements at document initializat… |
| 550 | 5.3 | M | pass | pass | If the 'expr' attribute is present, the Platform MUST evaluate the corresponding expression at the time specified by the 'binding' attribute of scxml… |
| 551 | 5.3 | M | pass | pass | f child content is specified, the Platform MUST assign it as the value of the data element at the time specified by the 'binding' attribute of scxml. |
| 552 | 5.3 | M | pass | pass | If the 'src' attribute is present, the Platform MUST fetch the specified object at the time specified by the 'binding' attribute of scxml and MUST as… |
| 286 | 5.4 | M | pass | pass | If the location expression of an assign does not denote a valid location in the datamodel the processor MUST place the error error.execution in the i… |
| 287 | 5.4 | M | pass | pass | If the location expression of an assign denotes a valid location in the datamodel and if the value specified by 'expr' is a legal value for the locat… |
| 487 | 5.4 | M | pass | pass | If the value specified (by 'expr' or children) is not a legal value for the location specified, the processor MUST place the error error.execution in… |
| 294 | 5.5 | M | pass | pass | In cases where the SCXML Processor generates a 'done' event upon entry into the final state, it MUST evaluate the donedata elements param or content… |
| 527 | 5.6 | M | pass | pass | When the SCXML Processor evaluates the content element, if the 'expr' value expression is present, the Processor MUST evaluate it and use the result… |
| 528 | 5.6 | M | pass | pass | f the evaluation of 'expr' produces an error, the Processor MUST place error.execution in the internal event queue and use the empty string as the ou… |
| 529 | 5.6 | M | pass | pass | If the 'expr' attribute is not present, the Processor MUST use the children of content as the output. |
| 298 | 5.7 | M | pass | pass | If the 'location' attribute on a param element does not refer to a valid location in the data model, the processor MUST place the error error.executi… |
| 343 | 5.7 | M | pass | pass | If the 'location' attribute on a param element does not refer to a valid location in the data model, or if the evaluation of the 'expr' produces an e… |
| 488 | 5.7 | M | pass | pass | if the evaluation of the 'expr' produces an error, the processor MUST place the error error.execution on the internal event queue. |
| 302 | 5.8 | M | pass | pass | The SCXML Processor MUST evaluate any script element that is a child of scxml at document load time. N.B. This test is valid only for datamodels that… |
| 303 | 5.8 | M | pass | pass | The SCXML Processor MUST evaluate all script elements not children of scxml as part of normal executable content evaluation. N.B. This test is valid… |
| 304 | 5.8 | M | pass | pass | In a conformant SCXML document, the name of any script variable MAY be used as a location expression. N.B. This test is valid only for datamodels tha… |
| 309 | 5.9 | M | pass | pass | If a conditional expression cannot be evaluated as a boolean value ('true' or 'false') or if its evaluation causes an error, the SCXML processor MUST… |
| 310 | 5.9 | M | pass | pass | All datamodels MUST support the 'In()' predicate, which takes a stateID as its argument and returns true if the state machine is in that state. |
| 311 | 5.9 | M | pass | pass | If a location expression cannot be evaluated to yield a valid location, the SCXML processor MUST place the error error.execution in the internal even… |
| 312 | 5.9 | M | pass | pass | If a value expression does not return a legal data value, the SCXML processor MUST place the error error.execution in the internal event queue. |
| 344 | 5.9 | M | pass | pass | If a conditional expression cannot be evaluated as a boolean value ('true' or 'false') or if its evaluation causes an error, the SCXML processor MUST… |
| 318 | 5.10 | M | pass | pass | The SCXML Processor MUST bind the _event variable when an event is pulled off the internal or external event queue to be processed, and MUST keep the… |
| 319 | 5.10 | M | pass | pass | The SCXML Processor MUST NOT bind _event at initialization time until the first event is processed. |
| 321 | 5.10 | M | pass | pass | The Processor MUST bind the variable _sessionid at load time to the system-generated id for the current SCXML session. |
| 322 | 5.10 | M | pass | pass | The Processor MUST keep the _sessionid variable bound to the system-generated id until the session terminates. |
| 323 | 5.10 | M | pass | pass | The Processor MUST bind the variable _name at load time to the value of the 'name' attribute of the scxml element. a |
| 324 | 5.10 | M | pass | pass | The Processor MUST keep the _name variable bound to the value of the 'name' attribute of the scxml element until the session terminates. |
| 325 | 5.10 | M | pass | pass | The Processor MUST bind the variable _ioprocessors to a set of values, one for each Event I/O Processor that it supports. |
| 326 | 5.10 | M | pass | pass | The Processor MUST keep the _ioprocessors variable bound to its set of values until the session terminates. |
| 329 | 5.10 | M | pass | pass | The Processor MUST cause any attempt to change the value of a system variable to fail. |
| 330 | 5.10 | M | pass | pass | The SCXML Processor MUST insure that the following fields (name, type, sendid, origin, origintype, invokeid, data) are present in all events (_event… |
| 331 | 5.10 | M | pass | pass | The SCXML Processor MUST set the type property of _event to: "platform" (for events raised by the platform itself, such as error events), "internal"… |
| 332 | 5.10 | M | pass | pass | If the sending entity has specified a value for this, the Processor MUST set this field to that value. Otherwise, in the case of error events trigger… |
| 333 | 5.10 | M | pass | pass | For events other than error events triggered by a failed attempt to send an event, if the sending entity did not specify a value for the sendid field… |
| 335 | 5.10 | M | pass | pass | If an event was not received from an external entity, the Processor MUST leave the origin field blank. |
| 336 | 5.10 | M | pass | pass | For external events, the SCXML Processor SHOULD set the origintype field to a value which, in combination with the 'origin' field, will allow the rec… |
| 337 | 5.10 | M | pass | pass | For internal and platform events, the Processor MUST leave the origintype field blank. |
| 338 | 5.10 | M | pass | pass | If an event is generated from an invoked child process, the Processor MUST set the invokeid field to the invoke id of the invocation that triggered t… |
| 339 | 5.10 | M | pass | pass | If an event is not generated from an invoked child process, the Processor MUST leave the invokeid field blank. |
| 342 | 5.10 | M | pass | pass | The SCXML Processor MUST set the name field (of the _event variable) to the name of the event. |
| 346 | 5.10 | M | pass | pass | The Processor MUST place the error error.execution on the internal event queue when any attempt to change the value of a system variable is made. |
| 172 | 6.2 | M | pass | pass | If 'eventexpr' is present, the SCXML Processor MUST evaluate it when the parent send element is evaluated and treat the result as if it had been ente… |
| 173 | 6.2 | M | pass | pass | If 'targetexpr' is present, the SCXML Processor MUST evaluate it when the parent send element is evaluated and treat the result as if it had been ent… |
| 174 | 6.2 | M | pass | pass | If 'typexpr' is present, the SCXML Processor MUST evaluate it when the parent send element is evaluated and treat the result as if it had been entere… |
| 175 | 6.2 | M | pass | pass | If 'delayexpr' is present, the SCXML Processor MUST evaluate it when the parent send element is evaluated and treat the result as if it had been ente… |
| 176 | 6.2 | M | pass | pass | The SCXML Processor MUST evaluate param when the parent send element is evaluated and pass the resulting data unmodified to the external service when… |
| 179 | 6.2 | M | pass | pass | The SCXML Processor MUST evaluate the content element when the parent send element is evaluated and pass the resulting data unmodified to the externa… |
| 183 | 6.2 | M | pass | pass | If 'idlocation' is present, the SCXML Processor MUST generate an id when the parent send element is evaluated and store it in this location |
| 185 | 6.2 | M | pass | pass | If a delay is specified via 'delay' or 'delayexpr', the SCXML Processor MUST interpret the character string as a time interval. the SCXML Processor M… |
| 186 | 6.2 | M | pass | pass | The Processor MUST evaluate all arguments to send when the send element is evaluated, and not when the message is actually dispatched. |
| 187 | 6.2 | M | pass | pass | If the SCXML session terminates before the delay interval has elapsed, the SCXML Processor MUST discard the message without attempting to deliver it. |
| 194 | 6.2 | M | pass | pass | If the value of the 'target' or 'targetexpr' attribute is not supported or invalid, the Processor MUST place the error error.execution on the interna… |
| 198 | 6.2 | M | pass | pass | If neither the 'type' nor the 'typeexpr' is defined, the SCXML Processor MUST assume the default value of http://www.w3.org/TR/scxml/#SCXMLEventProce… |
| 199 | 6.2 | M | pass | pass | f the SCXML Processor does not support the type that is specified, it MUST place the event error.execution on the internal event queue. |
| 200 | 6.2 | M | pass | pass | SCXML Processors MUST support the type http://www.w3.org/TR/scxml/#SCXMLEventProcessor |
| 201 | 6.2 | O | fail | fail | Processors that support HTTP POST must use the value http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor for the "type" attribute |
| 205 | 6.2 | M | pass | pass | The sending SCXML Interpreter MUST not alter the content of the send and include it in the message that it sends to the destination specified in the… |
| 521 | 6.2 | M | pass | pass | f the Processor cannot dispatch the event, it MUST place the error error.communication on the internal event queue of the session that attempted to s… |
| 553 | 6.2 | M | pass | pass | If the evaluation of send's arguments produces an error, If the evaluation of send's arguments produces an error, the Processor MUST discard the mess… |
| 207 | 6.3 | M | pass | pass | The SCXML Processor MUST NOT allow cancel to affect events that were not raised in the same session. |
| 208 | 6.3 | M | pass | pass | The Processor SHOULD make its best attempt to cancel all delayed events with the specified id. |
| 210 | 6.3 | M | pass | pass | If the 'sendidexpr' attribute is present, the SCXML Processor MUST evaluate it when the parent cancel element is evaluated and treat the result as if… |
| 215 | 6.4 | M | pass | pass | If the typeexpr attribute is present, the SCXML Processor MUST evaluate it when the parent invoke element is evaluated and treat the result as if it… |
| 216 | 6.4 | M | pass | pass | If the srcexpr attribute is present, the SCXML Processor MUST evaluate it when the parent invoke element is evaluated and treat the result as if it h… |
| 220 | 6.4 | M | pass | pass | Platforms MUST support http://www.w3.org/TR/scxml/, as a value for the 'type' attribute |
| 223 | 6.4 | M | pass | pass | If the 'idlocation' attribute is present, the SCXML Processor MUST generate an id automatically when the invoke element is evaluated and store it in… |
| 224 | 6.4 | M | pass | pass | When the platform generates an identifier for 'idlocation', the identifier MUST have the form stateid.platformid, where stateid is the id of the stat… |
| 225 | 6.4 | M | pass | pass | n the automatically generated invoke identifier, platformid MUST be unique within the current session |
| 226 | 6.4 | M | pass | pass | When the invoke element is executed, the SCXML Processor MUST start a new logical instance of the external service specified in 'type' or 'typexpr',… |
| 228 | 6.4 | M | pass | pass | the Processor MUST keep track of the unique invokeid and insure that it is included in all events that the invoked service returns to the invoking se… |
| 229 | 6.4 | M | pass | pass | When the 'autoforward' attribute is set to true, the SCXML Processor MUST send an exact copy of every external event it receives to the invoked proce… |
| 232 | 6.4 | M | pass | pass | he invoked external service MAY return multiple events while it is processing |
| 233 | 6.4 | M | pass | pass | If there is a finalize handler in the instance of invoke that created the service that generated the event, the SCXML Processor MUST execute the code… |
| 234 | 6.4 | M | pass | pass | t MUST NOT execute the finalize handler in any other instance of invoke besides the one in the instance of invoke that created the service that gener… |
| 235 | 6.4 | M | pass | pass | Once the invoked external service has finished processing it MUST return a special event 'done.invoke.id' to the external event queue of the invoking… |
| 236 | 6.4 | M | pass | pass | The external service MUST NOT generate any other events after the invoke.done.invokeid event. |
| 237 | 6.4 | M | pass | pass | If the invoking session takes a transition out of the state containing the invoke before it receives the 'done.invoke.id' event, the SCXML Processor… |
| 239 | 6.4 | M | pass | pass | Invoked services of type http://www.w3.org/TR/scxml/, http://www.w3.org/TR/ccxml/, http://www.w3.org/TR/voicexml30/, or http://www.w3.org/TR/voicexml… |
| 240 | 6.4 | M | pass | pass | Invoked services of type http://www.w3.org/TR/scxml/, http://www.w3.org/TR/ccxml/, http://www.w3.org/TR/voicexml30/, or http://www.w3.org/TR/voicexml… |
| 241 | 6.4 | M | pass | pass | Invoked services MUST treat values specified by param and namelist identically. |
| 242 | 6.4 | M | pass | pass | Invoked services MUST also treat values specified by 'src' and content identically. |
| 243 | 6.4 | M | pass | pass | If the invoked process is of type http://www.w3.org/TR/scxml/ and 'name' of a param element in the invoke matches the 'id' of a data element in the t… |
| 244 | 6.4 | M | pass | pass | If the invoked process is of type http://www.w3.org/TR/scxml/ and the key of namelist item in the invoke matches the 'id' of a data element in the to… |
| 245 | 6.4 | M | pass | pass | If the invoked process is of type http://www.w3.org/TR/scxml/, and the name of a param element or the key of of a namelis item do not match the name… |
| 247 | 6.4 | M | pass | pass | If the invoked state machine is of type http://www.w3.org/TR/scxml/ and it reaches a top-level final state, the Processor MUST place the event done.i… |
| 252 | 6.4 | M | pass | pass | Once it cancels an invoked session, the Processor MUST NOT insert any events it receives from the invoked session into the external event queue of th… |
| 253 | 6.4 | M | pass | pass | When the invoked session is of type http://www.w3.org/TR/scxml/, The SCXML Processor MUST support the use of SCXML Event/IO processor (E.1 SCXML Even… |
| 530 | 6.4 | M | pass | pass | The SCXML Processor MUST evaluate a child content element when the parent invoke element is evaluated and pass the resulting data to the invoked serv… |
| 554 | 6.4 | M | pass | pass | if the evaluation of the invoke element's arguments arguments produces an error, the SCXML Processor MUST terminate the processing of the element wit… |
| 436 | B.1 | M | pass | pass | When the "datamodel" attribute of the scxml element has the value "null", the In() predicate must return 'true' if and only if that state is in the c… |
| 278 | B.2 | O | pass | pass | In the ECMAScript data model, the SCXML processor MUST allow any data element to be accessed from any state. |
| 444 | B.2 | O | pass | pass | In the ECMAScript datamodel, for each data element in the document, the SCXML Processor must create an ECMAScript variable object whose name is the v… |
| 445 | B.2 | O | pass | pass | In the ECMAScript datamodel for each data element in the document, if the variable object associated with the element is not assigned at the time ind… |
| 446 | B.2 | O | pass | pass | In the ECMAScript data model, if either the 'src' attribute or in-line content is provided in the data elemenet, then if the content (whether fetched… |
| 448 | B.2 | O | pass | pass | In the ECMAScript datamodel, the SCXML Processor must place all variables in a single global ECMAScript scope. |
| 449 | B.2 | O | pass | pass | In the ECMAScript datamodel, the SCXML Processor must convert ECMAScript expressions used in conditional expressions into their effective boolean val… |
| 451 | B.2 | O | pass | pass | In the ECMAScript datamodel, the SCXML Processor must add an ECMAScript function 'In()' to the SCXML namespace that takes a stateID as its argument a… |
| 452 | B.2 | O | pass | pass | In the ECMAScript datamodel, the SCXML Processor must accept any ECMAScript left-hand-side expression as a location expression. |
| 453 | B.2 | O | pass | pass | In the ECMAScript datamodel, the SCXML Processor must accept any ECMAScript expression as a value expression. |
| 456 | B.2 | O | pass | pass | the SCXML Processor must accept any ECMAScript program as defined in Section 14 of [ECMASCRIPT-262] as the content of a script element. |
| 457 | B.2 | O | pass | pass | In the ECMAScript data model, the legal iterable collections are arrays, namely objects that satisfy instanceof(Array) in ECMAScript. The legal value… |
| 459 | B.2 | O | pass | pass | In the ECMAScript data model, the iteration order for the foreach element is the order of the underlying ECMAScript array, and goes from an index of… |
| 460 | B.2 | O | pass | pass | In the ECMAScript data model, since shallow copy is required for the foreach element, foreach assignment is equivalent to item = array_name[index] in… |
| 557 | B.2 | O | pass | pass | In the ECMAScript data model, if either the 'src' attribute or in-line content is provided in the data element, then if the content (whether fetched… |
| 558 | B.2 | O | pass | pass | In the ECMAScript datamodel, if either the 'src' attribute or in-line content is provided in the data element, and the content (whether fetched or pr… |
| 560 | B.2 | O | pass | pass | In the ECMAScript data model, if the content provided to populate _event.data can be interpeted as key-value pairs, then for each unique key, the SCX… |
| 561 | B.2 | O | pass | pass | In the ECMAScript data model, if the content provided to populate _event.data can be interpreted as a valid XML document (and cannot be interpreted a… |
| 562 | B.2 | O | pass | pass | In the ECMAScript data model, if the content provided to populate _event.data is neither key-value pairs nor JSON nor a valid XML document, the Proce… |
| 569 | B.2 | O | pass | pass | For the _ioprocessors system variable in the ECMAScript datamodel the Processor MUST create an array with an object for each Event I/O processor that… |
| 578 | B.2 | O | pass | pass | In the ECMAScript data model, if the content provided to populate _event.data cannot be interpreted as key value pairs and can be interpeted as JSON… |
| 189 | C.1 | M | pass | pass | When using the scxml event i/o processor] If the target is the special term '#_internal', the Processor MUST add the event to the internal event queu… |
| 190 | C.1 | M | pass | pass | [When using the scxml event i/o processor] If the target is the special term '#_scxml_sessionid', where sessionid is the id of an SCXML session that… |
| 191 | C.1 | M | pass | pass | [When using the scxml event i/o processor] If the target is the special term '#_parent', the Processor MUST add the event to the external event queue… |
| 192 | C.1 | M | pass | pass | [When using the scxml event i/o processor] If the target is the special term '#_invokeid', where invokeid is the invokeid of an SCXML session that th… |
| 193 | C.1 | O | pass | pass | [When using the scxml event i/o processor] If neither the 'target' nor the 'targetexpr' attribute is specified, the SCXML Processor MUST add the even… |
| 347 | C.1 | M | pass | pass | SCXML Processors MUST support sending messages to and receiving messages from other SCXML sessions using the SCXML Event I/O Processor. |
| 348 | C.1 | M | pass | pass | name'. The sending SCXML Processor MUST take the value of this attribute from the 'event' attribute of the send element. The receiving SCXML Processo… |
| 349 | C.1 | M | pass | pass | source'. The sending SCXML Processor MUST populate this attribute with a URI that the receiving processor can use to reply to the sending processor.… |
| 350 | C.1 | M | pass | pass | target'. The sending SCXML Processor MUST take the value of this attribute from the 'target' attribute of the send element. The receiving SCXML Proce… |
| 351 | C.1 | M | pass | pass | sendid'. the sending SCXML Processor MUST populate this attribute with the identifier specified in the 'id' attribute or automatically generated by t… |
| 352 | C.1 | M | pass | pass | 'sourcetype'. The sending SCXML Processor MUST assign this attribute the value "scxml". (Note that other types of senders will assign different value… |
| 354 | C.1 | M | pass | pass | The 'data' field of the event raised in the receiving session MUST contain a copy of the data specified in the 'namelist' attribute or in param or co… |
| 495 | C.1 | M | pass | pass | If no errors occur, the receiving Processor MUST convert the message into an SCXML event, using the mapping defined above and insert it into the appr… |
| 496 | C.1 | M | pass | pass | If the sending SCXML session specifies a session that does not exist or is inaccessible, the SCXML Processor MUST place the error error.communication… |
| 500 | C.1 | M | pass | pass | SCXML Processors that support the BasicHTTP Event I/O Processor MUST maintain a 'scxml' entry in the _ioprocessors system variable. The Processor MUS… |
| 501 | C.1 | M | pass | pass | The 'location' field inside the entry for the SCXML Event I/O Processor in the _ioprocessors system variable MUST hold an address that external entit… |
| 509 | C.2 | O | fail | fail | An SCXML Processor that supports the Basic HTTP Event I/O Processor MUST accept messages at the access URI as HTTP POST requests |
| 510 | C.2 | O | fail | fail | The SCXML Processor MUST validate the message it receives [via the Basic HTTP Event I/O Processor] and then MUST build the appropriate SCXML event an… |
| 518 | C.2 | O | fail | fail | If the namelist attribute is defined [in send], the SCXML Processor MUST map its variable names and values to HTTP POST parameters |
| 519 | C.2 | O | fail | fail | If one or more param children are present [in send], the SCXML Processor MUST map their names (i.e. name attributes) and values to HTTP POST paramete… |
| 520 | C.2 | O | fail | fail | If a content child is present, the SCXML Processor MUST use its value as the body of the message. |
| 522 | C.2 | O | fail | fail | SCXML Processors that support the BasicHTTP Event I/O Processor MUST maintain a 'basichttp' entry in the _ioprocessors system variable. The Processor… |
| 531 | C.2 | O | fail | fail | If a single instance of the parameter '_scxmleventname' is present, the SCXML Processor MUST use its value as the name of the SCXML event that it rai… |
| 532 | C.2 | O | fail | fail | If _scxmleventname is not present, the Processor MUST the name of the HTTP method that was used to deliver the event as name of the SCXML event that… |
| 534 | C.2 | O | fail | fail | If the 'event' parameter of send is defined, the SCXML Processor MUST use its value as the value of the HTTP POST parameter _scxmleventname |
| 567 | C.2 | O | fail | fail | The processor MUST use any message content other than '_scxmleventname' to populate _event.data. |
| 577 | C.2 | O | fail | fail | If neither the 'target' nor the 'targetexpr' attribute is specified, the SCXML Processor MUST add the event error.communication to the internal event… |
M = mandatory, O = optional.