def test_get_spawn(self):
        # Initial case, just test that it will return something acceptable
        # The snake head is irrelevant here.
        food_coords = self.spawn_manager_rect.get_spawn(Snake())
        self.assertTrue(food_coords[0] >= 0)
        self.assertTrue(food_coords[0] < 4)
        self.assertTrue(food_coords[1] >= 0)
        self.assertTrue(food_coords[1] < 6)

        # Construct a snake that loops around itself.
        snake = Snake()
        snake.head = (3, 7)
        snake.joints = [(6, 7), (6, 3), (5, 3), (5, 2), (7, 2), (7, 8), (3, 8)]
        snake_squares = snake.enumerate_snake_squares()

        # Repeat 100 times so that the test may include all branches
        for _ in range(100):
            food_coords = self.spawn_manager_playtest.get_spawn(snake)
            self.assertTrue(food_coords not in snake_squares)

        movements = (QuadraticGrid.Movements.UP, QuadraticGrid.Movements.DOWN,
          QuadraticGrid.Movements.LEFT, QuadraticGrid.Movements.RIGHT)

        for _ in range(100):
            self.spawn_manager_playtest.note_movement(random.choice(movements))

        for _ in range(100):
            food_coords = self.spawn_manager_playtest.get_spawn(snake)
            self.assertTrue(food_coords not in snake_squares)
    def test_get_spawn(self):
        snake = Snake()
        snake.head = (3, 7)
        snake.joints = [(6, 7), (6, 3), (5, 3), (5, 2), (7, 2), (7, 8), (3, 8)]
        snake_squares = snake.enumerate_snake_squares()

        for _ in range(100):
            food_coords = self.spawn_manager.get_spawn(snake)
            self.assertTrue(food_coords not in snake_squares)
    def test_enumerate_snake_squares(self):
        snake = Snake()
        snake.head = (6, 7)
        snake.joints = [(6, 4), (3, 4), (3, 3), (8, 3), (8, 0), (0, 0)]
        expected_squares = set()
        expected_squares.add((6, 7))

        for r in range(8):
            expected_squares.add((r, 0))

        for c in range(3):
            expected_squares.add((8, c))

        for r in range(3, 9):
            expected_squares.add((r, 3))

        for r in range(3, 7):
            expected_squares.add((r, 4))

        for c in range(4, 7):
            expected_squares.add((6, c))

        self.assertEquals(expected_squares, snake.enumerate_snake_squares())