package org.teachingkidsprogramming.section01forloops; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.teachingextensions.logo.Tortoise; import org.teachingextensions.logo.Turtle; import org.teachingextensions.logo.utils.TortoiseUtils; public class DeepDive01ForLoops { // Step 1: SELECT the method name (numbersDoNotNeedQuotes on line 23), then click the Run Button // Keyboard shortcut to run -> PC: Ctrl+F11 or Mac: Command+fn+F11 // Step 2: READ the name of the method that failed // Step 3: FILL IN the blank (___) to make that method pass // Step 4: SAY at least one thing you just learned // Step 5: GO to the next method // IMPORTANT - Do NOT change anything except the blank (___) // @Test public void numbersDoNotNeedQuotes() { Assert.assertEquals(42, ____); } @Test public void defaultWidthForTheTortoise() throws Exception { Assert.assertEquals(Tortoise.getPenWidth(), ____); } @Test public void stringsNeedQuotes() throws Exception { Assert.assertEquals("Green", ___); } @Test public void stringsCanIncludeSpaces() throws Exception { Assert.assertEquals("This is a string", ___); } @Test public void changingThePenWidthTo5() throws Exception { Tortoise.setPenWidth(____); Assert.assertEquals(5, Tortoise.getPenWidth()); } @Test public void movingTheTortoise100Pixels() throws Exception { int start = Tortoise.getY(); Tortoise.move(____); Assert.assertEquals(Tortoise.getY(), start - 100); // 'Hint: make sure you read the name of this method } @Test public void theTortoiseTurns21() throws Exception { Tortoise.turn(____); Assert.assertEquals(21.0, Tortoise.getAngle(), 0.01); } @Test public void theTortoiseTurns15Twice() throws Exception { Tortoise.turn(____); Tortoise.turn(____); Assert.assertEquals(30.0, Tortoise.getAngle(), 0.01); } @Test public void howFastCanTheTortoiseGo() throws Exception { Tortoise.setSpeed(____); Assert.assertEquals(topSpeed, Tortoise.getSpeed()); // 'Hint: Click SetSpeed then read the documentation on the left -----> } @Test public void assigningVariables() throws Exception { int myFavoriteNumber = 101; Assert.assertEquals(myFavoriteNumber, ____); } @Test public void combiningNumbers() throws Exception { int age = 3 + 4; Assert.assertEquals(age, ____); } @Test public void combiningText() throws Exception { String name = "Peter" + " " + "Pan"; Assert.assertEquals(name, ___); } @Test public void combiningTextAndNumbers() throws Exception { String name = "Henry The " + 8; Assert.assertEquals(name, ___); } @Test public void textIsTextEvenWhenItsNumbers() throws Exception { String age = "3" + "4"; Assert.assertEquals(age, ___); } @Test public void combiningTextInALoop() throws Exception { String sound = "A"; for (int i = 0; i < 3; i++) { sound += "H"; } Assert.assertEquals(sound, ___); } @Test public void forLoopsEndAtTheEnd() throws Exception { String numbers = "# "; for (int i = 0; i < ____; i++) { numbers += i; preventInfiniteLoops(); } Assert.assertEquals("# 012345", numbers); } @Test public void forLoopsCanStartAnywhere() throws Exception { String answer = "Because "; for (int i = ____; i < 10; i++) { answer += i; preventInfiniteLoops(); } // 'Question: Why is 7 the most feared number? Assert.assertEquals("Because 789", answer); } @Test public void forLoopsCanSkip() throws Exception { String numbers = "# "; for (int i = 1; i < 20; i += ____) { numbers = numbers + i + ","; preventInfiniteLoops(); } Assert.assertEquals("# 1,3,5,7,9,11,13,15,17,19,", numbers); } @Test public void forLoopsCanSkipUpAndDown() throws Exception { String numbers = "# "; for (int i = 20; 0 < i && i < 40; i += ____) { numbers = numbers + i + ","; preventInfiniteLoops(); } Assert.assertEquals("# 20,17,14,11,8,5,2,", numbers); } @Test public void forLoopsCanGoBackwards() throws Exception { String numbers = "Countdown: "; for (int i = 9; i >= 1; i += ____) { numbers += i; preventInfiniteLoops(); } Assert.assertEquals("Countdown: 987654321", numbers); } @Test public void semicolonsMessUpForLoops() throws Exception { String sound = "A"; for (int i = 0; i < 13; i++); { sound += "H"; } Assert.assertEquals(sound, ___); } /** * Ignore the following, it's needed to run the deep dive * * * * * * * * * * */ public String ___ = "You need to fill in the blank ___"; public int ____ = 1; int topSpeed = 10; int counter = 0; @Before public void init() { TortoiseUtils.resetTurtle(); Tortoise.setSpeed(Turtle.TEST_SPEED); } private void preventInfiniteLoops() { if (counter++ > 100) { throw new RuntimeException("You have created an infinite loop"); } } }