<snapdata remixID="9902730"><project name="Lab 3.4 unit tests" app="Snap! 6, https://snap.berkeley.edu" version="1"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><stage name="Stage" width="480" height="360" costume="0" color="255,255,255,1" tempo="60" threadsafe="false" penlog="false" volume="100" pan="0" lines="round" ternary="true" hyperops="true" codify="false" inheritance="true" sublistIDs="false" scheduled="false" id="1"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAOhUlEQVR4Xu3VwQkAAAjEMN1/abewn7jAQRC64wgQIECAAIF3gX1fNEiAAAECBAiMAHsCAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQIHLFxAWmhEwHPAAAAAElFTkSuQmCC</pentrails><costumes><list struct="atomic" id="2"></list></costumes><sounds><list struct="atomic" id="3"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites><watcher var="Number of passing tests" style="normal" x="10" y="10" color="243,118,29"/><watcher var="Number of failing tests" style="normal" x="10" y="36.600002" color="243,118,29"/><watcher var="tests" style="normal" x="10" y="209.30000799999996" color="243,118,29" hidden="true"/><watcher var="min tests" style="normal" x="10" y="328.80001" color="243,118,29" hidden="true"/><watcher var="qux" style="normal" x="10" y="240.499998" color="243,118,29" hidden="true"/><watcher var="between tests" style="normal" x="23" y="260.3999979999999" color="243,118,29" hidden="true"/><watcher var="max tests" style="normal" x="22" y="212.39999799999995" color="243,118,29" hidden="true"/><sprite name="Sprite" idx="1" x="0" y="0" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="80,80,80,1" pen="tip" id="15"><costumes><list struct="atomic" id="16"></list></costumes><sounds><list struct="atomic" id="17"></list></sounds><blocks></blocks><variables></variables><scripts><script x="61.923076923076906" y="40"><block s="receiveGo"></block><block s="doSetVar"><l>Number of passing tests</l><l>100</l></block><block s="doSetVar"><l>Number of failing tests</l><l>50</l></block><custom-block s="test min block"></custom-block><custom-block s="test max block"></custom-block><custom-block s="test between block"></custom-block><custom-block s="test min letter count block"></custom-block><custom-block s="test distance to block"></custom-block><custom-block s="test contains letter block"></custom-block><block s="bubble"><block s="reportJoinWords"><list><l>Tests completed with </l><block var="Number of passing tests"/><l> passing and </l><block var="Number of failing tests"/><l> failing.</l></list></block></block></script></scripts></sprite></sprites></stage><hidden></hidden><headers></headers><code></code><blocks><block-definition s="expect equals %&apos;expected&apos; %&apos;actual&apos; %&apos;message&apos;" type="predicate" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input><input type="%s"></input></inputs><script><block s="doIfElse"><block s="reportEquals"><block var="expected"/><block var="actual"/></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script><block s="doAsk"><block s="reportJoinWords"><list><l>FAILURE:</l><block var="message"/><l>. Expected: </l><block var="expected"/><l> actual: </l><block var="actual"/><l>. Press enter to continue.</l></list></block></block><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script></block-definition><block-definition s="count %&apos;list&apos; matching %&apos;criterion&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%predRing"></input></inputs><script><block s="doDeclareVariables"><list><l>item</l><l>num matching</l></list></block><block s="doSetVar"><l>num matching</l><l>0</l></block><block s="doUntil"><block s="reportEquals"><block s="reportListLength"><block var="list"/></block><l>0</l></block><script><block s="doIf"><block s="evaluate"><block var="criterion"/><list><block s="reportListItem"><l>1</l><block var="list"/></block></list></block><script><block s="doChangeVar"><l>num matching</l><l>1</l></block></script></block><block s="doSetVar"><l>list</l><block s="reportCDR"><block var="list"/></block></block></script></block><block s="doReport"><block var="num matching"/></block></script></block-definition><block-definition s="accumulate test results %&apos;test results&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doChangeVar"><l>Number of passing tests</l><custom-block s="count True in %l"><block var="test results"/></custom-block></block><block s="doChangeVar"><l>Number of failing tests</l><custom-block s="count False in %l"><block var="test results"/></custom-block></block></script></block-definition><block-definition s="count True in %&apos;list&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><custom-block s="count %l matching %predRing"><block var="list"/><block s="reifyPredicate"><autolambda><block s="reportEquals"><block var="#1"/><block s="reportBoolean"><l><bool>true</bool></l></block></block></autolambda><list><l>#1</l></list></block></custom-block></block></script></block-definition><block-definition s="count False in %&apos;list&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><custom-block s="count %l matching %predRing"><block var="list"/><block s="reifyPredicate"><autolambda><block s="reportEquals"><block var="#1"/><block s="reportBoolean"><l><bool>false</bool></l></block></block></autolambda><list><l>#1</l></list></block></custom-block></block></script></block-definition><block-definition s="test min block" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><custom-block s="accumulate test results %l"><block s="reportNewList"><list><custom-block s="expect equals %s %s %s"><l>7</l><custom-block s="min %n %n"><l>10</l><l>7</l></custom-block><l>min of two positives, left bigger</l></custom-block><custom-block s="expect equals %s %s %s"><l>7</l><custom-block s="min %n %n"><l>7</l><l>10</l></custom-block><l>min of two positives, right bigger</l></custom-block><custom-block s="expect equals %s %s %s"><l>-10</l><custom-block s="min %n %n"><l>-7</l><l>-10</l></custom-block><l>min of two negatives, left bigger</l></custom-block><custom-block s="expect equals %s %s %s"><l>-10</l><custom-block s="min %n %n"><l>-7</l><l>-10</l></custom-block><l>min of two negatives, right bigger</l></custom-block><custom-block s="expect equals %s %s %s"><l>-1</l><custom-block s="min %n %n"><l>6</l><l>-1</l></custom-block><l>min of left positive, right negative</l></custom-block><custom-block s="expect equals %s %s %s"><l>-1</l><custom-block s="min %n %n"><l>-1</l><l>6</l></custom-block><l>min of right positive, left negative</l></custom-block><custom-block s="expect equals %s %s %s"><l>4</l><custom-block s="min %n %n"><l>4</l><l>4</l></custom-block><l>min of equals</l></custom-block></list></block></custom-block></script></block-definition><block-definition s="test max block" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><custom-block s="accumulate test results %l"><block s="reportNewList"><list><custom-block s="expect equals %s %s %s"><custom-block s="max %n %n"><l>3</l><l>7</l></custom-block><l>7</l><l>max, left bigger</l></custom-block><custom-block s="expect equals %s %s %s"><custom-block s="max %n %n"><l>7</l><l>3</l></custom-block><l>7</l><l>max, right bigger</l></custom-block><custom-block s="expect equals %s %s %s"><custom-block s="max %n %n"><l>4</l><l>4</l></custom-block><l>4</l><l>max of equals</l></custom-block></list></block></custom-block></script></block-definition><block-definition s="test between block" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><custom-block s="accumulate test results %l"><block s="reportNewList"><list><custom-block s="expect equals %s %s %s"><block s="reportBoolean"><l><bool>true</bool></l></block><custom-block s="is %n between %n and %n ?"><l>5</l><l>0</l><l>10</l></custom-block><l>mid between low and high</l></custom-block><custom-block s="expect equals %s %s %s"><block s="reportBoolean"><l><bool>true</bool></l></block><custom-block s="is %n between %n and %n ?"><l>5</l><l>10</l><l>0</l></custom-block><l>mid between high and low</l></custom-block><custom-block s="expect equals %s %s %s"><block s="reportBoolean"><l><bool>false</bool></l></block><custom-block s="is %n between %n and %n ?"><l>0</l><l>5</l><l>10</l></custom-block><l>low between mid and high</l></custom-block><custom-block s="expect equals %s %s %s"><block s="reportBoolean"><l><bool>false</bool></l></block><custom-block s="is %n between %n and %n ?"><l>0</l><l>10</l><l>5</l></custom-block><l>low between high and mid</l></custom-block><custom-block s="expect equals %s %s %s"><block s="reportBoolean"><l><bool>false</bool></l></block><custom-block s="is %n between %n and %n ?"><l>10</l><l>0</l><l>5</l></custom-block><l>high between low and mid</l></custom-block><custom-block s="expect equals %s %s %s"><block s="reportBoolean"><l><bool>false</bool></l></block><custom-block s="is %n between %n and %n ?"><l>10</l><l>5</l><l>0</l></custom-block><l>high between low and mid</l></custom-block></list></block></custom-block></script></block-definition><block-definition s="test min letter count block" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><custom-block s="accumulate test results %l"><block s="reportNewList"><list><custom-block s="expect equals %s %s %s"><block s="reportBoolean"><l><bool>false</bool></l></block><custom-block s="is %txt at least %n letters long?"><l>brookline</l><l>20</l></custom-block><l>text too short</l></custom-block><custom-block s="expect equals %s %s %s"><block s="reportBoolean"><l><bool>true</bool></l></block><custom-block s="is %txt at least %n letters long?"><l>high</l><l>4</l></custom-block><l>text equal length</l></custom-block><custom-block s="expect equals %s %s %s"><block s="reportBoolean"><l><bool>true</bool></l></block><custom-block s="is %txt at least %n letters long?"><l>school</l><l>-1</l></custom-block><l>text longer</l></custom-block></list></block></custom-block></script></block-definition><block-definition s="test distance to block" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>tests</l></list></block><block s="doSetVar"><l>tests</l><block s="reportNewList"><list><l></l></list></block></block><block s="gotoXY"><l>0</l><l>0</l></block><block s="doAddToList"><custom-block s="expect equals %s %s %s"><l>0</l><custom-block s="distance to x: %n y: %n"><l>0</l><l>0</l></custom-block><l>distance (on top of)</l></custom-block><block var="tests"/></block><block s="doAddToList"><custom-block s="expect equals %s %s %s"><l>50</l><custom-block s="distance to x: %n y: %n"><l>30</l><l>40</l></custom-block><l>distance (quadrant 1)</l></custom-block><block var="tests"/></block><block s="doAddToList"><custom-block s="expect equals %s %s %s"><l>130</l><custom-block s="distance to x: %n y: %n"><l>-50</l><l>120</l></custom-block><l>distance (quadrant 2)</l></custom-block><block var="tests"/></block><block s="doAddToList"><custom-block s="expect equals %s %s %s"><l>25</l><custom-block s="distance to x: %n y: %n"><l>-7</l><l>-24</l></custom-block><l>distance (quadrant 3)</l></custom-block><block var="tests"/></block><block s="doAddToList"><custom-block s="expect equals %s %s %s"><l>41</l><custom-block s="distance to x: %n y: %n"><l>40</l><l>-9</l></custom-block><l>distance (quadrant 4)</l></custom-block><block var="tests"/></block><block s="gotoXY"><l>30</l><l>40</l><comment w="174.6153846153846" collapsed="false">We already tested above distance to 30,40 when the sprite was at 0,0. Now we turn that around and have the sprite at 30,40 and compute the distance to 0,0.</comment></block><block s="doAddToList"><custom-block s="expect equals %s %s %s"><l>50</l><custom-block s="distance to x: %n y: %n"><l>0</l><l>0</l></custom-block><l>distance (symmetric)</l></custom-block><block var="tests"/></block><block s="gotoXY"><l>0</l><l>0</l></block><custom-block s="accumulate test results %l"><block var="tests"/></custom-block></script></block-definition><block-definition s="test contains letter block" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><custom-block s="accumulate test results %l"><block s="reportNewList"><list><custom-block s="expect equals %s %s %s"><block s="reportBoolean"><l><bool>false</bool></l></block><custom-block s="%txt contains letter %s ?"><l>brookline</l><l>x</l></custom-block><l>letter missing</l></custom-block><custom-block s="expect equals %s %s %s"><block s="reportBoolean"><l><bool>true</bool></l></block><custom-block s="%txt contains letter %s ?"><l>high</l><l>g</l></custom-block><l>letter present</l></custom-block><custom-block s="expect equals %s %s %s"><block s="reportBoolean"><l><bool>false</bool></l></block><custom-block s="%txt contains letter %s ?"><l>school</l><l> </l></custom-block><l>space missing</l></custom-block><custom-block s="expect equals %s %s %s"><block s="reportBoolean"><l><bool>true</bool></l></block><custom-block s="%txt contains letter %s ?"><l>is awesome</l><l> </l></custom-block><l>space missing</l></custom-block><custom-block s="expect equals %s %s %s"><block s="reportBoolean"><l><bool>false</bool></l></block><custom-block s="%txt contains letter %s ?"><l>WHEE!</l><l>h</l></custom-block><l>upper contains lower</l></custom-block><custom-block s="expect equals %s %s %s"><block s="reportBoolean"><l><bool>false</bool></l></block><custom-block s="%txt contains letter %s ?"><l>All right, settle down.</l><l>S</l></custom-block><l>lower contains upper</l></custom-block></list></block></custom-block></script></block-definition><block-definition s="min %&apos;a&apos; %&apos;b&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs></block-definition><block-definition s="max %&apos;a&apos; %&apos;b&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs></block-definition><block-definition s="is %&apos;a&apos; between %&apos;b&apos; and %&apos;c&apos; ?" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input><input type="%n"></input></inputs></block-definition><block-definition s="is %&apos;text&apos; at least %&apos;length&apos; letters long?" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt"></input><input type="%n"></input></inputs></block-definition><block-definition s="distance to x: %&apos;x&apos; y: %&apos;y&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs></block-definition><block-definition s="%&apos;text&apos; contains letter %&apos;letter&apos; ?" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt"></input><input type="%s"></input></inputs></block-definition></blocks><variables><variable name="Number of passing tests"><l>101</l></variable><variable name="Number of failing tests"><l>80</l></variable><variable name="test results"><l>6</l></variable><variable name="tests"><list id="527"><item><bool>true</bool></item><item><bool>true</bool></item><item><bool>true</bool></item><item><l></l></item><item><l></l></item><item><l></l></item></list></variable><variable name="min tests"><list id="528"><item><bool>true</bool></item><item><bool>true</bool></item><item><bool>true</bool></item><item><bool>true</bool></item><item><bool>true</bool></item><item><bool>true</bool></item><item><bool>true</bool></item></list></variable><variable name="max tests"><list id="529"><item><bool>true</bool></item><item><bool>true</bool></item><item><bool>true</bool></item></list></variable><variable name="between tests"><list id="530"><item><bool>true</bool></item><item><bool>true</bool></item><item><bool>false</bool></item><item><bool>true</bool></item><item><bool>true</bool></item><item><bool>true</bool></item></list></variable><variable name="qux"><list struct="atomic" id="531">bar,foo,0</list></variable></variables></project><media name="Lab 3.4 unit tests" app="Snap! 6, https://snap.berkeley.edu" version="1"></media></snapdata>