def test_can_place_tile_if_rotated_correct(self): puzzle = Puzzle([]) puzzle.grid[1] = Tile([ Professor('lower', 'green'), Professor('lower', 'green'), Professor('upper', 'green'), Professor('upper', 'green') ]) puzzle.grid[6] = Tile([ Professor('lower', 'blue'), Professor('lower', 'blue'), Professor('upper', 'blue'), Professor('upper', 'blue') ]) puzzle.grid[9] = Tile([ Professor('lower', 'purple'), Professor('lower', 'purple'), Professor('upper', 'purple'), Professor('upper', 'purple') ]) puzzle.grid[4] = Tile([ Professor('lower', 'brown'), Professor('lower', 'brown'), Professor('upper', 'brown'), Professor('upper', 'brown') ]) tile = Tile([ Professor('lower', 'blue'), Professor('upper', 'purple'), Professor('upper', 'brown'), Professor('lower', 'green') ]) self.assertFalse(puzzle._can_place_tile(tile, 5)) tile.rotate() self.assertTrue(puzzle._can_place_tile(tile, 5))
def test_can_place_tile_raises_when_position_is_occupied(self): tile = Tile([ Professor('lower', 'green'), Professor('lower', 'green'), Professor('upper', 'green'), Professor('upper', 'green') ]) puzzle = Puzzle([]) puzzle.grid[0] = tile with (self.assertRaisesRegex(ValueError, 'Index.*is not empty')): puzzle._can_place_tile(tile, 0)
def test_can_place_tile_if_all_neighboring_tiles_match(self): puzzle = Puzzle([]) puzzle.grid[1] = Tile([ Professor('lower', 'green'), Professor('lower', 'green'), Professor('upper', 'green'), Professor('upper', 'green') ]) puzzle.grid[6] = Tile([ Professor('lower', 'blue'), Professor('lower', 'blue'), Professor('upper', 'blue'), Professor('upper', 'blue') ]) puzzle.grid[9] = Tile([ Professor('lower', 'purple'), Professor('lower', 'purple'), Professor('upper', 'purple'), Professor('upper', 'purple') ]) puzzle.grid[4] = Tile([ Professor('lower', 'brown'), Professor('lower', 'brown'), Professor('upper', 'brown'), Professor('upper', 'brown') ]) matching_tile = Tile([ Professor('lower', 'green'), Professor('lower', 'blue'), Professor('upper', 'purple'), Professor('upper', 'brown') ]) self.assertTrue(puzzle._can_place_tile(matching_tile, 5))
def test_can_place_tile_when_grid_is_empty(self): tile = Tile([ Professor('lower', 'green'), Professor('lower', 'green'), Professor('upper', 'green'), Professor('upper', 'green') ]) puzzle = Puzzle([]) self.assertTrue(puzzle._can_place_tile(tile, 0))
def test_can_place_tile_false_when_color_mismatch(self): all_green_tile = Tile([ Professor('lower', 'green'), Professor('lower', 'green'), Professor('upper', 'green'), Professor('upper', 'green') ]) all_blue_tile = Tile([ Professor('lower', 'blue'), Professor('lower', 'blue'), Professor('upper', 'blue'), Professor('upper', 'blue') ]) puzzle = Puzzle([]) puzzle.grid[0] = all_green_tile self.assertFalse(puzzle._can_place_tile(all_blue_tile, 1))
def test_can_place_tile_false_when_body_mismatch(self): first_tile = Tile([ Professor('lower', 'green'), Professor('lower', 'green'), Professor('upper', 'green'), Professor('upper', 'green') ]) second_tile = Tile([ Professor('upper', 'green'), Professor('upper', 'green'), Professor('lower', 'green'), Professor('lower', 'green') ]) puzzle = Puzzle([]) puzzle.grid[0] = first_tile self.assertFalse(puzzle._can_place_tile(second_tile, 1))