class SpriteListTests(TestCase): def setUp(self): self.factory = TEST_GAME_CONTEXT.tile_factory self.tile = self.factory.get('g') self.frame = Frame(TEST_GAME_CONTEXT.screen, Rect(40,50, 160,160)) self.sprite = Sprite(self.frame, self.tile, Vector(1,1), speed=2) @showdoc def test_sprite_list(self): """Two sprites are moving.""" sprites = SpriteList() s1 = Sprite(self.frame, self.factory.get('g'), pos=Vector(1,0), speed=2) s2 = Sprite(self.frame, self.factory.get('b'), pos=Vector(1,1), speed=4) sprites.append(s1) sprites.append(s2) s1.add_move(RIGHT) s1.add_move(DOWN) s2.add_move(DOWN) while sprites.is_moving(): sprites.update() self.frame.clear() sprites.draw() pygame.display.update() time.sleep(SHORT_DELAY)
class FrameTests(TestCase): def setUp(self): self.screen = Screen(RESOLUTION, BACKGROUND_IMAGE) self.frame = Frame(self.screen, Rect(50, 50, 100, 100)) @graphictest def test_blit(self): """image drawn into frame, then cleared.""" bitmap = image.load(TILE).convert() dest = Rect(32, 16, 32, 32) source = Rect(0, 0, 32, 32) self.frame.blit(bitmap, dest, source) next_frame() self.frame.clear() @graphictest def test_text(self): """Text drawn into frame, then cleared.""" self.frame.print_text('Hello Frame', Vector(50,50), \ DEMIBOLD_BIG, CYAN ) next_frame() self.frame.clear() def test_get_dest_rect(self): """Adds rectangle values to frame position.""" rect = Rect(10, 20, 20, 31) dest = self.frame.get_dest_rect(rect) self.assertEqual(dest, Rect(60, 70, 20, 31))
class SpriteTests(TestCase): def setUp(self): self.factory = TEST_GAME_CONTEXT.tile_factory self.tile = self.factory.get('g') self.frame = Frame(TEST_GAME_CONTEXT.screen, Rect(40, 50, 160, 160)) self.sprite = Sprite(self.frame, self.tile, Vector(1, 1), speed=2) def test_sprite_pos(self): """Sprite has a position.""" sprite = Sprite(self.frame, self.factory.get('g'), pos=Vector(4, 3)) self.assertEqual(sprite.pos.x, 4) self.assertEqual(sprite.pos.y, 3) def move(self): """Moves sprite until movement terminates.""" while self.sprite.is_moving(): self.sprite.move() self.frame.clear() self.sprite.draw() pygame.display.update() time.sleep(SHORT_DELAY) @showdoc def test_move_sprite(self): """Sprite moves east, then southeast.""" self.sprite.add_move(RIGHT) self.sprite.add_move(DOWNRIGHT) self.move() self.assertEqual(self.sprite.pos.x, 3) self.assertEqual(self.sprite.pos.y, 2) @showdoc def test_priority_move_sprite(self): """Sprite moves southeast, then east.""" self.sprite.add_move(RIGHT) self.sprite.add_move(DOWNRIGHT, True) self.move()