jbeard4 / SCION

SCXML/Statecharts in JavaScript, moved to gitlab: https://gitlab.com/scion-scxml/scion
https://scion.scxml.io
Apache License 2.0
149 stars 29 forks source link

error test/scxml-test-framework/test/w3c-ecma/test153.txml.scxml #284

Closed feyzo closed 9 years ago

feyzo commented 10 years ago

https://github.com/jbeard4/scxml-test-framework/tree/master/test/scxml-test-framework/test/w3c-ecma/test153.txml.scxml

Error

null
Data:
"text is not defined"
scxml:

<?xml version="1.0" encoding="UTF-8"?>
<!-- test that foreach goes over the array in the right order.  since the array contains 1 2 3, we compare the current 
value with the previous value, which is stored in var1. The current value should always be larger.  If
it ever isn't, set Var4 to 0, indicating failure -->
<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="ecmascript">
<datamodel>
  <data id="Var1" expr="0"/> <!-- contains the previous value -->
  <data id="Var2"/> <!-- the item which will contain the current value -->
  <data id="Var3">
    [1,2,3]
    </data>
  <data id="Var4" expr="1"/> <!-- 1 if success, 0 if failure -->
  </datamodel>

   <state id="s0">
      <onentry>
        <foreach item="Var2" array="Var3">
         <if cond="Var1/text() &lt;Var2/text() ">
         <assign location="Var1" expr="Var2"/>
         <else/>
         <!-- values are out of order, record failure -->
         <assign location="Var4" expr="0"/>
         </if>
          </foreach>
        </onentry>

  <!-- check that var1 has its original value  -->
  <transition cond="Var4==0" target="fail"/>
  <transition target="pass"/>
  </state> 

   <final id="pass"><onentry><log label="Outcome" expr="'pass'"/></onentry></final>
   <final id="fail"><onentry><log label="Outcome" expr="'fail'"/></onentry></final>

</scxml>

JSON:

{
"initialConfiguration": [
"pass"
],
"events": []
}

jbeard4 commented 9 years ago

It looks like this test was generated using the XPath datamodel XSL. We should generate it using the ECMAScript datamodel XSL. Unfortunately, I haven't been able to find a stylesheet processor that can run the stylesheets, so we need to follow up with the working group to determine what XSL processor they recommend using.

For now, let's just edit by hand the problematic cond attribute to the value Var1 &lt; Var2

Reference: http://www.w3.org/Voice/2013/scxml-irp/confEcma.xsl