master
  1package ca.mokhan.test;
  2
  3import Q9.*;
  4import java.io.*;
  5import java.text.*;
  6import java.util.*;
  7import junit.framework.Test;
  8import junit.framework.TestCase;
  9import junit.framework.TestSuite;
 10
 11public class MovingRobotTest extends TestCase {
 12  private MovingRobot subject;
 13
 14  public MovingRobotTest(String testName) {
 15    super(testName);
 16    this.subject = new MovingRobot(0, 0);
 17  }
 18
 19  public static Test suite() {
 20    return new TestSuite(MovingRobotTest.class);
 21  }
 22
 23  public void test_generateNextMove() {
 24    for (int i = 0; i < 100; i++) {
 25      int move = subject.generateNextMove();
 26      assertTrue(move > 0);
 27      assertTrue(move < 9);
 28    }
 29  }
 30
 31  public void test_validateNextMove_whenAtZeroZero() {
 32    this.subject = new MovingRobot(0, 0);
 33    assertFalse(subject.validateNextMove(Robot.NORTH));
 34    assertFalse(subject.validateNextMove(Robot.NORTH_EAST));
 35    assertTrue(subject.validateNextMove(Robot.EAST));
 36    assertTrue(subject.validateNextMove(Robot.SOUTH_EAST));
 37    assertTrue(subject.validateNextMove(Robot.SOUTH));
 38    assertFalse(subject.validateNextMove(Robot.SOUTH_WEST));
 39    assertFalse(subject.validateNextMove(Robot.WEST));
 40    assertFalse(subject.validateNextMove(Robot.NORTH_WEST));
 41  }
 42
 43  public void test_validateNextMove_whenAtZeroOne() {
 44    this.subject = new MovingRobot(0, 1);
 45
 46    assertTrue(subject.validateNextMove(Robot.NORTH));
 47    assertTrue(subject.validateNextMove(Robot.NORTH_EAST));
 48    assertTrue(subject.validateNextMove(Robot.EAST));
 49    assertTrue(subject.validateNextMove(Robot.SOUTH_EAST));
 50    assertTrue(subject.validateNextMove(Robot.SOUTH));
 51    assertFalse(subject.validateNextMove(Robot.SOUTH_WEST));
 52    assertFalse(subject.validateNextMove(Robot.WEST));
 53    assertFalse(subject.validateNextMove(Robot.NORTH_WEST));
 54  }
 55
 56  public void test_validateNextMove_whenAtNineZero() {
 57    this.subject = new MovingRobot(9, 0);
 58
 59    assertFalse(subject.validateNextMove(Robot.NORTH));
 60    assertFalse(subject.validateNextMove(Robot.NORTH_EAST));
 61    assertFalse(subject.validateNextMove(Robot.EAST));
 62    assertFalse(subject.validateNextMove(Robot.SOUTH_EAST));
 63    assertTrue(subject.validateNextMove(Robot.SOUTH));
 64    assertTrue(subject.validateNextMove(Robot.SOUTH_WEST));
 65    assertTrue(subject.validateNextMove(Robot.WEST));
 66    assertFalse(subject.validateNextMove(Robot.NORTH_WEST));
 67  }
 68
 69  public void test_validateNextMove_whenAtNineNine() {
 70    this.subject = new MovingRobot(9, 9);
 71    assertTrue(subject.validateNextMove(Robot.NORTH));
 72    assertFalse(subject.validateNextMove(Robot.NORTH_EAST));
 73    assertFalse(subject.validateNextMove(Robot.EAST));
 74    assertFalse(subject.validateNextMove(Robot.SOUTH_EAST));
 75    assertFalse(subject.validateNextMove(Robot.SOUTH));
 76    assertFalse(subject.validateNextMove(Robot.SOUTH_WEST));
 77    assertTrue(subject.validateNextMove(Robot.WEST));
 78    assertTrue(subject.validateNextMove(Robot.NORTH_WEST));
 79  }
 80
 81  public void test_validateNextMove_whenAtZeroNine() {
 82    this.subject = new MovingRobot(0, 9);
 83    assertTrue(subject.validateNextMove(Robot.NORTH));
 84    assertTrue(subject.validateNextMove(Robot.NORTH_EAST));
 85    assertTrue(subject.validateNextMove(Robot.EAST));
 86    assertFalse(subject.validateNextMove(Robot.SOUTH_EAST));
 87    assertFalse(subject.validateNextMove(Robot.SOUTH));
 88    assertFalse(subject.validateNextMove(Robot.SOUTH_WEST));
 89    assertFalse(subject.validateNextMove(Robot.WEST));
 90    assertFalse(subject.validateNextMove(Robot.NORTH_WEST));
 91  }
 92
 93  public void test_move_whenAtZeroZero() {
 94    subject = new MovingRobot(0, 0);
 95
 96    for (int i = 0; i < 9; i++) {
 97      subject.move(Robot.EAST);
 98      assertEquals(i + 1, subject.getX());
 99      assertEquals(0, subject.getY());
100    }
101
102    for (int i = 0; i < 9; i++) {
103      subject.move(Robot.SOUTH);
104      assertEquals(9, subject.getX());
105      assertEquals(i + 1, subject.getY());
106    }
107
108    for (int i = 9; i > 0; i--) {
109      subject.move(Robot.WEST);
110      assertEquals(i - 1, subject.getX());
111      assertEquals(9, subject.getY());
112    }
113
114    for (int i = 9; i > 0; i--) {
115      subject.move(Robot.NORTH);
116      assertEquals(0, subject.getX());
117      assertEquals(i - 1, subject.getY());
118    }
119
120    subject.move(Robot.NORTH);
121    assertEquals(0, subject.getX());
122    assertEquals(0, subject.getY());
123
124    subject.move(Robot.NORTH_WEST);
125    assertEquals(0, subject.getX());
126    assertEquals(0, subject.getY());
127
128    subject.move(Robot.WEST);
129    assertEquals(0, subject.getX());
130    assertEquals(0, subject.getY());
131
132    subject.move(Robot.SOUTH_WEST);
133    assertEquals(0, subject.getX());
134    assertEquals(0, subject.getY());
135  }
136
137  public void test_move_Should_move_in_circle() {
138    this.subject = new MovingRobot(5, 5);
139
140    subject.move(Robot.NORTH);
141    assertEquals(5, subject.getX());
142    assertEquals(4, subject.getY());
143
144    subject.move(Robot.NORTH_EAST);
145    assertEquals(6, subject.getX());
146    assertEquals(3, subject.getY());
147
148    subject.move(Robot.EAST);
149    assertEquals(7, subject.getX());
150    assertEquals(3, subject.getY());
151
152    subject.move(Robot.SOUTH_EAST);
153    assertEquals(8, subject.getX());
154    assertEquals(4, subject.getY());
155
156    subject.move(Robot.SOUTH);
157    assertEquals(8, subject.getX());
158    assertEquals(5, subject.getY());
159
160    subject.move(Robot.SOUTH_WEST);
161    assertEquals(7, subject.getX());
162    assertEquals(6, subject.getY());
163
164    subject.move(Robot.WEST);
165    assertEquals(6, subject.getX());
166    assertEquals(6, subject.getY());
167
168    subject.move(Robot.NORTH_WEST);
169    assertEquals(5, subject.getX());
170    assertEquals(5, subject.getY());
171  }
172
173  public void test_printMoves() {
174    subject = new MovingRobot(0, 0);
175
176    subject.move(Robot.EAST);
177    assertEquals(String.format("%d", Robot.EAST), subject.printMoves());
178
179    subject.move(Robot.EAST);
180    assertEquals(String.format("%d,%d", Robot.EAST, Robot.EAST), subject.printMoves());
181  }
182}