File "text.xml"
Full path: /usr/home/mndrn/domains/mndrn.ru/public_html/block-hill/blockly/tests/generators/text.xml
File size: 316.1 KiB (323686 bytes)
MIME-type: text/plain
Charset: utf-8
<xml xmlns="https://developers.google.com/blockly/xml">
<block type="unittest_main" x="13" y="-63">
<field name="SUITE_NAME">Text</field>
<statement name="DO">
<block type="procedures_callnoreturn">
<mutation name="test text length"></mutation>
<next>
<block type="procedures_callnoreturn">
<mutation name="test empty text"></mutation>
<next>
<block type="procedures_callnoreturn">
<mutation name="test create text"></mutation>
<next>
<block type="procedures_callnoreturn">
<mutation name="test append"></mutation>
<next>
<block type="procedures_callnoreturn">
<mutation name="test find text simple"></mutation>
<next>
<block type="procedures_callnoreturn">
<mutation name="test find text complex"></mutation>
<next>
<block type="procedures_callnoreturn">
<mutation name="test get text simple"></mutation>
<next>
<block type="procedures_callnoreturn">
<mutation name="test get text complex"></mutation>
<next>
<block type="procedures_callnoreturn">
<mutation name="test substring simple"></mutation>
<next>
<block type="procedures_callnoreturn">
<mutation name="test substring complex"></mutation>
<next>
<block type="procedures_callnoreturn">
<mutation name="test case"></mutation>
<next>
<block type="procedures_callnoreturn">
<mutation name="test trim"></mutation>
<next>
<block type="procedures_callnoreturn">
<mutation name="test count text"></mutation>
<next>
<block type="procedures_callnoreturn">
<mutation name="test text reverse"></mutation>
<next>
<block type="procedures_callnoreturn">
<mutation name="test replace"></mutation>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
<block type="procedures_defnoreturn" x="13" y="388">
<mutation>
<arg name="test name"></arg>
</mutation>
<field name="NAME">check number of calls</field>
<comment pinned="false" h="69" w="256">Checks that the number of calls is one in order to confirm that a function was only called once.</comment>
<statement name="STACK">
<block type="text_append">
<field name="VAR">test name</field>
<value name="TEXT">
<block type="text">
<field name="TEXT">number of calls</field>
</block>
</value>
<next>
<block type="unittest_assertequals">
<value name="MESSAGE">
<block type="variables_get">
<field name="VAR">test name</field>
</block>
</value>
<value name="ACTUAL">
<block type="variables_get">
<field name="VAR">number of calls</field>
</block>
</value>
<value name="EXPECTED">
<block type="math_number">
<field name="NUM">1</field>
</block>
</value>
</block>
</next>
</block>
</statement>
</block>
<block type="procedures_defnoreturn" x="13" y="563">
<field name="NAME">test create text</field>
<comment pinned="false" h="80" w="160">Tests the "create text with" block with varying number of inputs.</comment>
<statement name="STACK">
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">no text</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_join" inline="false">
<mutation items="0"></mutation>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT"></field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">create single</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_join" inline="false">
<mutation items="1"></mutation>
<value name="ADD0">
<block type="text">
<field name="TEXT">Hello</field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">Hello</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">create single number</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_join" inline="false">
<mutation items="1"></mutation>
<value name="ADD0">
<block type="math_number">
<field name="NUM">-1</field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">-1</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">create double text</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_join" inline="true">
<mutation items="2"></mutation>
<value name="ADD0">
<block type="text">
<field name="TEXT">K</field>
</block>
</value>
<value name="ADD1">
<block type="math_number">
<field name="NUM">9</field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">K9</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">create double text numbers</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_join" inline="true">
<mutation items="2"></mutation>
<value name="ADD0">
<block type="math_number">
<field name="NUM">4</field>
</block>
</value>
<value name="ADD1">
<block type="math_number">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">42</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">create triple</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_join" inline="true">
<mutation items="3"></mutation>
<value name="ADD0">
<block type="math_number">
<field name="NUM">1</field>
</block>
</value>
<value name="ADD1">
<block type="math_number">
<field name="NUM">2</field>
</block>
</value>
<value name="ADD2">
<block type="math_number">
<field name="NUM">3</field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">123</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">create order</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_join" inline="false">
<mutation items="3"></mutation>
<value name="ADD0">
<block type="math_number">
<field name="NUM">1</field>
</block>
</value>
<value name="ADD1">
<block type="logic_ternary" inline="true">
<value name="IF">
<block type="logic_boolean">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="THEN">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<value name="ELSE">
<block type="logic_null"></block>
</value>
</block>
</value>
<value name="ADD2">
<block type="text">
<field name="TEXT">M</field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">10M</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
<block type="procedures_defreturn" x="13" y="1263">
<mutation statements="false"></mutation>
<field name="NAME">get empty</field>
<comment pinned="false" h="80" w="160">Creates an empty string for use with the empty test.</comment>
<value name="RETURN">
<block type="text">
<field name="TEXT"></field>
</block>
</value>
</block>
<block type="procedures_defnoreturn" x="13" y="1338">
<field name="NAME">test empty text</field>
<comment pinned="false" h="80" w="160">Tests the "is empty" block".</comment>
<statement name="STACK">
<block type="unittest_assertvalue" inline="false">
<field name="EXPECTED">FALSE</field>
<value name="MESSAGE">
<block type="text">
<field name="TEXT">not empty</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_isEmpty" inline="true">
<value name="VALUE">
<block type="text">
<field name="TEXT">Google</field>
</block>
</value>
</block>
</value>
<next>
<block type="unittest_assertvalue" inline="false">
<field name="EXPECTED">TRUE</field>
<value name="MESSAGE">
<block type="text">
<field name="TEXT">empty</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_isEmpty" inline="true">
<value name="VALUE">
<block type="text">
<field name="TEXT"></field>
</block>
</value>
</block>
</value>
<next>
<block type="unittest_assertvalue" inline="false">
<field name="EXPECTED">TRUE</field>
<value name="MESSAGE">
<block type="text">
<field name="TEXT">empty complex</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_isEmpty" inline="true">
<value name="VALUE">
<block type="procedures_callreturn">
<mutation name="get empty"></mutation>
</block>
</value>
</block>
</value>
<next>
<block type="unittest_assertvalue" inline="false">
<field name="EXPECTED">TRUE</field>
<value name="MESSAGE">
<block type="text">
<field name="TEXT">empty order</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_isEmpty" inline="true">
<value name="VALUE">
<block type="logic_ternary" inline="true">
<value name="IF">
<block type="logic_boolean">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="THEN">
<block type="text">
<field name="TEXT"></field>
</block>
</value>
<value name="ELSE">
<block type="logic_null"></block>
</value>
</block>
</value>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
<block type="procedures_defnoreturn" x="13" y="1663">
<field name="NAME">test text length</field>
<comment pinned="false" h="80" w="160">Tests the "length" block.</comment>
<statement name="STACK">
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">zero length</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_length" inline="false">
<value name="VALUE">
<block type="text">
<field name="TEXT"></field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">non-zero length</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_length" inline="false">
<value name="VALUE">
<block type="text">
<field name="TEXT">Google</field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="math_number">
<field name="NUM">6</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">length order</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_length" inline="false">
<value name="VALUE">
<block type="logic_ternary" inline="true">
<value name="IF">
<block type="logic_boolean">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="THEN">
<block type="text">
<field name="TEXT">car</field>
</block>
</value>
<value name="ELSE">
<block type="logic_null"></block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="math_number">
<field name="NUM">3</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
<block type="procedures_defnoreturn" x="13" y="1963">
<field name="NAME">test append</field>
<comment pinned="false" h="80" w="160">Tests the "append text" block with different types of parameters.</comment>
<statement name="STACK">
<block type="variables_set" inline="false">
<field name="VAR">item</field>
<value name="VALUE">
<block type="text">
<field name="TEXT">Miserable</field>
</block>
</value>
<next>
<block type="text_append" inline="false">
<field name="VAR">item</field>
<value name="TEXT">
<block type="text">
<field name="TEXT">Failure</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">append text</field>
</block>
</value>
<value name="ACTUAL">
<block type="variables_get">
<field name="VAR">item</field>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">MiserableFailure</field>
</block>
</value>
<next>
<block type="variables_set" inline="false">
<field name="VAR">item</field>
<value name="VALUE">
<block type="math_number">
<field name="NUM">12</field>
</block>
</value>
<next>
<block type="text_append" inline="false">
<field name="VAR">item</field>
<value name="TEXT">
<block type="math_number">
<field name="NUM">34</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">append number</field>
</block>
</value>
<value name="ACTUAL">
<block type="variables_get">
<field name="VAR">item</field>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">1234</field>
</block>
</value>
<next>
<block type="variables_set" inline="false">
<field name="VAR">item</field>
<value name="VALUE">
<block type="text">
<field name="TEXT">Something </field>
</block>
</value>
<next>
<block type="text_append" inline="false">
<field name="VAR">item</field>
<value name="TEXT">
<block type="logic_ternary" inline="true">
<value name="IF">
<block type="logic_boolean">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="THEN">
<block type="text">
<field name="TEXT">Positive</field>
</block>
</value>
<value name="ELSE">
<block type="logic_null"></block>
</value>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">append order</field>
</block>
</value>
<value name="ACTUAL">
<block type="variables_get">
<field name="VAR">item</field>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">Something Positive</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
<block type="procedures_defnoreturn" x="13" y="2438">
<field name="NAME">test find text simple</field>
<comment pinned="false" h="80" w="160">Tests the "find" block with a variable.</comment>
<statement name="STACK">
<block type="variables_set" inline="false">
<field name="VAR">text</field>
<value name="VALUE">
<block type="text">
<field name="TEXT">Banana</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">find first simple</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_indexOf">
<field name="END">FIRST</field>
<value name="VALUE">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
<value name="FIND">
<block type="text">
<field name="TEXT">an</field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">find last simple</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_indexOf">
<field name="END">LAST</field>
<value name="VALUE">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
<value name="FIND">
<block type="text">
<field name="TEXT">an</field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">3</field>
</block>
</value>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">find none simple</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_indexOf">
<field name="END">FIRST</field>
<value name="VALUE">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
<value name="FIND">
<block type="text">
<field name="TEXT">Peel</field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">-1</field>
</block>
</value>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
<block type="procedures_defreturn" x="13" y="2838">
<field name="NAME">get fruit</field>
<comment pinned="false" h="80" w="160">Creates a string for use with the find test.</comment>
<statement name="STACK">
<block type="math_change">
<field name="VAR">number of calls</field>
<value name="DELTA">
<block type="math_number">
<field name="NUM">1</field>
</block>
</value>
</block>
</statement>
<value name="RETURN">
<block type="text">
<field name="TEXT">Banana</field>
</block>
</value>
</block>
<block type="procedures_defnoreturn" x="13" y="2938">
<field name="NAME">test find text complex</field>
<comment pinned="false" h="80" w="160">Tests the "find" block with a function call.</comment>
<statement name="STACK">
<block type="variables_set">
<field name="VAR">number of calls</field>
<value name="VALUE">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">find first complex</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_indexOf">
<field name="END">FIRST</field>
<value name="VALUE">
<block type="procedures_callreturn">
<mutation name="get fruit"></mutation>
</block>
</value>
<value name="FIND">
<block type="text">
<field name="TEXT">an</field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
<next>
<block type="procedures_callnoreturn" inline="true">
<mutation name="check number of calls">
<arg name="test name"></arg>
</mutation>
<value name="ARG0">
<block type="text">
<field name="TEXT">find first complex</field>
</block>
</value>
<next>
<block type="variables_set">
<field name="VAR">number of calls</field>
<value name="VALUE">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">find first order complex</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_indexOf">
<field name="END">FIRST</field>
<value name="VALUE">
<block type="logic_ternary" inline="true">
<value name="IF">
<block type="logic_boolean">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="THEN">
<block type="procedures_callreturn">
<mutation name="get fruit"></mutation>
</block>
</value>
<value name="ELSE">
<block type="logic_null"></block>
</value>
</block>
</value>
<value name="FIND">
<block type="text">
<field name="TEXT">an</field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
<next>
<block type="procedures_callnoreturn" inline="true">
<mutation name="check number of calls">
<arg name="test name"></arg>
</mutation>
<value name="ARG0">
<block type="text">
<field name="TEXT">find first order complex</field>
</block>
</value>
<next>
<block type="variables_set">
<field name="VAR">number of calls</field>
<value name="VALUE">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">find last complex</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_indexOf">
<field name="END">LAST</field>
<value name="VALUE">
<block type="procedures_callreturn">
<mutation name="get fruit"></mutation>
</block>
</value>
<value name="FIND">
<block type="text">
<field name="TEXT">an</field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">3</field>
</block>
</value>
</block>
</value>
<next>
<block type="procedures_callnoreturn" inline="true">
<mutation name="check number of calls">
<arg name="test name"></arg>
</mutation>
<value name="ARG0">
<block type="text">
<field name="TEXT">find last complex</field>
</block>
</value>
<next>
<block type="variables_set">
<field name="VAR">number of calls</field>
<value name="VALUE">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">find last order complex</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_indexOf">
<field name="END">LAST</field>
<value name="VALUE">
<block type="logic_ternary" inline="true">
<value name="IF">
<block type="logic_boolean">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="THEN">
<block type="procedures_callreturn">
<mutation name="get fruit"></mutation>
</block>
</value>
<value name="ELSE">
<block type="logic_null"></block>
</value>
</block>
</value>
<value name="FIND">
<block type="text">
<field name="TEXT">an</field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">3</field>
</block>
</value>
</block>
</value>
<next>
<block type="procedures_callnoreturn" inline="true">
<mutation name="check number of calls">
<arg name="test name"></arg>
</mutation>
<value name="ARG0">
<block type="text">
<field name="TEXT">find last order complex</field>
</block>
</value>
<next>
<block type="variables_set">
<field name="VAR">number of calls</field>
<value name="VALUE">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">find none complex</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_indexOf">
<field name="END">FIRST</field>
<value name="VALUE">
<block type="procedures_callreturn">
<mutation name="get fruit"></mutation>
</block>
</value>
<value name="FIND">
<block type="text">
<field name="TEXT">Peel</field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">-1</field>
</block>
</value>
</block>
</value>
<next>
<block type="procedures_callnoreturn" inline="true">
<mutation name="check number of calls">
<arg name="test name"></arg>
</mutation>
<value name="ARG0">
<block type="text">
<field name="TEXT">find none complex</field>
</block>
</value>
<next>
<block type="variables_set">
<field name="VAR">number of calls</field>
<value name="VALUE">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">find none order complex</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_indexOf">
<field name="END">FIRST</field>
<value name="VALUE">
<block type="logic_ternary" inline="true">
<value name="IF">
<block type="logic_boolean">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="THEN">
<block type="procedures_callreturn">
<mutation name="get fruit"></mutation>
</block>
</value>
<value name="ELSE">
<block type="logic_null"></block>
</value>
</block>
</value>
<value name="FIND">
<block type="text">
<field name="TEXT">Peel</field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">-1</field>
</block>
</value>
</block>
</value>
<next>
<block type="procedures_callnoreturn" inline="true">
<mutation name="check number of calls">
<arg name="test name"></arg>
</mutation>
<value name="ARG0">
<block type="text">
<field name="TEXT">find none order complex</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
<block type="procedures_defnoreturn" x="13" y="4013">
<field name="NAME">test get text simple</field>
<comment pinned="false" h="80" w="160">Tests the "get letter" block with a variable.</comment>
<statement name="STACK">
<block type="variables_set" inline="false">
<field name="VAR">text</field>
<value name="VALUE">
<block type="text">
<field name="TEXT">Blockly</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">get first simple</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_charAt">
<mutation at="false"></mutation>
<field name="WHERE">FIRST</field>
<value name="VALUE">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">B</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">get last simple</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_charAt">
<mutation at="false"></mutation>
<field name="WHERE">LAST</field>
<value name="VALUE">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">y</field>
</block>
</value>
<next>
<block type="unittest_assertvalue" inline="false">
<field name="EXPECTED">TRUE</field>
<value name="MESSAGE">
<block type="text">
<field name="TEXT">get random simple</field>
</block>
</value>
<value name="ACTUAL">
<block type="logic_compare">
<field name="OP">GT</field>
<value name="A">
<block type="text_indexOf" inline="false">
<field name="END">FIRST</field>
<value name="VALUE">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
<value name="FIND">
<block type="text_charAt">
<mutation at="false"></mutation>
<field name="WHERE">RANDOM</field>
<value name="VALUE">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="B">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">-1</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">get # simple</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_charAt">
<mutation at="true"></mutation>
<field name="WHERE">FROM_START</field>
<value name="VALUE">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
<value name="AT">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">o</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">get # order simple</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_charAt">
<mutation at="true"></mutation>
<field name="WHERE">FROM_START</field>
<value name="VALUE">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
<value name="AT">
<block type="logic_ternary">
<value name="IF">
<block type="logic_boolean">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="THEN">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
<value name="ELSE">
<block type="logic_null"></block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">o</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">get #-end simple</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_charAt">
<mutation at="true"></mutation>
<field name="WHERE">FROM_END</field>
<value name="VALUE">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
<value name="AT">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">k</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">get #-end order simple</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_charAt">
<mutation at="true"></mutation>
<field name="WHERE">FROM_END</field>
<comment pinned="false" h="84" w="274">The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index.</comment>
<value name="VALUE">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
<value name="AT">
<block type="math_arithmetic">
<field name="OP">ADD</field>
<value name="A">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<value name="B">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">k</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
<block type="procedures_defreturn" x="13" y="4838">
<field name="NAME">get Blockly</field>
<comment pinned="false" h="80" w="160">Creates a string for use with the get test.</comment>
<statement name="STACK">
<block type="math_change">
<field name="VAR">number of calls</field>
<value name="DELTA">
<block type="math_number">
<field name="NUM">1</field>
</block>
</value>
</block>
</statement>
<value name="RETURN">
<block type="text">
<field name="TEXT">Blockly</field>
</block>
</value>
</block>
<block type="procedures_defnoreturn" x="13" y="4938">
<field name="NAME">test get text complex</field>
<comment pinned="false" h="80" w="160">Tests the "get letter" block with a function call.</comment>
<statement name="STACK">
<block type="variables_set" inline="false">
<field name="VAR">text</field>
<value name="VALUE">
<block type="text">
<field name="TEXT">Blockly</field>
</block>
</value>
<next>
<block type="variables_set">
<field name="VAR">number of calls</field>
<value name="VALUE">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">get first complex</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_charAt">
<mutation at="false"></mutation>
<field name="WHERE">FIRST</field>
<value name="VALUE">
<block type="procedures_callreturn">
<mutation name="get Blockly"></mutation>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">B</field>
</block>
</value>
<next>
<block type="procedures_callnoreturn" inline="true">
<mutation name="check number of calls">
<arg name="test name"></arg>
</mutation>
<value name="ARG0">
<block type="text">
<field name="TEXT">get first complex</field>
</block>
</value>
<next>
<block type="variables_set">
<field name="VAR">number of calls</field>
<value name="VALUE">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">get first order complex</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_charAt">
<mutation at="false"></mutation>
<field name="WHERE">FIRST</field>
<value name="VALUE">
<block type="logic_ternary" inline="true">
<value name="IF">
<block type="logic_boolean">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="THEN">
<block type="procedures_callreturn">
<mutation name="get Blockly"></mutation>
</block>
</value>
<value name="ELSE">
<block type="logic_null"></block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">B</field>
</block>
</value>
<next>
<block type="procedures_callnoreturn" inline="true">
<mutation name="check number of calls">
<arg name="test name"></arg>
</mutation>
<value name="ARG0">
<block type="text">
<field name="TEXT">get first order complex</field>
</block>
</value>
<next>
<block type="variables_set">
<field name="VAR">number of calls</field>
<value name="VALUE">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">get last complex</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_charAt">
<mutation at="false"></mutation>
<field name="WHERE">LAST</field>
<value name="VALUE">
<block type="procedures_callreturn">
<mutation name="get Blockly"></mutation>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">y</field>
</block>
</value>
<next>
<block type="procedures_callnoreturn" inline="true">
<mutation name="check number of calls">
<arg name="test name"></arg>
</mutation>
<value name="ARG0">
<block type="text">
<field name="TEXT">get last complex</field>
</block>
</value>
<next>
<block type="variables_set">
<field name="VAR">number of calls</field>
<value name="VALUE">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">get last order complex</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_charAt">
<mutation at="false"></mutation>
<field name="WHERE">LAST</field>
<value name="VALUE">
<block type="logic_ternary" inline="true">
<value name="IF">
<block type="logic_boolean">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="THEN">
<block type="procedures_callreturn">
<mutation name="get Blockly"></mutation>
</block>
</value>
<value name="ELSE">
<block type="logic_null"></block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">y</field>
</block>
</value>
<next>
<block type="procedures_callnoreturn" inline="true">
<mutation name="check number of calls">
<arg name="test name"></arg>
</mutation>
<value name="ARG0">
<block type="text">
<field name="TEXT">get last order complex</field>
</block>
</value>
<next>
<block type="variables_set">
<field name="VAR">number of calls</field>
<value name="VALUE">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="unittest_assertvalue" inline="false">
<field name="EXPECTED">TRUE</field>
<value name="MESSAGE">
<block type="text">
<field name="TEXT">get random complex</field>
</block>
</value>
<value name="ACTUAL">
<block type="logic_compare">
<field name="OP">GT</field>
<value name="A">
<block type="text_indexOf" inline="false">
<field name="END">FIRST</field>
<value name="VALUE">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
<value name="FIND">
<block type="text_charAt">
<mutation at="false"></mutation>
<field name="WHERE">RANDOM</field>
<value name="VALUE">
<block type="procedures_callreturn">
<mutation name="get Blockly"></mutation>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="B">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">-1</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="procedures_callnoreturn" inline="true">
<mutation name="check number of calls">
<arg name="test name"></arg>
</mutation>
<value name="ARG0">
<block type="text">
<field name="TEXT">get random complex</field>
</block>
</value>
<next>
<block type="variables_set">
<field name="VAR">number of calls</field>
<value name="VALUE">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="unittest_assertvalue" inline="false">
<field name="EXPECTED">TRUE</field>
<value name="MESSAGE">
<block type="text">
<field name="TEXT">get random order complex</field>
</block>
</value>
<value name="ACTUAL">
<block type="logic_compare">
<field name="OP">GT</field>
<value name="A">
<block type="text_indexOf" inline="false">
<field name="END">FIRST</field>
<value name="VALUE">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
<value name="FIND">
<block type="text_charAt">
<mutation at="false"></mutation>
<field name="WHERE">RANDOM</field>
<value name="VALUE">
<block type="logic_ternary" inline="false">
<value name="IF">
<block type="logic_boolean">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="THEN">
<block type="procedures_callreturn">
<mutation name="get Blockly"></mutation>
</block>
</value>
<value name="ELSE">
<block type="logic_null"></block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="B">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">-1</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="procedures_callnoreturn" inline="true">
<mutation name="check number of calls">
<arg name="test name"></arg>
</mutation>
<value name="ARG0">
<block type="text">
<field name="TEXT">get random order complex</field>
</block>
</value>
<next>
<block type="variables_set">
<field name="VAR">number of calls</field>
<value name="VALUE">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">get # complex</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_charAt">
<mutation at="true"></mutation>
<field name="WHERE">FROM_START</field>
<value name="VALUE">
<block type="procedures_callreturn">
<mutation name="get Blockly"></mutation>
</block>
</value>
<value name="AT">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">o</field>
</block>
</value>
<next>
<block type="procedures_callnoreturn" inline="true">
<mutation name="check number of calls">
<arg name="test name"></arg>
</mutation>
<value name="ARG0">
<block type="text">
<field name="TEXT">get # complex</field>
</block>
</value>
<next>
<block type="variables_set">
<field name="VAR">number of calls</field>
<value name="VALUE">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">get # order complex</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_charAt">
<mutation at="true"></mutation>
<field name="WHERE">FROM_START</field>
<value name="VALUE">
<block type="logic_ternary" inline="false">
<value name="IF">
<block type="logic_boolean">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="THEN">
<block type="procedures_callreturn">
<mutation name="get Blockly"></mutation>
</block>
</value>
<value name="ELSE">
<block type="logic_null"></block>
</value>
</block>
</value>
<value name="AT">
<block type="logic_ternary">
<value name="IF">
<block type="logic_boolean">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="THEN">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
<value name="ELSE">
<block type="logic_null"></block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">o</field>
</block>
</value>
<next>
<block type="procedures_callnoreturn" inline="true">
<mutation name="check number of calls">
<arg name="test name"></arg>
</mutation>
<value name="ARG0">
<block type="text">
<field name="TEXT">get # order complex</field>
</block>
</value>
<next>
<block type="variables_set">
<field name="VAR">number of calls</field>
<value name="VALUE">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">get #-end complex</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_charAt">
<mutation at="true"></mutation>
<field name="WHERE">FROM_END</field>
<value name="VALUE">
<block type="procedures_callreturn">
<mutation name="get Blockly"></mutation>
</block>
</value>
<value name="AT">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">k</field>
</block>
</value>
<next>
<block type="procedures_callnoreturn" inline="true">
<mutation name="check number of calls">
<arg name="test name"></arg>
</mutation>
<value name="ARG0">
<block type="text">
<field name="TEXT">get #-end complex</field>
</block>
</value>
<next>
<block type="variables_set">
<field name="VAR">number of calls</field>
<value name="VALUE">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">get #-end order complex</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_charAt">
<mutation at="true"></mutation>
<field name="WHERE">FROM_END</field>
<comment pinned="false" h="83" w="258">The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index.</comment>
<value name="VALUE">
<block type="logic_ternary" inline="true">
<value name="IF">
<block type="logic_boolean">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="THEN">
<block type="procedures_callreturn">
<mutation name="get Blockly"></mutation>
</block>
</value>
<value name="ELSE">
<block type="logic_null"></block>
</value>
</block>
</value>
<value name="AT">
<block type="math_arithmetic">
<field name="OP">ADD</field>
<value name="A">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<value name="B">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">k</field>
</block>
</value>
<next>
<block type="procedures_callnoreturn" inline="true">
<mutation name="check number of calls">
<arg name="test name"></arg>
</mutation>
<value name="ARG0">
<block type="text">
<field name="TEXT">get #-end order complex</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
<block type="procedures_defreturn" x="13" y="6738">
<field name="NAME">get numbers</field>
<comment pinned="false" h="80" w="160">Creates a string for use with the substring test.</comment>
<statement name="STACK">
<block type="math_change">
<field name="VAR">number of calls</field>
<value name="DELTA">
<block type="math_number">
<field name="NUM">1</field>
</block>
</value>
</block>
</statement>
<value name="RETURN">
<block type="text">
<field name="TEXT">123456789</field>
</block>
</value>
</block>
<block type="procedures_defnoreturn" x="13" y="6838">
<field name="NAME">test substring simple</field>
<comment pinned="false" h="80" w="160">Tests the "get substring" block with a variable.</comment>
<statement name="STACK">
<block type="variables_set" inline="false">
<field name="VAR">text</field>
<value name="VALUE">
<block type="text">
<field name="TEXT">123456789</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">substring # simple</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_getSubstring">
<mutation at1="true" at2="true"></mutation>
<field name="WHERE1">FROM_START</field>
<field name="WHERE2">FROM_START</field>
<value name="STRING">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
<value name="AT1">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
<value name="AT2">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">23</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">substring # simple order</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_getSubstring">
<mutation at1="true" at2="true"></mutation>
<field name="WHERE1">FROM_START</field>
<field name="WHERE2">FROM_START</field>
<value name="STRING">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
<value name="AT1">
<block type="logic_ternary">
<value name="IF">
<block type="logic_boolean">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="THEN">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
<value name="ELSE">
<block type="logic_null"></block>
</value>
</block>
</value>
<value name="AT2">
<block type="logic_ternary">
<value name="IF">
<block type="logic_boolean">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="THEN">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
<value name="ELSE">
<block type="logic_null"></block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">23</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">substring #-end simple</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_getSubstring">
<mutation at1="true" at2="true"></mutation>
<field name="WHERE1">FROM_END</field>
<field name="WHERE2">FROM_END</field>
<value name="STRING">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
<value name="AT1">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
<value name="AT2">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">78</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">substring #-end simple order</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_getSubstring">
<mutation at1="true" at2="true"></mutation>
<field name="WHERE1">FROM_END</field>
<field name="WHERE2">FROM_END</field>
<comment pinned="false" h="81" w="266">The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index.</comment>
<value name="STRING">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
<value name="AT1">
<block type="math_arithmetic">
<field name="OP">ADD</field>
<value name="A">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<value name="B">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="AT2">
<block type="math_arithmetic">
<field name="OP">ADD</field>
<value name="A">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<value name="B">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">78</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">substring first-last simple</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_getSubstring">
<mutation at1="false" at2="false"></mutation>
<field name="WHERE1">FIRST</field>
<field name="WHERE2">LAST</field>
<value name="STRING">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">substring # #-end simple</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_getSubstring">
<mutation at1="true" at2="true"></mutation>
<field name="WHERE1">FROM_START</field>
<field name="WHERE2">FROM_END</field>
<value name="STRING">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
<value name="AT1">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
<value name="AT2">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">2345678</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">substring #-end # simple</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_getSubstring">
<mutation at1="true" at2="true"></mutation>
<field name="WHERE1">FROM_END</field>
<field name="WHERE2">FROM_START</field>
<value name="STRING">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
<value name="AT1">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">6</field>
</block>
</value>
</block>
</value>
<value name="AT2">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">3</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">34</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">substring first # simple</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_getSubstring">
<mutation at1="false" at2="true"></mutation>
<field name="WHERE1">FIRST</field>
<field name="WHERE2">FROM_START</field>
<value name="STRING">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
<value name="AT2">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">3</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">1234</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">substring first #-end simple</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_getSubstring">
<mutation at1="false" at2="true"></mutation>
<field name="WHERE1">FIRST</field>
<field name="WHERE2">FROM_END</field>
<value name="STRING">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
<value name="AT2">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">12345678</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">substring # last simple</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_getSubstring">
<mutation at1="true" at2="false"></mutation>
<field name="WHERE1">FROM_START</field>
<field name="WHERE2">LAST</field>
<value name="STRING">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
<value name="AT1">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">6</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">789</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">substring #-end last simple</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_getSubstring">
<mutation at1="true" at2="false"></mutation>
<field name="WHERE1">FROM_END</field>
<field name="WHERE2">LAST</field>
<value name="STRING">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
<value name="AT1">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">789</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">substring all with # #-end simple</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_getSubstring">
<mutation at1="true" at2="true"></mutation>
<field name="WHERE1">FROM_START</field>
<field name="WHERE2">FROM_END</field>
<value name="STRING">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
<value name="AT1">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="AT2">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">123456789</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">substring all with #-end # simple</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_getSubstring">
<mutation at1="true" at2="true"></mutation>
<field name="WHERE1">FROM_END</field>
<field name="WHERE2">FROM_START</field>
<value name="STRING">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
<value name="AT1">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">8</field>
</block>
</value>
</block>
</value>
<value name="AT2">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">8</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">123456789</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">substring all with # #-end math simple</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_getSubstring">
<mutation at1="true" at2="true"></mutation>
<field name="WHERE1">FROM_START</field>
<field name="WHERE2">FROM_END</field>
<comment pinned="false" h="94" w="320">Checks that the whole string is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where substring uses [x:length - y] for # #-end.</comment>
<value name="STRING">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
<value name="AT1">
<block type="math_arithmetic">
<field name="OP">ADD</field>
<value name="A">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<value name="B">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="AT2">
<block type="math_arithmetic">
<field name="OP">ADD</field>
<value name="A">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<value name="B">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">123456789</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
<block type="procedures_defnoreturn" x="13" y="8388">
<field name="NAME">test substring complex</field>
<comment pinned="false" h="80" w="160">Tests the "get substring" block with a function call.</comment>
<statement name="STACK">
<block type="variables_set">
<field name="VAR">number of calls</field>
<value name="VALUE">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">substring # complex</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_getSubstring">
<mutation at1="true" at2="true"></mutation>
<field name="WHERE1">FROM_START</field>
<field name="WHERE2">FROM_START</field>
<value name="STRING">
<block type="procedures_callreturn">
<mutation name="get numbers"></mutation>
</block>
</value>
<value name="AT1">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
<value name="AT2">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">23</field>
</block>
</value>
<next>
<block type="procedures_callnoreturn" inline="true">
<mutation name="check number of calls">
<arg name="test name"></arg>
</mutation>
<value name="ARG0">
<block type="text">
<field name="TEXT">substring # complex</field>
</block>
</value>
<next>
<block type="variables_set">
<field name="VAR">number of calls</field>
<value name="VALUE">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">substring # complex order</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_getSubstring">
<mutation at1="true" at2="true"></mutation>
<field name="WHERE1">FROM_START</field>
<field name="WHERE2">FROM_START</field>
<value name="STRING">
<block type="logic_ternary">
<value name="IF">
<block type="logic_boolean">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="THEN">
<block type="procedures_callreturn">
<mutation name="get numbers"></mutation>
</block>
</value>
<value name="ELSE">
<block type="logic_null"></block>
</value>
</block>
</value>
<value name="AT1">
<block type="logic_ternary">
<value name="IF">
<block type="logic_boolean">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="THEN">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
<value name="ELSE">
<block type="logic_null"></block>
</value>
</block>
</value>
<value name="AT2">
<block type="logic_ternary">
<value name="IF">
<block type="logic_boolean">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="THEN">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
<value name="ELSE">
<block type="logic_null"></block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">23</field>
</block>
</value>
<next>
<block type="procedures_callnoreturn" inline="true">
<mutation name="check number of calls">
<arg name="test name"></arg>
</mutation>
<value name="ARG0">
<block type="text">
<field name="TEXT">substring # complex order</field>
</block>
</value>
<next>
<block type="variables_set">
<field name="VAR">number of calls</field>
<value name="VALUE">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">substring #-end complex</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_getSubstring">
<mutation at1="true" at2="true"></mutation>
<field name="WHERE1">FROM_END</field>
<field name="WHERE2">FROM_END</field>
<comment pinned="false" h="83" w="259">The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index.</comment>
<value name="STRING">
<block type="procedures_callreturn">
<mutation name="get numbers"></mutation>
</block>
</value>
<value name="AT1">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
<value name="AT2">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">78</field>
</block>
</value>
<next>
<block type="procedures_callnoreturn" inline="true">
<mutation name="check number of calls">
<arg name="test name"></arg>
</mutation>
<value name="ARG0">
<block type="text">
<field name="TEXT">substring #-end complex</field>
</block>
</value>
<next>
<block type="variables_set">
<field name="VAR">number of calls</field>
<value name="VALUE">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">substring #-end order order</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_getSubstring">
<mutation at1="true" at2="true"></mutation>
<field name="WHERE1">FROM_END</field>
<field name="WHERE2">FROM_END</field>
<value name="STRING">
<block type="logic_ternary">
<value name="IF">
<block type="logic_boolean">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="THEN">
<block type="procedures_callreturn">
<mutation name="get numbers"></mutation>
</block>
</value>
<value name="ELSE">
<block type="logic_null"></block>
</value>
</block>
</value>
<value name="AT1">
<block type="math_arithmetic">
<field name="OP">ADD</field>
<value name="A">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<value name="B">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="AT2">
<block type="math_arithmetic">
<field name="OP">ADD</field>
<value name="A">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<value name="B">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">78</field>
</block>
</value>
<next>
<block type="procedures_callnoreturn" inline="true">
<mutation name="check number of calls">
<arg name="test name"></arg>
</mutation>
<value name="ARG0">
<block type="text">
<field name="TEXT">substring #-end order order</field>
</block>
</value>
<next>
<block type="variables_set">
<field name="VAR">number of calls</field>
<value name="VALUE">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">substring first-last</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_getSubstring">
<mutation at1="false" at2="false"></mutation>
<field name="WHERE1">FIRST</field>
<field name="WHERE2">LAST</field>
<value name="STRING">
<block type="procedures_callreturn">
<mutation name="get numbers"></mutation>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
<next>
<block type="procedures_callnoreturn" inline="true">
<mutation name="check number of calls">
<arg name="test name"></arg>
</mutation>
<value name="ARG0">
<block type="text">
<field name="TEXT">substring first-last</field>
</block>
</value>
<next>
<block type="variables_set">
<field name="VAR">number of calls</field>
<value name="VALUE">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">substring # #-end complex</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_getSubstring">
<mutation at1="true" at2="true"></mutation>
<field name="WHERE1">FROM_START</field>
<field name="WHERE2">FROM_END</field>
<value name="STRING">
<block type="procedures_callreturn">
<mutation name="get numbers"></mutation>
</block>
</value>
<value name="AT1">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
<value name="AT2">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">2345678</field>
</block>
</value>
<next>
<block type="procedures_callnoreturn" inline="true">
<mutation name="check number of calls">
<arg name="test name"></arg>
</mutation>
<value name="ARG0">
<block type="text">
<field name="TEXT">substring # #-end complex</field>
</block>
</value>
<next>
<block type="variables_set">
<field name="VAR">number of calls</field>
<value name="VALUE">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">substring #-end # complex</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_getSubstring">
<mutation at1="true" at2="true"></mutation>
<field name="WHERE1">FROM_END</field>
<field name="WHERE2">FROM_START</field>
<value name="STRING">
<block type="procedures_callreturn">
<mutation name="get numbers"></mutation>
</block>
</value>
<value name="AT1">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">6</field>
</block>
</value>
</block>
</value>
<value name="AT2">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">3</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">34</field>
</block>
</value>
<next>
<block type="procedures_callnoreturn" inline="true">
<mutation name="check number of calls">
<arg name="test name"></arg>
</mutation>
<value name="ARG0">
<block type="text">
<field name="TEXT">substring #-end # complex</field>
</block>
</value>
<next>
<block type="variables_set">
<field name="VAR">number of calls</field>
<value name="VALUE">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">substring first # complex</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_getSubstring">
<mutation at1="false" at2="true"></mutation>
<field name="WHERE1">FIRST</field>
<field name="WHERE2">FROM_START</field>
<value name="STRING">
<block type="procedures_callreturn">
<mutation name="get numbers"></mutation>
</block>
</value>
<value name="AT2">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">3</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">1234</field>
</block>
</value>
<next>
<block type="procedures_callnoreturn" inline="true">
<mutation name="check number of calls">
<arg name="test name"></arg>
</mutation>
<value name="ARG0">
<block type="text">
<field name="TEXT">substring first # complex</field>
</block>
</value>
<next>
<block type="variables_set">
<field name="VAR">number of calls</field>
<value name="VALUE">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">substring first #-end complex</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_getSubstring">
<mutation at1="false" at2="true"></mutation>
<field name="WHERE1">FIRST</field>
<field name="WHERE2">FROM_END</field>
<value name="STRING">
<block type="procedures_callreturn">
<mutation name="get numbers"></mutation>
</block>
</value>
<value name="AT2">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">12345678</field>
</block>
</value>
<next>
<block type="procedures_callnoreturn" inline="true">
<mutation name="check number of calls">
<arg name="test name"></arg>
</mutation>
<value name="ARG0">
<block type="text">
<field name="TEXT">substring first #-end complex</field>
</block>
</value>
<next>
<block type="variables_set">
<field name="VAR">number of calls</field>
<value name="VALUE">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">substring # last complex</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_getSubstring">
<mutation at1="true" at2="false"></mutation>
<field name="WHERE1">FROM_START</field>
<field name="WHERE2">LAST</field>
<value name="STRING">
<block type="procedures_callreturn">
<mutation name="get numbers"></mutation>
</block>
</value>
<value name="AT1">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">6</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">789</field>
</block>
</value>
<next>
<block type="procedures_callnoreturn" inline="true">
<mutation name="check number of calls">
<arg name="test name"></arg>
</mutation>
<value name="ARG0">
<block type="text">
<field name="TEXT">substring # last complex</field>
</block>
</value>
<next>
<block type="variables_set">
<field name="VAR">number of calls</field>
<value name="VALUE">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">substring #-end last complex</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_getSubstring">
<mutation at1="true" at2="false"></mutation>
<field name="WHERE1">FROM_END</field>
<field name="WHERE2">LAST</field>
<value name="STRING">
<block type="procedures_callreturn">
<mutation name="get numbers"></mutation>
</block>
</value>
<value name="AT1">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">789</field>
</block>
</value>
<next>
<block type="procedures_callnoreturn" inline="true">
<mutation name="check number of calls">
<arg name="test name"></arg>
</mutation>
<value name="ARG0">
<block type="text">
<field name="TEXT">substring #-end last complex</field>
</block>
</value>
<next>
<block type="variables_set">
<field name="VAR">number of calls</field>
<value name="VALUE">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">substring all with # #-end complex</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_getSubstring">
<mutation at1="true" at2="true"></mutation>
<field name="WHERE1">FROM_START</field>
<field name="WHERE2">FROM_END</field>
<value name="STRING">
<block type="procedures_callreturn">
<mutation name="get numbers"></mutation>
</block>
</value>
<value name="AT1">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="AT2">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">123456789</field>
</block>
</value>
<next>
<block type="procedures_callnoreturn" inline="true">
<mutation name="check number of calls">
<arg name="test name"></arg>
</mutation>
<value name="ARG0">
<block type="text">
<field name="TEXT">substring all with # #-end complex</field>
</block>
</value>
<next>
<block type="variables_set">
<field name="VAR">number of calls</field>
<value name="VALUE">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">substring all with #-end # complex</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_getSubstring">
<mutation at1="true" at2="true"></mutation>
<field name="WHERE1">FROM_END</field>
<field name="WHERE2">FROM_START</field>
<value name="STRING">
<block type="procedures_callreturn">
<mutation name="get numbers"></mutation>
</block>
</value>
<value name="AT1">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">8</field>
</block>
</value>
</block>
</value>
<value name="AT2">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">8</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">123456789</field>
</block>
</value>
<next>
<block type="procedures_callnoreturn" inline="true">
<mutation name="check number of calls">
<arg name="test name"></arg>
</mutation>
<value name="ARG0">
<block type="text">
<field name="TEXT">substring all with #-end # complex</field>
</block>
</value>
<next>
<block type="variables_set">
<field name="VAR">number of calls</field>
<value name="VALUE">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">substring all with # #-end math complex</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_getSubstring">
<mutation at1="true" at2="true"></mutation>
<field name="WHERE1">FROM_START</field>
<field name="WHERE2">FROM_END</field>
<comment pinned="false" h="92" w="323">Checks that the whole string is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where substring uses [x:length - y] for # #-end.</comment>
<value name="STRING">
<block type="procedures_callreturn">
<mutation name="get numbers"></mutation>
</block>
</value>
<value name="AT1">
<block type="math_arithmetic">
<field name="OP">ADD</field>
<value name="A">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<value name="B">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="AT2">
<block type="math_arithmetic">
<field name="OP">ADD</field>
<value name="A">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<value name="B">
<block type="unittest_adjustindex">
<value name="INDEX">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">123456789</field>
</block>
</value>
<next>
<block type="procedures_callnoreturn" inline="true">
<mutation name="check number of calls">
<arg name="test name"></arg>
</mutation>
<value name="ARG0">
<block type="text">
<field name="TEXT">substring all with # #-end math complex</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
<block type="procedures_defnoreturn" x="13" y="10838">
<field name="NAME">test case</field>
<comment pinned="false" h="80" w="160">Tests the "change casing" block.</comment>
<statement name="STACK">
<block type="variables_set">
<field name="VAR">text</field>
<value name="VALUE">
<block type="text">
<field name="TEXT">Hello World</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">uppercase</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_changeCase" inline="false">
<field name="CASE">UPPERCASE</field>
<value name="TEXT">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">HELLO WORLD</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">uppercase order</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_changeCase" inline="false">
<field name="CASE">UPPERCASE</field>
<value name="TEXT">
<block type="logic_ternary" inline="true">
<value name="IF">
<block type="logic_boolean">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="THEN">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
<value name="ELSE">
<block type="logic_null"></block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">HELLO WORLD</field>
</block>
</value>
<next>
<block type="variables_set">
<field name="VAR">text</field>
<value name="VALUE">
<block type="text">
<field name="TEXT">Hello World</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">lowercase</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_changeCase" inline="false">
<field name="CASE">LOWERCASE</field>
<value name="TEXT">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">hello world</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">lowercase order</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_changeCase" inline="false">
<field name="CASE">LOWERCASE</field>
<value name="TEXT">
<block type="logic_ternary" inline="true">
<value name="IF">
<block type="logic_boolean">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="THEN">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
<value name="ELSE">
<block type="logic_null"></block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">hello world</field>
</block>
</value>
<next>
<block type="variables_set">
<field name="VAR">text</field>
<value name="VALUE">
<block type="text">
<field name="TEXT">heLLo WorlD</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">titlecase</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_changeCase" inline="false">
<field name="CASE">TITLECASE</field>
<value name="TEXT">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">Hello World</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">titlecase order</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_changeCase" inline="false">
<field name="CASE">TITLECASE</field>
<value name="TEXT">
<block type="logic_ternary" inline="true">
<value name="IF">
<block type="logic_boolean">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="THEN">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
<value name="ELSE">
<block type="logic_null"></block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">Hello World</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
<block type="procedures_defnoreturn" x="13" y="11488">
<field name="NAME">test trim</field>
<comment pinned="false" h="80" w="160">Tests the "trim" block.</comment>
<statement name="STACK">
<block type="variables_set">
<field name="VAR">text</field>
<value name="VALUE">
<block type="text">
<field name="TEXT"> abc def </field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">trim both</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_trim" inline="false">
<field name="MODE">BOTH</field>
<value name="TEXT">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">abc def</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">trim both order</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_trim" inline="false">
<field name="MODE">BOTH</field>
<value name="TEXT">
<block type="logic_ternary" inline="true">
<value name="IF">
<block type="logic_boolean">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="THEN">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
<value name="ELSE">
<block type="logic_null"></block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">abc def</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">trim left</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_trim" inline="false">
<field name="MODE">LEFT</field>
<value name="TEXT">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">abc def </field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">trim left order</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_trim" inline="false">
<field name="MODE">LEFT</field>
<value name="TEXT">
<block type="logic_ternary" inline="true">
<value name="IF">
<block type="logic_boolean">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="THEN">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
<value name="ELSE">
<block type="logic_null"></block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">abc def </field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">trim right</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_trim" inline="false">
<field name="MODE">RIGHT</field>
<value name="TEXT">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT"> abc def</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">trim right order</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_trim" inline="false">
<field name="MODE">RIGHT</field>
<value name="TEXT">
<block type="logic_ternary" inline="true">
<value name="IF">
<block type="logic_boolean">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="THEN">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
<value name="ELSE">
<block type="logic_null"></block>
</value>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT"> abc def</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
<block type="procedures_defnoreturn" x="13" y="12088">
<field name="NAME">test count text</field>
<comment pinned="false" h="80" w="160">Tests the "trim" block.</comment>
<statement name="STACK">
<block type="variables_set">
<field name="VAR">text</field>
<value name="VALUE">
<block type="text">
<field name="TEXT">woolloomooloo</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">len 1</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_count">
<value name="SUB">
<block type="text">
<field name="TEXT">o</field>
</block>
</value>
<value name="TEXT">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="math_number">
<field name="NUM">8</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">len 2</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_count">
<value name="SUB">
<block type="text">
<field name="TEXT">oo</field>
</block>
</value>
<value name="TEXT">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="math_number">
<field name="NUM">4</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">len 3</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_count">
<value name="SUB">
<block type="text">
<field name="TEXT">loo</field>
</block>
</value>
<value name="TEXT">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<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">start</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_count">
<value name="SUB">
<block type="text">
<field name="TEXT">wool</field>
</block>
</value>
<value name="TEXT">
<block type="variables_get">
<field name="VAR">text</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">missing</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_count">
<value name="SUB">
<block type="text">
<field name="TEXT">chicken</field>
</block>
</value>
<value name="TEXT">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="math_number">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">empty needle</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_count">
<value name="SUB">
<block type="text">
<field name="TEXT"></field>
</block>
</value>
<value name="TEXT">
<block type="variables_get">
<field name="VAR">text</field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="math_number">
<field name="NUM">14</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">empty source</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_count">
<value name="SUB">
<block type="text">
<field name="TEXT">chicken</field>
</block>
</value>
<value name="TEXT">
<block type="text">
<field name="TEXT"></field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="math_number">
<field name="NUM">0</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="12" y="12812">
<field name="NAME">test text reverse</field>
<comment pinned="false" h="80" w="160">Tests the "trim" block.</comment>
<statement name="STACK">
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">empty string</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_reverse">
<value name="TEXT">
<block type="text">
<field name="TEXT"></field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT"></field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">len 1</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_reverse">
<value name="TEXT">
<block type="text">
<field name="TEXT">a</field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">a</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">len 2</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_reverse">
<value name="TEXT">
<block type="text">
<field name="TEXT">ab</field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">ba</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">longer</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_reverse">
<value name="TEXT">
<block type="text">
<field name="TEXT">woolloomooloo</field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">ooloomoolloow</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
<block type="procedures_defnoreturn" x="12" y="13237">
<field name="NAME">test replace</field>
<comment pinned="false" h="80" w="160">Tests the "trim" block.</comment>
<statement name="STACK">
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">replace all instances 1</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_replace">
<value name="FROM">
<block type="text">
<field name="TEXT">oo</field>
</block>
</value>
<value name="TO">
<block type="text">
<field name="TEXT">123</field>
</block>
</value>
<value name="TEXT">
<block type="text">
<field name="TEXT">woolloomooloo</field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">w123ll123m123l123</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">literal string replacement</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_replace">
<value name="FROM">
<block type="text">
<field name="TEXT">.oo</field>
</block>
</value>
<value name="TO">
<block type="text">
<field name="TEXT">X</field>
</block>
</value>
<value name="TEXT">
<block type="text">
<field name="TEXT">woolloomooloo</field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">woolloomooloo</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">not found</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_replace">
<value name="FROM">
<block type="text">
<field name="TEXT">abc</field>
</block>
</value>
<value name="TO">
<block type="text">
<field name="TEXT">X</field>
</block>
</value>
<value name="TEXT">
<block type="text">
<field name="TEXT">woolloomooloo</field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">woolloomooloo</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">empty replacement 1</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_replace">
<value name="FROM">
<block type="text">
<field name="TEXT">o</field>
</block>
</value>
<value name="TO">
<block type="text">
<field name="TEXT"></field>
</block>
</value>
<value name="TEXT">
<block type="text">
<field name="TEXT">woolloomooloo</field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT">wllml</field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">empty replacement 2</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_replace">
<value name="FROM">
<block type="text">
<field name="TEXT">aaaaa</field>
</block>
</value>
<value name="TO">
<block type="text">
<field name="TEXT"></field>
</block>
</value>
<value name="TEXT">
<block type="text">
<field name="TEXT">aaaaa</field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT"></field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">empty replacement 3</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_replace">
<value name="FROM">
<block type="text">
<field name="TEXT">a</field>
</block>
</value>
<value name="TO">
<block type="text">
<field name="TEXT"></field>
</block>
</value>
<value name="TEXT">
<block type="text">
<field name="TEXT">aaaaa</field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT"></field>
</block>
</value>
<next>
<block type="unittest_assertequals" inline="false">
<value name="MESSAGE">
<block type="text">
<field name="TEXT">empty source</field>
</block>
</value>
<value name="ACTUAL">
<block type="text_replace">
<value name="FROM">
<block type="text">
<field name="TEXT">a</field>
</block>
</value>
<value name="TO">
<block type="text">
<field name="TEXT">chicken</field>
</block>
</value>
<value name="TEXT">
<block type="text">
<field name="TEXT"></field>
</block>
</value>
</block>
</value>
<value name="EXPECTED">
<block type="text">
<field name="TEXT"></field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</xml>