<snapdata remixID="7862397"><project name="Lab 3.4 unit tests" app="Snap! 7, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="Lab 3.4 unit tests"><notes></notes><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="reportListAttribute"><l><option>length</option></l><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><script><block s="doReport"><l></l></block></script></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><script><block s="doReport"><l></l></block></script></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><script><block s="doReport"><l></l></block></script></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><script><block s="doReport"><l></l></block></script></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><script><block s="doReport"><l></l></block></script></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><script><block s="doReport"><l></l></block></script></block-definition></blocks><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" id="505"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAADoVJREFUeF7t1cEJAAAIxDDdf2m3sJ+4wEEQuuMIECBAgACBd4F9XzRIgAABAgQIjAB7AgIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+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+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECByxcQFpoRMBzwAAAABJRU5ErkJggg==</pentrails><costumes><list struct="atomic" id="506"></list></costumes><sounds><list struct="atomic" id="507"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><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="512"><costumes><list struct="atomic" id="513"></list></costumes><sounds><list struct="atomic" id="514"></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>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.60000199999999" color="243,118,29"/><watcher var="tests" style="normal" x="10" y="209.30000800000005" 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.399998" color="243,118,29" hidden="true"/></sprites></stage><variables><variable name="Number of passing tests"><l>0</l></variable><variable name="Number of failing tests"><l>0</l></variable><variable name="test results"><l>6</l></variable><variable name="tests"><list id="549"><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="550"><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="551"><item><bool>true</bool></item><item><bool>true</bool></item><item><bool>true</bool></item></list></variable><variable name="between tests"><list id="552"><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="553">bar,foo,0</list></variable></variables></scene></scenes></project><media name="Lab 3.4 unit tests" app="Snap! 7, https://snap.berkeley.edu" version="2"></media></snapdata>