<xml xmlns="http://www.w3.org/1999/xhtml"> <block type="unittest_main" x="0" y="1"> <statement name="DO"> <block type="procedures_callnoreturn"> <mutation name="test procedure"></mutation> <next> <block type="procedures_callnoreturn"> <mutation name="test function"></mutation> <next> <block type="unittest_assertequals" inline="false"> <value name="MESSAGE"> <block type="text"> <field name="TEXT">test recurse</field> </block> </value> <value name="ACTUAL"> <block type="procedures_callreturn" inline="false"> <mutation name="recurse"> <arg name="n"></arg> </mutation> <value name="ARG0"> <block type="math_number"> <field name="NUM">3</field> </block> </value> </block> </value> <value name="EXPECTED"> <block type="text"> <field name="TEXT">-1-2-1-3-1-2-1-</field> </block> </value> </block> </next> </block> </next> </block> </statement> </block> <block type="procedures_defnoreturn" x="-3" y="249"> <field name="NAME">test procedure</field> <statement name="STACK"> <block type="procedures_callnoreturn" inline="false"> <mutation name="procedure 1"> <arg name="proc x"></arg> <arg name="proc y"></arg> </mutation> <value name="ARG0"> <block type="math_number"> <field name="NUM">8</field> </block> </value> <value name="ARG1"> <block type="math_number"> <field name="NUM">2</field> </block> </value> <next> <block type="unittest_assertequals" inline="false"> <value name="MESSAGE"> <block type="text"> <field name="TEXT">procedure with global</field> </block> </value> <value name="ACTUAL"> <block type="variables_get"> <field name="VAR">proc z</field> </block> </value> <value name="EXPECTED"> <block type="math_number"> <field name="NUM">4</field> </block> </value> <next> <block type="variables_set" inline="false"> <field name="VAR">proc w</field> <value name="VALUE"> <block type="logic_boolean"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="procedures_callnoreturn" inline="false"> <mutation name="procedure 2"> <arg name="proc x"></arg> </mutation> <value name="ARG0"> <block type="logic_boolean"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="unittest_assertvalue" inline="false"> <value name="MESSAGE"> <block type="text"> <field name="TEXT">procedure no return</field> </block> </value> <field name="EXPECTED">TRUE</field> <value name="ACTUAL"> <block type="variables_get"> <field name="VAR">proc w</field> </block> </value> <next> <block type="variables_set" inline="false"> <field name="VAR">proc w</field> <value name="VALUE"> <block type="logic_boolean"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="procedures_callnoreturn" inline="false"> <mutation name="procedure 2"> <arg name="proc x"></arg> </mutation> <value name="ARG0"> <block type="logic_boolean"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="unittest_assertvalue" inline="false"> <value name="MESSAGE"> <block type="text"> <field name="TEXT">procedure return</field> </block> </value> <field name="EXPECTED">FALSE</field> <value name="ACTUAL"> <block type="variables_get"> <field name="VAR">proc w</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> <block type="procedures_defnoreturn" x="302" y="277"> <mutation> <arg name="proc x"></arg> <arg name="proc y"></arg> </mutation> <field name="NAME">procedure 1</field> <statement name="STACK"> <block type="variables_set" inline="false"> <field name="VAR">proc z</field> <value name="VALUE"> <block type="math_arithmetic"> <field name="OP">DIVIDE</field> <value name="A"> <block type="variables_get"> <field name="VAR">proc x</field> </block> </value> <value name="B"> <block type="variables_get"> <field name="VAR">proc y</field> </block> </value> </block> </value> </block> </statement> </block> <block type="procedures_defnoreturn" x="307" y="435"> <mutation> <arg name="proc x"></arg> </mutation> <field name="NAME">procedure 2</field> <statement name="STACK"> <block type="procedures_ifreturn"> <mutation value="0"></mutation> <value name="CONDITION"> <block type="variables_get"> <field name="VAR">proc x</field> </block> </value> <next> <block type="variables_set" inline="false"> <field name="VAR">proc w</field> <value name="VALUE"> <block type="logic_boolean"> <field name="BOOL">TRUE</field> </block> </value> </block> </next> </block> </statement> </block> <block type="procedures_defnoreturn" x="-2" y="731"> <field name="NAME">test function</field> <statement name="STACK"> <block type="unittest_assertequals" inline="false"> <value name="MESSAGE"> <block type="text"> <field name="TEXT">function with arguments</field> </block> </value> <value name="ACTUAL"> <block type="procedures_callreturn" inline="false"> <mutation name="function 1"> <arg name="func x"></arg> <arg name="func y"></arg> </mutation> <value name="ARG0"> <block type="math_number"> <field name="NUM">2</field> </block> </value> <value name="ARG1"> <block type="math_number"> <field name="NUM">3</field> </block> </value> </block> </value> <value name="EXPECTED"> <block type="math_number"> <field name="NUM">-1</field> </block> </value> <next> <block type="unittest_assertequals" inline="false"> <value name="MESSAGE"> <block type="text"> <field name="TEXT">function with side effect</field> </block> </value> <value name="ACTUAL"> <block type="variables_get"> <field name="VAR">func z</field> </block> </value> <value name="EXPECTED"> <block type="text"> <field name="TEXT">side effect</field> </block> </value> <next> <block type="variables_set" inline="false"> <field name="VAR">func a</field> <value name="VALUE"> <block type="text"> <field name="TEXT">unchanged</field> </block> </value> <next> <block type="variables_set" inline="false"> <field name="VAR">func c</field> <value name="VALUE"> <block type="text"> <field name="TEXT">global</field> </block> </value> <next> <block type="unittest_assertequals" inline="false"> <value name="MESSAGE"> <block type="text"> <field name="TEXT">function with global</field> </block> </value> <value name="ACTUAL"> <block type="procedures_callreturn" inline="false"> <mutation name="function 2"> <arg name="func a"></arg> </mutation> <value name="ARG0"> <block type="math_number"> <field name="NUM">2</field> </block> </value> </block> </value> <value name="EXPECTED"> <block type="text"> <field name="TEXT">3global</field> </block> </value> <next> <block type="unittest_assertequals" inline="false"> <value name="MESSAGE"> <block type="text"> <field name="TEXT">function with scope</field> </block> </value> <value name="ACTUAL"> <block type="variables_get"> <field name="VAR">func a</field> </block> </value> <value name="EXPECTED"> <block type="text"> <field name="TEXT">unchanged</field> </block> </value> <next> <block type="unittest_assertvalue" inline="false"> <value name="MESSAGE"> <block type="text"> <field name="TEXT">function return</field> </block> </value> <field name="EXPECTED">TRUE</field> <value name="ACTUAL"> <block type="procedures_callreturn" inline="false"> <mutation name="function 3"> <arg name="func a"></arg> </mutation> <value name="ARG0"> <block type="logic_boolean"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <next> <block type="unittest_assertvalue" inline="false"> <value name="MESSAGE"> <block type="text"> <field name="TEXT">function no return</field> </block> </value> <field name="EXPECTED">FALSE</field> <value name="ACTUAL"> <block type="procedures_callreturn" inline="false"> <mutation name="function 3"> <arg name="func a"></arg> </mutation> <value name="ARG0"> <block type="logic_boolean"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> <block type="procedures_defreturn" inline="false" x="-3" y="1384"> <mutation> <arg name="func x"></arg> <arg name="func y"></arg> </mutation> <field name="NAME">function 1</field> <statement name="STACK"> <block type="variables_set" inline="false"> <field name="VAR">func z</field> <value name="VALUE"> <block type="text"> <field name="TEXT">side effect</field> </block> </value> </block> </statement> <value name="RETURN"> <block type="math_arithmetic"> <field name="OP">MINUS</field> <value name="A"> <block type="variables_get"> <field name="VAR">func x</field> </block> </value> <value name="B"> <block type="variables_get"> <field name="VAR">func y</field> </block> </value> </block> </value> </block> <block type="procedures_defreturn" inline="false" x="-1" y="1503"> <mutation> <arg name="func a"></arg> </mutation> <field name="NAME">function 2</field> <statement name="STACK"> <block type="math_change" inline="false"> <field name="VAR">func a</field> <value name="DELTA"> <block type="math_number"> <field name="NUM">1</field> </block> </value> </block> </statement> <value name="RETURN"> <block type="text_join" inline="false"> <mutation items="2"></mutation> <value name="ADD0"> <block type="variables_get"> <field name="VAR">func a</field> </block> </value> <value name="ADD1"> <block type="variables_get"> <field name="VAR">func c</field> </block> </value> </block> </value> </block> <block type="procedures_defreturn" inline="false" x="0" y="1655"> <mutation> <arg name="func a"></arg> </mutation> <field name="NAME">function 3</field> <statement name="STACK"> <block type="procedures_ifreturn"> <mutation value="1"></mutation> <value name="CONDITION"> <block type="variables_get"> <field name="VAR">func a</field> </block> </value> <value name="VALUE"> <block type="logic_boolean"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> <value name="RETURN"> <block type="logic_boolean"> <field name="BOOL">FALSE</field> </block> </value> </block> <block type="procedures_defreturn" inline="false" x="0" y="1789"> <mutation> <arg name="n"></arg> </mutation> <field name="NAME">recurse</field> <statement name="STACK"> <block type="controls_if" inline="false"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare"> <field name="OP">GT</field> <value name="A"> <block type="variables_get"> <field name="VAR">n</field> </block> </value> <value name="B"> <block type="math_number"> <field name="NUM">0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" inline="false"> <field name="VAR">text</field> <value name="VALUE"> <block type="text_join" inline="false"> <mutation items="3"></mutation> <value name="ADD0"> <block type="procedures_callreturn" inline="false"> <mutation name="recurse"> <arg name="n"></arg> </mutation> <value name="ARG0"> <block type="math_arithmetic"> <field name="OP">MINUS</field> <value name="A"> <block type="variables_get"> <field name="VAR">n</field> </block> </value> <value name="B"> <block type="math_number"> <field name="NUM">1</field> </block> </value> </block> </value> </block> </value> <value name="ADD1"> <block type="variables_get"> <field name="VAR">n</field> </block> </value> <value name="ADD2"> <block type="procedures_callreturn" inline="false"> <mutation name="recurse"> <arg name="n"></arg> </mutation> <value name="ARG0"> <block type="math_arithmetic"> <field name="OP">MINUS</field> <value name="A"> <block type="variables_get"> <field name="VAR">n</field> </block> </value> <value name="B"> <block type="math_number"> <field name="NUM">1</field> </block> </value> </block> </value> </block> </value> </block> </value> </block> </statement> <statement name="ELSE"> <block type="variables_set" inline="false"> <field name="VAR">text</field> <value name="VALUE"> <block type="text"> <field name="TEXT">-</field> </block> </value> </block> </statement> </block> </statement> <value name="RETURN"> <block type="variables_get"> <field name="VAR">text</field> </block> </value> </block> </xml>