def test_invert(self): def fill_sprite(s): for x in range(s.width): for y in range(s.height): s.set_pixel(x, y, 1) s = Sprite(5, 5) # key the sprite so that looks like this: # 1 1 0 1 1 # 1 1 0 1 1 # 1 1 1 1 0 # 1 1 1 1 1 # 1 1 1 1 1 fill_sprite(s) s.set_pixel(2, 4, 0) s.set_pixel(2, 3, 0) s.set_pixel(4, 2, 0) expected = [[1, 1, 1, 1, 1], [1, 1, 1, 1, 1], [1, 1, 1, 0, 0], [1, 1, 1, 1, 1], [1, 1, 0, 1, 1]] self.assertEqual(s.pixel_state, expected) s2 = s.clone() s2.invert_vertical() expected = [[1, 1, 1, 1, 1], [1, 1, 1, 1, 1], [0, 0, 1, 1, 1], [1, 1, 1, 1, 1], [1, 1, 0, 1, 1]] self.assertEqual(s2.pixel_state, expected) s2 = s.clone() s2.invert_horizontal() expected = [[1, 1, 0, 1, 1], [1, 1, 1, 1, 1], [1, 1, 1, 0, 0], [1, 1, 1, 1, 1], [1, 1, 1, 1, 1]] self.assertEqual(s2.pixel_state, expected)
def test_rotate90(self): def fill_sprite(s): for x in range(s.width): for y in range(s.height): s.set_pixel(x, y, 1) s = Sprite(5, 5) # key the sprite so that looks like this: # 1 1 0 1 1 # 1 1 0 1 1 # 1 1 1 1 0 # 1 1 1 1 1 # 1 1 1 1 1 fill_sprite(s) s.set_pixel(2, 4, 0) s.set_pixel(2, 3, 0) s.set_pixel(4, 2, 0) expected = [[1, 1, 1, 1, 1], [1, 1, 1, 1, 1], [1, 1, 1, 0, 0], [1, 1, 1, 1, 1], [1, 1, 0, 1, 1]] self.assertEqual(s.pixel_state, expected) # rotate 90deg s2 = s.clone() s2.rotate90(1) expected = [[1, 1, 1, 1, 1], [1, 1, 1, 1, 1], [0, 1, 1, 1, 1], [1, 1, 0, 1, 1], [1, 1, 0, 1, 1]] self.assertEqual(s2.pixel_state, expected) # rotate 180deg s2 = s.clone() s2.rotate90(2) expected = [[1, 1, 0, 1, 1], [1, 1, 1, 1, 1], [0, 0, 1, 1, 1], [1, 1, 1, 1, 1], [1, 1, 1, 1, 1]] self.assertEqual(s2.pixel_state, expected) # rotate 270deg s2 = s.clone() s2.rotate90(3) expected = [[1, 1, 0, 1, 1], [1, 1, 0, 1, 1], [1, 1, 1, 1, 0], [1, 1, 1, 1, 1], [1, 1, 1, 1, 1]] self.assertEqual(s2.pixel_state, expected)
def test_draw_sprite(self): self.codebug.clear() def fill_sprite(s): for x in range(s.width): for y in range(s.height): s.set_pixel(x, y, 1) sprite = Sprite(4, 4) fill_sprite(sprite) self.codebug.draw_sprite(0, 0, sprite) self.assertEqual(self.codebug.get_row(4), 0x00) self.assertEqual(self.codebug.get_row(3), 0x1E) self.assertEqual(self.codebug.get_row(2), 0x1E) self.assertEqual(self.codebug.get_row(1), 0x1E) self.assertEqual(self.codebug.get_row(0), 0x1E) self.codebug.draw_sprite(1, 1, sprite) self.assertEqual(self.codebug.get_row(4), 0x0F) self.assertEqual(self.codebug.get_row(3), 0x0F) self.assertEqual(self.codebug.get_row(2), 0x0F) self.assertEqual(self.codebug.get_row(1), 0x0F) self.assertEqual(self.codebug.get_row(0), 0x00) sprite = Sprite(2, 3) fill_sprite(sprite) self.codebug.draw_sprite(0, 0, sprite) self.assertEqual(self.codebug.get_row(4), 0x00) self.assertEqual(self.codebug.get_row(3), 0x00) self.assertEqual(self.codebug.get_row(2), 0x18) self.assertEqual(self.codebug.get_row(1), 0x18) self.assertEqual(self.codebug.get_row(0), 0x18) sprite = Sprite(3, 3) fill_sprite(sprite) sprite.set_pixel(1, 2, 0) # key the sprite self.codebug.draw_sprite(0, 0, sprite) self.assertEqual(self.codebug.get_row(4), 0x00) self.assertEqual(self.codebug.get_row(3), 0x00) self.assertEqual(self.codebug.get_row(2), 0x14) self.assertEqual(self.codebug.get_row(1), 0x1C) self.assertEqual(self.codebug.get_row(0), 0x1C) self.codebug.draw_sprite(2, 2, sprite) self.assertEqual(self.codebug.get_row(4), 0x05) self.assertEqual(self.codebug.get_row(3), 0x07) self.assertEqual(self.codebug.get_row(2), 0x07) self.assertEqual(self.codebug.get_row(1), 0x00) self.assertEqual(self.codebug.get_row(0), 0x00) hello_str = StringSprite('Hello!') self.codebug.draw_sprite(0, 0, hello_str) self.assertEqual(self.codebug.get_row(4), 0x12) self.assertEqual(self.codebug.get_row(3), 0x12) self.assertEqual(self.codebug.get_row(2), 0x1E) self.assertEqual(self.codebug.get_row(1), 0x12) self.assertEqual(self.codebug.get_row(0), 0x12) self.codebug.draw_sprite(-7, 0, hello_str) self.assertEqual(self.codebug.get_row(4), 0x03) self.assertEqual(self.codebug.get_row(3), 0x11) self.assertEqual(self.codebug.get_row(2), 0x19) self.assertEqual(self.codebug.get_row(1), 0x01) self.assertEqual(self.codebug.get_row(0), 0x1B)