def test_get_movement_points_obstacle_lte_max_mv_will_continue_around_corner( self): elevations = { Point(0, 0): 0, Point(1, 0): 0, Point(2, 0): 0, Point(3, 0): 0, Point(0, 1): 3, Point(1, 1): 4, Point(2, 1): 0, Point(3, 1): 0, Point(0, 2): 0, Point(1, 2): 0, Point(2, 2): 0, Point(3, 2): 0 } tiles = [ Tile(point=point, elevation=elevation) for point, elevation in elevations.items() ] map_ = Map(4, 3, tiles) origin = Point(1, 2) expected_four = { Point(1, 0): 4, Point(2, 0): 3, Point(3, 0): 4, Point(2, 1): 2, Point(3, 1): 3, Point(0, 2): 1, Point(1, 2): 0, Point(2, 2): 1, Point(3, 2): 2 } expected_five = { Point(0, 0): 5, Point(1, 0): 4, Point(2, 0): 3, Point(3, 0): 4, Point(0, 1): 5, Point(1, 1): 5, Point(2, 1): 2, Point(3, 1): 3, Point(0, 2): 1, Point(1, 2): 0, Point(2, 2): 1, Point(3, 2): 2 } ranger = MovementCalculator(map_) self.assertEqual(ranger.get_movement_points(origin, 5), expected_five) self.assertEqual(ranger.get_movement_points(origin, 4), expected_four)
def test_get_movement_points_goes_around_obstacle_and_recalculates_on_terrain( self): terrains = { Point(0, 0): 1, Point(1, 0): 1, Point(2, 0): 1, Point(3, 0): 1, Point(0, 1): 1, Point(1, 1): 1, Point(2, 1): 1, Point(3, 1): 1, Point(0, 2): 1, Point(1, 2): 4, Point(2, 2): 9, Point(3, 2): 1, Point(0, 3): 1, Point(1, 3): 1, Point(2, 3): 5, Point(3, 3): 1 } tiles = [ Tile(point=point, terrain_mv=terrain) for point, terrain in terrains.items() ] map_ = Map(4, 4, tiles) origin = Point(1, 3) expected_six = { Point(0, 0): 4, Point(1, 0): 5, Point(2, 0): 6, Point(0, 1): 3, Point(1, 1): 4, Point(2, 1): 5, Point(3, 1): 6, Point(0, 2): 2, Point(1, 2): 1, Point(2, 2): 5, Point(0, 3): 1, Point(1, 3): 0, Point(2, 3): 1, Point(3, 3): 6 } ranger = MovementCalculator(map_) self.assertEqual(ranger.get_movement_points(origin, 6), expected_six)
def test_get_movement_points_after_going_around_obstacle_will_recalculate_min_distance_r_to_l( self): elevations = { Point(0, 0): 9, Point(1, 0): 0, Point(2, 0): 0, Point(3, 0): 0, Point(0, 1): 0, Point(1, 1): 0, Point(2, 1): 3, Point(3, 1): 0, Point(0, 2): 9, Point(1, 2): 0, Point(2, 2): 0, Point(3, 2): 0, Point(0, 3): 0, Point(1, 3): 0, Point(2, 3): 0, Point(3, 3): 0 } tiles = [ Tile(point=point, elevation=elevation) for point, elevation in elevations.items() ] map_ = Map(4, 4, tiles) origin = Point(3, 1) expected_six = { Point(1, 0): 3, Point(2, 0): 2, Point(3, 0): 1, Point(0, 1): 5, Point(1, 1): 4, Point(2, 1): 4, Point(3, 1): 0, Point(1, 2): 3, Point(2, 2): 2, Point(3, 2): 1, Point(0, 3): 5, Point(1, 3): 4, Point(2, 3): 3, Point(3, 3): 2 } ranger = MovementCalculator(map_) self.assertEqual(ranger.get_movement_points(origin, 6), expected_six)