def test_get_valid_cell(self): map = WorldMapCreator.generate_world_map_from_cells_data( self._generate_cells()) for x in (0, 1): for y in (0, 1): location = Location(x, y) self.assertEqual(map.get_cell(location).location, location)
def test_all_cells(self): map = WorldMapCreator.generate_world_map_from_cells_data( self._generate_cells()) self.assertLocationsEqual( map.all_cells(), [Location(x, y) for x in range(-1, 2) for y in range(-1, 2)], )
def test_interactable_cells(): cells = _generate_cells() cells[0]["interactable"] = {"type": "health"} cells[8]["interactable"] = {"type": "damage_boost"} map = WorldMapCreator.generate_world_map_from_cells_data(cells) assertLocationsEqual(map.interactable_cells(), (Location(-1, -1), Location(1, 1)))
def test_score_cells(self): cells = self._generate_cells() cells[0]["interactable"] = {"type": "score"} cells[8]["interactable"] = {"type": "score"} map = WorldMapCreator.generate_world_map_from_cells_data(cells) self.assertLocationsEqual(map.score_cells(), (Location(-1, -1), Location(1, 1)))
def test_get_y_off_map(): map = WorldMapCreator.generate_world_map_from_cells_data(_generate_cells()) for x in (0, 1): with pytest.raises(KeyError): map.get_cell(Location(x, -2)) with pytest.raises(KeyError): map.get_cell(Location(x, 2))
def test_scan_nearby(avatar_state_json): cells = _generate_cells(5, 5) cells[0]["avatar"] = avatar_state_json cells[2]["obstacle"] = {"location": {"x": 0, "y": 0}} cells[4]["interactable"] = {"type": ARTEFACT_TYPES[-1]} map = WorldMapCreator.generate_world_map_from_cells_data(cells) artefacts = map.scan_nearby(Location(-1, 0)) assert len(artefacts) == 1
def test_get_y_off_map(self): map = WorldMapCreator.generate_world_map_from_cells_data( self._generate_cells()) for x in (0, 1): with self.assertRaises(KeyError): map.get_cell(Location(x, -2)) with self.assertRaises(KeyError): map.get_cell(Location(x, 2))
async def process_turn(request): data = json.loads(await request.content.read()) world_map = WorldMapCreator.generate_world_map_from_cells_data( **data["world_map"]) code, options = data["code"], data["options"] avatar_state = AvatarState( location=data["avatar_state"]["location"], score=data["avatar_state"]["score"], health=data["avatar_state"]["health"], backpack=data["avatar_state"]["backpack"], id=0, orientation="north", ) response = avatar_runner.process_avatar_turn(world_map, avatar_state, code) return web.json_response(response)
def test_y_off_map_is_not_visible(): map = WorldMapCreator.generate_world_map_from_cells_data(_generate_cells()) for x in (0, 1): assert map.is_visible(Location(x, -2)) == False assert map.is_visible(Location(x, 2)) == False
def test_get_valid_cell(): map = WorldMapCreator.generate_world_map_from_cells_data(_generate_cells()) for x in (0, 1): for y in (0, 1): location = Location(x, y) assert map.get_cell(location).location == location
def test_artefact_cell(): cells = _generate_cells() cells[0]["interactable"] = {"type": ARTEFACT_TYPES[0]} map = WorldMapCreator.generate_world_map_from_cells_data(cells) assert map.get_cell(Location(-1, -1)).has_artefact() == True
def test_location_is_visible(): map = WorldMapCreator.generate_world_map_from_cells_data(_generate_cells()) for x in (0, 1): for y in (0, 1): assert map.is_visible(Location(x, y)) == True
def test_grid_size(): map = WorldMapCreator.generate_world_map_from_cells_data( _generate_cells(1, 3)) assertGridSize(map, 1, 3)
def test_can_move_to(self): map = WorldMapCreator.generate_world_map_from_cells_data( self._generate_cells()) target = Location(1, 1) self.assertTrue(map.can_move_to(target))
def test_cannot_move_to_inhabited_cell(avatar_state_json): cells = _generate_cells() cells[1]["avatar"] = avatar_state_json map = WorldMapCreator.generate_world_map_from_cells_data(cells) assert map.can_move_to(Location(-1, 0)) == False
def test_cannot_move_to_cell_off_grid(self): map = WorldMapCreator.generate_world_map_from_cells_data( self._generate_cells()) target = Location(4, 1) self.assertFalse(map.can_move_to(target))
def test_cannot_move_to_cell_off_grid(): map = WorldMapCreator.generate_world_map_from_cells_data(_generate_cells()) target = Location(4, 1) assert map.can_move_to(target) == False
def test_cannot_move_to_uninhabitable_cell(): cells = _generate_cells() cells[0]["obstacle"] = {"location": {"x": -1, "y": -1}} map = WorldMapCreator.generate_world_map_from_cells_data(cells) assert map.can_move_to(Location(-1, -1)) == False
def test_can_move_to(): map = WorldMapCreator.generate_world_map_from_cells_data(_generate_cells()) target = Location(1, 1) assert map.can_move_to(target) == True
def test_cannot_move_to_inhabited_cell(self): cells = self._generate_cells() cells[1]["avatar"] = self.AVATAR map = WorldMapCreator.generate_world_map_from_cells_data(cells) self.assertFalse(map.can_move_to(Location(-1, 0)))
def test_y_off_map_is_not_visible(self): map = WorldMapCreator.generate_world_map_from_cells_data( self._generate_cells()) for x in (0, 1): self.assertFalse(map.is_visible(Location(x, -2))) self.assertFalse(map.is_visible(Location(x, 2)))
def test_location_is_visible(self): map = WorldMapCreator.generate_world_map_from_cells_data( self._generate_cells()) for x in (0, 1): for y in (0, 1): self.assertTrue(map.is_visible(Location(x, y)))
def test_artefact_cell(self): cells = self._generate_cells() cells[0]["interactable"] = {"type": "artefact"} map = WorldMapCreator.generate_world_map_from_cells_data(cells) self.assertEqual(map.get_cell(Location(-1, -1)).has_artefact(), True)