[pypy-svn] r58159 - in pypy/dist/pypy/lang/gameboy: . test

cami at codespeak.net cami at codespeak.net
Sun Sep 14 19:34:53 CEST 2008


Author: cami
Date: Sun Sep 14 19:34:51 2008
New Revision: 58159

Added:
   pypy/dist/pypy/lang/gameboy/test/test_video_sprite.py
Modified:
   pypy/dist/pypy/lang/gameboy/video.py
Log:
added sprite tests


Added: pypy/dist/pypy/lang/gameboy/test/test_video_sprite.py
==============================================================================
--- (empty file)
+++ pypy/dist/pypy/lang/gameboy/test/test_video_sprite.py	Sun Sep 14 19:34:51 2008
@@ -0,0 +1,86 @@
+from pypy.lang.gameboy import constants
+from pypy.lang.gameboy.video import Sprite
+from pypy.lang.gameboy.video import Video
+from pypy.lang.gameboy.test.test_video import get_video
+import py
+
+
+
+def get_sprite():
+    return Sprite(get_video())
+
+
+# Sprite Class test ------------------------------------------------------------
+
+def test_standard_values(sprite=None):
+    if sprite==None:
+        sprite = get_sprite()
+    #assert sprite.get_tile_number() == 0
+    assert sprite.x == 0
+    assert sprite.y == 0
+    assert sprite.object_behind_background == False
+    assert sprite.x_flipped == False
+    assert sprite.y_flipped == False
+    assert sprite.palette_number == 0
+    
+    
+def test_reset():
+    sprite = get_sprite()
+    
+   # sprite.set_tile_number(0x12)
+   # assert sprite.get_tile_number() == 0x12
+    
+   # sprite.set_tile_number(0xFFF)
+   # assert sprite.get_tile_number() == 0xFF
+    
+    sprite.x = 10
+    assert sprite.x == 10
+    
+    sprite.y = 11
+    assert sprite.y == 11
+    
+    sprite.object_behind_background = True
+    assert sprite.object_behind_background == True
+    
+    sprite.x_flipped = True
+    assert sprite.x_flipped == True
+    
+    sprite.y_flipped = True
+    assert sprite.y_flipped == True
+    
+    sprite.use_object_pallette_1 = True
+    assert sprite.use_object_pallette_1 == True
+    
+    sprite.reset()
+    test_standard_values(sprite)
+
+def test_size():
+    sprite = get_sprite()
+    sprite.big_size = False
+    assert sprite.get_width() == 8
+    assert sprite.get_height() == 8
+    
+    sprite.big_size = True
+    assert sprite.get_width() == 8
+    assert sprite.get_height() == 16
+
+    
+def test_intersects_line_normal_size():
+    sprite = get_sprite()
+    sprite.big_size = False
+    sprite.y = 1
+    line_intersection_test(sprite, 8)
+    
+def test_intersects_line_big_size():
+    sprite = get_sprite()
+    sprite.big_size = True
+    sprite.y = 1
+    line_intersection_test(sprite, 16)
+    
+def line_intersection_test(sprite, height):
+    assert not sprite.intersects_line(0)
+    for i in range(height):
+        assert sprite.intersects_line(i+1)
+    assert not sprite.intersects_line(height+2)
+    
+# test sprite in video ---------------------------------------------------------

Modified: pypy/dist/pypy/lang/gameboy/video.py
==============================================================================
--- pypy/dist/pypy/lang/gameboy/video.py	(original)
+++ pypy/dist/pypy/lang/gameboy/video.py	Sun Sep 14 19:34:51 2008
@@ -468,8 +468,6 @@
         Bit6   Y flip          (0=Normal, 1=Vertically mirrored)
         Bit5   X flip          (0=Normal, 1=Horizontally mirrored)
         Bit4   Palette number  **Non CGB Mode Only** (0=OBP0, 1=OBP1)
-        Bit3   Tile VRAM-Bank  **CGB Mode Only**     (0=Bank 0, 1=Bank 1)
-        Bit2-0 Palette number  **CGB Mode Only**     (OBP0-7)
         """
         self.object_behind_background   = bool(data  & (1 << 7))
         self.x_flipped                  = bool(data  & (1 << 6))
@@ -487,6 +485,9 @@
         
     def get_tile_number(self):
         return self.tile.id
+    
+    def set_tile_number(self, tile_number):
+        self.tile = self.video.tiles[tile_number]
         
     def get_width(self):
         return 8
@@ -501,7 +502,7 @@
         return False
     
     def intersects_line(self, line):
-        return False
+        return line >= self.y and line <= self.y + self.get_height()
     
     def draw(self):
         pass
@@ -628,8 +629,9 @@
     
     def create_tile_maps(self):
         # create the maxumal possible sprites
+        self.tile_map_0 = [None] * 32 * 32
         self.tile_map_1 = [None] * 32 * 32
-        self.tile_map_2 = [None] * 32 * 32
+        self.tile_maps = [self.tile_map_0, self.tile_map_1]
     
     def update_tile(self, address, data):
         # XXX to implement



More information about the Pypy-commit mailing list