示例#1
0
class TestUnit(unittest.TestCase):
    def setUp(self):
        self.constraint = (1000, 1000)
        self.unit = Unit(self.constraint, 100, 100, Directions.left, 160, 65)

    def test_init(self):
        self.assertEqual(self.unit.x, 100)
        self.assertEqual(self.unit.y, 100)
        self.assertEqual(self.unit.direction, Directions.left)
        self.assertEqual(self.unit.image_size, 160)
        self.assertEqual(self.unit.radius, 65)

    def test_move_random(self):
        x = self.unit.x
        y = self.unit.y
        self.unit.move_random()
        self.assertNotEqual((x, y), (self.unit.x, self.unit.y))

    def test_change_direction(self):
        direction = self.unit.direction
        self.unit.change_direction(self.unit.direction)
        self.assertNotEqual(direction, self.unit.direction)

    def test_constrain(self):
        self.unit.direction = Directions.down
        self.unit.y = 1000
        self.unit.constrain()
        self.assertEqual(self.unit.direction, Directions.up)

        self.unit.direction = Directions.up
        self.unit.y = -1000
        self.unit.constrain()
        self.assertEqual(self.unit.direction, Directions.down)

        self.unit.direction = Directions.right
        self.unit.x = 3000
        self.unit.constrain()
        self.assertEqual(self.unit.direction, Directions.left)

        self.unit.direction = Directions.left
        self.unit.x = -100
        self.unit.constrain()
        self.assertEqual(self.unit.direction, Directions.right)

    def test_collision_circle(self):
        x = self.unit.x + self.unit.image_size / 2
        y = self.unit.y + self.unit.image_size / 2
        coordinates = (x, y, self.unit.radius)
        self.assertEqual(self.unit.collision_circle(), coordinates)

    def test_get_direcion(self):
        x = 0
        y = 0
        self.unit.x = 0
        self.unit.direction = Directions.down
        self.unit.y = 1000
        self.unit.get_direction(x, y)
        self.assertEqual(self.unit.direction, Directions.up)

        self.unit.x = 0
        self.unit.direction = Directions.up
        self.unit.y = -1000
        self.unit.get_direction(x, y)
        self.assertEqual(self.unit.direction, Directions.down)

        self.unit.y = 0
        self.unit.direction = Directions.right
        self.unit.x = 3000
        self.unit.get_direction(x, y)
        self.assertEqual(self.unit.direction, Directions.left)

        self.unit.y = 0
        self.unit.direction = Directions.left
        self.unit.x = -100
        self.unit.get_direction(x, y)
        self.assertEqual(self.unit.direction, Directions.right)

    def test_chase(self):
        x = self.unit.x
        y = self.unit.y
        prey = Unit(self.constraint, 200, 200, Directions.left, 100, 100)
        self.unit.chase(prey)
        self.assertNotEqual((x, y), (self.unit.x, self.unit.y))

        prey = Unit(self.constraint, 98, 100, Directions.left, 100, 100)
        self.unit.chase(prey)
        self.assertEqual((prey.x, prey.y), (self.unit.x, self.unit.y))

        prey = Unit(self.constraint, 100, 98, Directions.left, 100, 100)
        self.unit.chase(prey)
        self.assertEqual((prey.x, prey.y), (self.unit.x, self.unit.y))