<snapdata remixID="257589"><project name="Lab 3.4 unit tests" app="Snap! 4.1, http://snap.berkeley.edu" version="1"><notes></notes><thumbnail>data:image/png;base64,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QeamgAHoppv18qSAAehJSDPjpoAB6Kab9fKkgAHoSUgz46aAAeimm/XypIAB6ElIM+OmgAHoppv18qSAAehJSDPjpoAB6Kab9fKkgAHoSUgz46aAAeimm/XypIAB6ElIM+OmgAHoppv18qSAAehJSDPjpoAB6Kab9fKkgAHoSUgz46aAAeimm/XypIAB6ElIM+OmgAHoppv18qSAAehJSDPjpoAB6Kab9fKkgAHoSUgz46aAAeimm/XypIAB6ElIM+OmgAHoppv18qSAAehJSDPjpoAB6Kab9fKkgAHoSUgz46aAAeimm/XypIAB6ElIM+OmgAHoppv18qSAAehJSDPjpoAB6Kab9fKkgAHoSUgz46aAAeimm/XypIAB6ElIM+OmgAHoppv18qSAAehJSDPjpoAB6Kab9fKkgAHoSUgz46aAAeimm/XypIAB6ElIM+OmgAHoppv18qSAAehJSDPjpoAB6Kab9fKkgAHoSUgz46aAAeimm/XypIAB6ElIM+OmgAHoppv18qSAAehJSDPjpoAB6Kab9fKkgAHoSUgz46aAAeimm/XypIAB6ElIM+OmgAHoppv18qSAAehJSDPjpoAB6Kab9fKkwP8AJqbLEdUAZuQAAAAASUVORK5CYII=</thumbnail><stage name="Stage" width="480" height="360" costume="0" tempo="60" threadsafe="false" lines="round" ternary="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 id="2"></list></costumes><sounds><list id="3"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites><sprite name="Sprite" idx="1" x="0" y="0" heading="90" scale="1" rotation="1" draggable="true" costume="0" color="80,80,80" pen="tip" id="8"><costumes><list id="9"></list></costumes><sounds><list id="10"></list></sounds><blocks></blocks><variables></variables><scripts><script x="61.92307692307692" y="40"><block s="receiveGo"></block><block s="doSetVar"><l>Number of passing tests</l><l>0</l></block><block s="doSetVar"><l>Number of failing tests</l><l>0</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><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.300008" 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.399998" color="243,118,29" hidden="true"/><watcher var="max tests" style="normal" x="22" y="212.39999799999998" color="243,118,29" hidden="true"/></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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><inputs><input type="%txt"></input><input type="%s"></input></inputs></block-definition></blocks><variables><variable name="Number of passing tests"><l>1</l></variable><variable name="Number of failing tests"><l>30</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 id="531"><item><l>bar</l></item><item><l>foo</l></item><item><l>0</l></item></list></variable></variables></project><media name="Lab 3.4 unit tests" app="Snap! 4.1, http://snap.berkeley.edu" version="1"></media></snapdata>