Example #1
0
    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})
Example #2
0
    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})
Example #3
0
    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})
Example #4
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})
Example #5
0
    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)
Example #7
0
    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})
Example #8
0
    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)
Example #9
0
        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))
Example #14
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})
Example #15
0
 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")
Example #18
0
 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})