def test_N_moves_waypoint_east(self): ship = WaypointShip() ship.navigate("E2") self.assertEqual(ship.position, travel.Coordinate(0, 0)) self.assertEqual(ship.waypoint_position, {"east": 12, "north": 1})
def test_N_moves_waypoint_from_north_to_south(self): ship = WaypointShip() ship.navigate("S2") self.assertEqual(ship.position, travel.Coordinate(0, 0)) self.assertEqual(ship.waypoint_position, {"east": 10, "south": 1})
def test_N_moves_waypoint_to_zero_north(self): ship = WaypointShip() ship.navigate("S1") self.assertEqual(ship.position, travel.Coordinate(0, 0)) self.assertEqual(ship.waypoint_position, {"east": 10, "north": 0})
def test_N_moves_waypoint_west_to_west_of_ship(self): ship = WaypointShip() ship.navigate("W11") self.assertEqual(ship.position, travel.Coordinate(0, 0)) self.assertEqual(ship.waypoint_position, {"west": 1, "north": 1})
def test_two_steps_of_example(self): ship = WaypointShip() ship.navigate("F10") ship.navigate("N3") self.assertEqual(ship.position, travel.Coordinate(100, 10)) self.assertEqual(ship.waypoint_position, {"east": 10, "north": 4})
def test_ship_following_example_instructions(self): example = ["F10", "N3", "F7", "R90", "F11"] ship = FreeFloatingShip() for i in example: ship.navigate(i) self.assertEqual(ship.heading, "south") self.assertEqual(ship.position, travel.Coordinate(17, 8)) self.assertEqual(ship.manhattan_distance_travelled(), 25)
def test_four_steps_of_example(self): ship = WaypointShip() ship.navigate("F10") ship.navigate("N3") ship.navigate("F7") ship.navigate("R90") self.assertEqual(ship.position, travel.Coordinate(170, 38)) self.assertEqual(ship.waypoint_position, {"south": 10, "east": 4})
def test_whole_example(self): ship = WaypointShip() ship.navigate("F10") ship.navigate("N3") ship.navigate("F7") ship.navigate("R90") ship.navigate("F11") self.assertEqual(ship.position, travel.Coordinate(214, -72)) self.assertEqual(ship.manhattan_distance_travelled(), 286)
def move_ship(times: int) -> None: for _ in range(0, times): print(f"starting: {self.position}") print(f"waypoint: {self.waypoint_position}") self.position = travel.Coordinate( self.position.x + self.waypoint_position.get('east', 0) - self.waypoint_position.get('west', 0), self.position.y + self.waypoint_position.get('north', 0) - self.waypoint_position.get('south', 0), ) print(f"finished: {self.position}")
def test_ship_can_move_forward(self): ship = FreeFloatingShip() ship.navigate("F1") self.assertEqual(ship.position, travel.Coordinate(1, 0)) self.assertEqual(ship.heading, "east")
def test_ship_starts_at_zero(self): ship = FreeFloatingShip() self.assertEqual(ship.position, travel.Coordinate(0, 0)) self.assertEqual(ship.heading, "east")
def __init__(self): self.position: travel.Coordinate = travel.Coordinate(0, 0) self.heading: str = "east"
def test_ship_can_rotate_and_move(self): ship = FreeFloatingShip() ship.navigate("R180") ship.navigate("F4") self.assertEqual(ship.heading, "west") self.assertEqual(ship.position, travel.Coordinate(-4, 0))
def test_F10_moves_to_waypoint_and_waypoint_offset_does_not_change(self): ship = WaypointShip() ship.navigate("F10") self.assertEqual(ship.position, travel.Coordinate(100, 10)) self.assertEqual(ship.waypoint_position, {"east": 10, "north": 1})
def __init__(self): self.position: travel.Coordinate = travel.Coordinate(0, 0) self.waypoint_position: travel.Coordinate = {'east': 10, 'north': 1}
def test_ship_can_move_south(self): ship = FreeFloatingShip() ship.navigate("S1") self.assertEqual(ship.position, travel.Coordinate(0, 1)) self.assertEqual(ship.heading, "east")
def test_ship_can_move_west_more_than_one(self): ship = FreeFloatingShip() ship.navigate("W3") self.assertEqual(ship.position, travel.Coordinate(-3, 0)) self.assertEqual(ship.heading, "east")
def test_ship_can_have_waypoint(self): ship = WaypointShip() self.assertEqual(ship.position, travel.Coordinate(0, 0)) self.assertEqual(ship.waypoint_position, {"east": 10, "north": 1})