package ca.mokhan.test; import Q9.*; import java.io.*; import java.text.*; import java.util.*; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class MovingRobotTest extends TestCase { private MovingRobot subject; public MovingRobotTest(String testName) { super(testName); this.subject = new MovingRobot(0, 0); } public static Test suite() { return new TestSuite(MovingRobotTest.class); } public void test_generateNextMove() { for (int i = 0; i < 100; i++) { int move = subject.generateNextMove(); assertTrue(move > 0); assertTrue(move < 9); } } public void test_validateNextMove_whenAtZeroZero() { this.subject = new MovingRobot(0, 0); assertFalse(subject.validateNextMove(Robot.UP)); assertFalse(subject.validateNextMove(Robot.RIGHT_UP_CORNER)); assertTrue(subject.validateNextMove(Robot.RIGHT)); assertTrue(subject.validateNextMove(Robot.RIGHT_DOWN_CORNER)); assertTrue(subject.validateNextMove(Robot.DOWN)); assertFalse(subject.validateNextMove(Robot.LEFT_DOWN_CORNER)); assertFalse(subject.validateNextMove(Robot.LEFT)); assertFalse(subject.validateNextMove(Robot.LEFT_UP_CORNER)); } public void test_validateNextMove_whenAtZeroOne() { this.subject = new MovingRobot(0, 1); assertTrue(subject.validateNextMove(Robot.UP)); assertTrue(subject.validateNextMove(Robot.RIGHT_UP_CORNER)); assertTrue(subject.validateNextMove(Robot.RIGHT)); assertTrue(subject.validateNextMove(Robot.RIGHT_DOWN_CORNER)); assertTrue(subject.validateNextMove(Robot.DOWN)); assertFalse(subject.validateNextMove(Robot.LEFT_DOWN_CORNER)); assertFalse(subject.validateNextMove(Robot.LEFT)); assertFalse(subject.validateNextMove(Robot.LEFT_UP_CORNER)); } public void test_validateNextMove_whenAtNineZero() { this.subject = new MovingRobot(9, 0); assertFalse(subject.validateNextMove(Robot.UP)); assertFalse(subject.validateNextMove(Robot.RIGHT_UP_CORNER)); assertFalse(subject.validateNextMove(Robot.RIGHT)); assertFalse(subject.validateNextMove(Robot.RIGHT_DOWN_CORNER)); assertTrue(subject.validateNextMove(Robot.DOWN)); assertTrue(subject.validateNextMove(Robot.LEFT_DOWN_CORNER)); assertTrue(subject.validateNextMove(Robot.LEFT)); assertFalse(subject.validateNextMove(Robot.LEFT_UP_CORNER)); } public void test_validateNextMove_whenAtNineNine() { this.subject = new MovingRobot(9, 9); assertTrue(subject.validateNextMove(Robot.UP)); assertFalse(subject.validateNextMove(Robot.RIGHT_UP_CORNER)); assertFalse(subject.validateNextMove(Robot.RIGHT)); assertFalse(subject.validateNextMove(Robot.RIGHT_DOWN_CORNER)); assertFalse(subject.validateNextMove(Robot.DOWN)); assertFalse(subject.validateNextMove(Robot.LEFT_DOWN_CORNER)); assertTrue(subject.validateNextMove(Robot.LEFT)); assertTrue(subject.validateNextMove(Robot.LEFT_UP_CORNER)); } public void test_validateNextMove_whenAtZeroNine() { this.subject = new MovingRobot(0, 9); assertTrue(subject.validateNextMove(Robot.UP)); assertTrue(subject.validateNextMove(Robot.RIGHT_UP_CORNER)); assertTrue(subject.validateNextMove(Robot.RIGHT)); assertFalse(subject.validateNextMove(Robot.RIGHT_DOWN_CORNER)); assertFalse(subject.validateNextMove(Robot.DOWN)); assertFalse(subject.validateNextMove(Robot.LEFT_DOWN_CORNER)); assertFalse(subject.validateNextMove(Robot.LEFT)); assertFalse(subject.validateNextMove(Robot.LEFT_UP_CORNER)); } public void test_move_whenAtZeroZero() { subject = new MovingRobot(0, 0); for (int i = 0; i < 9; i++) { subject.move(Robot.RIGHT); assertEquals(i + 1, subject.getX()); assertEquals(0, subject.getY()); } for (int i = 0; i < 9; i++) { subject.move(Robot.DOWN); assertEquals(9, subject.getX()); assertEquals(i + 1, subject.getY()); } for (int i = 9; i > 0; i--) { subject.move(Robot.LEFT); assertEquals(i - 1, subject.getX()); assertEquals(9, subject.getY()); } for (int i = 9; i > 0; i--) { subject.move(Robot.UP); assertEquals(0, subject.getX()); assertEquals(i - 1, subject.getY()); } subject.move(Robot.UP); assertEquals(0, subject.getX()); assertEquals(0, subject.getY()); subject.move(Robot.LEFT_UP_CORNER); assertEquals(0, subject.getX()); assertEquals(0, subject.getY()); subject.move(Robot.LEFT); assertEquals(0, subject.getX()); assertEquals(0, subject.getY()); subject.move(Robot.LEFT_DOWN_CORNER); assertEquals(0, subject.getX()); assertEquals(0, subject.getY()); } public void test_printMoves() { subject = new MovingRobot(0, 0); subject.move(Robot.RIGHT); assertEquals(String.format("%d", Robot.RIGHT), subject.printMoves()); subject.move(Robot.RIGHT); assertEquals(String.format("%d,%d", Robot.RIGHT, Robot.RIGHT), subject.printMoves()); } public void test_printGrid() { Robot r1 = new MovingRobot(0, 0); Robot r2 = new MovingRobot(9, 9); String expected = "|X| | | | | | | | | |\n" + "| | | | | | | | | | |\n" + "| | | | | | | | | | |\n" + "| | | | | | | | | | |\n" + "| | | | | | | | | | |\n" + "| | | | | | | | | | |\n" + "| | | | | | | | | | |\n" + "| | | | | | | | | | |\n" + "| | | | | | | | | | |\n" + "| | | | | | | | | |Y|\n"; String result = MovingRobot.printGrid(r1, r2); System.out.println(expected); System.out.println(result); assertEquals(expected, result); } }