def test_get_buildings_returns_all_buildings_on_the_map(self): tmap = TileMap(TileGrid(Size(10, 10))) building1 = CabbageFarm() building2 = CabbageFarm() building3 = CabbageFarm() tmap.place_building(building1, Point(0, 0)) tmap.place_building(building2, Point(100, 100)) tmap.place_building(building3, Point(180, 180)) buildings = tmap.get_buildings() self.assertEqual(3, len(buildings)) self.assertIn(building1, buildings) self.assertIn(building2, buildings) self.assertIn(building3, buildings)
def test_place_building_raises_an_exception_when_a_building_is_placed_out_of_bounds(self): # noqa tmap = TileMap(TileGrid(Size(10, 10))) farm = CabbageFarm() with self.assertRaises(TileMapException) as error_context: tmap.place_building(farm, Point(200, 200)) self.assertEqual( error_context.exception.message, 'Buildings must be placed in bounds', ) with self.assertRaises(TileMapException) as error_context: tmap.place_building(farm, Point(-1, -1)) with self.assertRaises(TileMapException) as error_context: tmap.place_building(farm, Point(-1, 0)) with self.assertRaises(TileMapException) as error_context: tmap.place_building(farm, Point(0, -1)) with self.assertRaises(TileMapException) as error_context: tmap.place_building(farm, Point(1, 200)) with self.assertRaises(TileMapException) as error_context: tmap.place_building(farm, Point(200, 1))
def test_place_building_puts_a_building_into_the_building_registry_at_the_given_position(self): # noqa tmap = TileMap(TileGrid(Size(10, 10))) farm = CabbageFarm() tmap.place_building(farm, Point(50, 50)) self.assertIn(farm.building_id, tmap.building_registry) self.assertEqual(tmap.get_building_position(farm), Point(50, 50))
def test_get_building_at_position_returns_None_if_there_is_no_building_near_the_given_point(self): # noqa tmap = TileMap(TileGrid(Size(10, 10))) farm = CabbageFarm() tmap.place_building(farm, Point(100, 100)) self.assertIsNone(tmap.get_building_at_position(Point(50, 50)))
def test_get_building_at_position_finds_a_building_near_to_the_given_point(self): # noqa tmap = TileMap(TileGrid(Size(10, 10))) farm = CabbageFarm() tmap.place_building(farm, Point(100, 100)) self.assertIs(farm, tmap.get_building_at_position(Point(95, 95)))
def test_get_building_position_returns_the_location_of_a_building(self): tmap = TileMap(TileGrid(Size(10, 10))) farm = CabbageFarm() tmap.place_building(farm, Point(100, 100)) self.assertEqual(tmap.get_building_position(farm), Point(100, 100))