コード例 #1
0
ファイル: test_events.py プロジェクト: k-polyakov/tilegamelib
class TestTextEnteringListener:
    def setup(self):
        self.egen = EventGenerator()
        self.updated = 0
        self.result = ""

    def text_finished(self, text):
        """Callback for listener."""
        self.result = text

    def key_pressed(self, text):
        """Counts how many times the method was called"""
        self.updated += 1

    def test_text_entering(self):
        """Generate some key events and check whether they arrive."""
        elis = TextEnteringListener(self.key_pressed, self.text_finished)
        self.egen.add_listener(elis)
        self.egen.add_scripted_keys('acbd')
        self.egen.add_scripted_keys(chr(K_RETURN))
        self.egen.add_scripted_event(QUIT_EVENT)
        self.egen.event_loop()
        assert self.result == "ACBD"
        assert self.updated == 4

    def test_return_missing(self):
        """Generate some key events and check whether they arrive."""
        elis = TextEnteringListener(self.key_pressed, self.text_finished)
        self.egen.add_listener(elis)
        self.egen.add_scripted_keys('acbd')
        self.egen.add_scripted_event(QUIT_EVENT)
        self.egen.event_loop()
        assert self.result == ""

    def test_delete(self):
        """Generate some key events and check whether they arrive."""
        elis = TextEnteringListener(self.key_pressed, self.text_finished)
        self.egen.add_listener(elis)
        self.egen.add_scripted_keys('acbd')
        self.egen.add_scripted_keys(chr(K_DELETE))
        self.egen.add_scripted_keys('efg')
        self.egen.add_scripted_keys(chr(K_RETURN))
        self.egen.add_scripted_event(QUIT_EVENT)
        self.egen.event_loop()
        assert self.result == "ACBEFG"
        assert self.updated == 8

    def test_no_upper(self):
        """Generate some key events and check whether they arrive."""
        elis = TextEnteringListener(self.key_pressed, self.text_finished,
                                    False)
        self.egen.add_listener(elis)
        self.egen.add_scripted_keys('acbd')
        self.egen.add_scripted_keys(chr(K_RETURN))
        self.egen.add_scripted_event(QUIT_EVENT)
        self.egen.event_loop()
        assert self.result == "acbd"
        assert self.updated == 4
コード例 #2
0
class TextEnteringListenerTests(TestCase):
    def setUp(self):
        self.egen = EventGenerator()
        self.updated = 0
        self.result = ""

    def text_finished(self, text):
        """Callback for listener."""
        self.result = text

    def key_pressed(self, text):
        """Counts how many times the method was called"""
        self.updated += 1

    def test_text_entering(self):
        """Generate some key events and check whether they arrive."""
        elis = TextEnteringListener(self.key_pressed, self.text_finished)
        self.egen.add_listener(elis)
        self.egen.add_scripted_keys('acbd')
        self.egen.add_scripted_keys(chr(K_RETURN))
        self.egen.add_scripted_event(QUIT_EVENT)
        self.egen.event_loop()
        self.assertEqual(self.result, "ACBD")
        self.assertEqual(self.updated, 4)

    def test_return_missing(self):
        """Generate some key events and check whether they arrive."""
        elis = TextEnteringListener(self.key_pressed, self.text_finished)
        self.egen.add_listener(elis)
        self.egen.add_scripted_keys('acbd')
        self.egen.add_scripted_event(QUIT_EVENT)
        self.egen.event_loop()
        self.assertEqual(self.result, "")
        
    def test_delete(self):
        """Generate some key events and check whether they arrive."""
        elis = TextEnteringListener(self.key_pressed, self.text_finished)
        self.egen.add_listener(elis)
        self.egen.add_scripted_keys('acbd')
        self.egen.add_scripted_keys(chr(K_DELETE))
        self.egen.add_scripted_keys('efg')
        self.egen.add_scripted_keys(chr(K_RETURN))
        self.egen.add_scripted_event(QUIT_EVENT)
        self.egen.event_loop()
        self.assertEqual(self.result, "ACBEFG")
        self.assertEqual(self.updated, 8)

    def test_no_upper(self):
        """Generate some key events and check whether they arrive."""
        elis = TextEnteringListener(self.key_pressed, self.text_finished, False)
        self.egen.add_listener(elis)
        self.egen.add_scripted_keys('acbd')
        self.egen.add_scripted_keys(chr(K_RETURN))
        self.egen.add_scripted_event(QUIT_EVENT)
        self.egen.event_loop()
        self.assertEqual(self.result, "acbd")
        self.assertEqual(self.updated, 4)
コード例 #3
0
ファイル: test_events.py プロジェクト: k-polyakov/tilegamelib
class TestAnyKeyListener:
    def callback(self):
        self.keypressed = True

    def test_anykey_negative(self):
        self.keypressed = False
        self.egen = EventGenerator()
        self.elis = AnyKeyListener(self.callback)
        self.egen.add_listener(self.elis)
        self.egen.add_scripted_event(QUIT_EVENT)
        self.egen.event_loop()
        assert not self.keypressed

    def test_anykey_positive(self):
        self.keypressed = False
        self.egen = EventGenerator()
        self.elis = AnyKeyListener(self.callback)
        self.egen.add_listener(self.elis)
        self.egen.add_scripted_keys('a')
        self.egen.add_scripted_event(QUIT_EVENT)
        self.egen.event_loop()
        assert self.keypressed
コード例 #4
0
class SlidingPuzzle:

    def __init__(self):
        self.screen = Screen(Vector(350, 350), 'data/background.png')
        frame = Frame(self.screen, Rect(64, 64, 320, 320))
        tile_factory = TileFactory('data/tiles.conf')
        self.tm = TiledMap(frame, tile_factory)
        self.gap = Vector(4, 4)
        self.tm.set_map(PUZZLEMAP)
        self.tm.draw()
        self.events = None
        pygame.display.update()

    def move(self, direction):
        start = self.gap - direction
        if self.tm.at(start) == '#':
            return
        move = MapMove(self.tm, start, direction, 2)
        wait_for_move(move, self.screen, self.tm.draw, 0.01)
        self.gap = start
        self.check_complete()

    def get_same(self, row):
        counter = Counter(row)
        return counter.most_common(1)[0][1]

    def check_complete(self):
        s = self.tm.get_map()
        rows = s.split('\n')
        same = [self.get_same(row) for row in rows[1:5]]
        if sum(same) == 15:
            print("\nCongratulations!\n")
            self.events.exit_signalled()

    def run(self):
        self.events = EventGenerator()
        self.events.add_listener(FigureMoveListener(self.move))
        self.events.event_loop()
コード例 #5
0
class AnyKeyListenerTests(TestCase):

    def callback(self):
        self.keypressed = True

    def test_anykey_negative(self):
        self.keypressed = False
        self.egen = EventGenerator()
        self.elis = AnyKeyListener(self.callback)
        self.egen.add_listener(self.elis)
        self.egen.add_scripted_event(QUIT_EVENT)
        self.egen.event_loop()
        self.assertFalse(self.keypressed)

    def test_anykey_positive(self):
        self.keypressed = False
        self.egen = EventGenerator()
        self.elis = AnyKeyListener(self.callback)
        self.egen.add_listener(self.elis)
        self.egen.add_scripted_keys('a')
        self.egen.add_scripted_event(QUIT_EVENT)
        self.egen.event_loop()
        self.assertTrue(self.keypressed)
コード例 #6
0
ファイル: test_events.py プロジェクト: krother/tilegamelib
class TestEvent:

    def hel(self):
        self.result += "Hel"

    def lo(self):
        self.result += "lo"

    def world(self):
        self.result += "World"

    def space(self):
        self.result += " "

    def setup(self):
        self.egen = EventGenerator()
        keymap = {
            pygame.K_a: self.hel,
            pygame.K_b: self.lo,
            pygame.K_c: self.world,
            pygame.K_d: self.space
        }
        self.elis = EventListener(keymap)
        self.egen.add_listener(self.elis)
        self.updated = 0
        self.result = ""

    def update(self):
        """Counts how many times the method was called"""
        # callback function called from EventGenerator()
        self.updated += 1

    def test_event_generator(self):
        """Generate some key events and check whether they arrive."""
        self.egen.add_scripted_keys('acb')
        self.egen.add_scripted_event(QUIT_EVENT)
        self.egen.event_loop()
        assert self.result == "HelWorldlo"

    def test_callback(self):
        """Pass scripted keys as a string."""
        self.egen.add_callback(self)
        self.egen.add_scripted_keys('abdc')
        self.egen.add_scripted_event(QUIT_EVENT)
        self.egen.event_loop()
        assert self.result == "Hello World"
        assert self.updated == 5

    def test_scripted_repeat(self):
        """Pass scripted keys as a string."""
        self.egen.add_callback(self)
        self.egen.add_scripted_keys('aaaa')
        self.egen.add_scripted_event(QUIT_EVENT)
        self.egen.event_loop()
        assert self.updated == 5
コード例 #7
0
ファイル: test_events.py プロジェクト: k-polyakov/tilegamelib
class TestEvent:
    def hel(self):
        self.result += "Hel"

    def lo(self):
        self.result += "lo"

    def world(self):
        self.result += "World"

    def space(self):
        self.result += " "

    def setup(self):
        self.egen = EventGenerator()
        keymap = {
            pygame.K_a: self.hel,
            pygame.K_b: self.lo,
            pygame.K_c: self.world,
            pygame.K_d: self.space
        }
        self.elis = EventListener(keymap)
        self.egen.add_listener(self.elis)
        self.updated = 0
        self.result = ""

    def update(self):
        """Counts how many times the method was called"""
        # callback function called from EventGenerator()
        self.updated += 1

    def test_event_generator(self):
        """Generate some key events and check whether they arrive."""
        self.egen.add_scripted_keys('acb')
        self.egen.add_scripted_event(QUIT_EVENT)
        self.egen.event_loop()
        assert self.result == "HelWorldlo"

    def test_callback(self):
        """Pass scripted keys as a string."""
        self.egen.add_callback(self)
        self.egen.add_scripted_keys('abdc')
        self.egen.add_scripted_event(QUIT_EVENT)
        self.egen.event_loop()
        assert self.result == "Hello World"
        assert self.updated == 5

    def test_scripted_repeat(self):
        """Pass scripted keys as a string."""
        self.egen.add_callback(self)
        self.egen.add_scripted_keys('aaaa')
        self.egen.add_scripted_event(QUIT_EVENT)
        self.egen.event_loop()
        assert self.updated == 5
コード例 #8
0
class EventTests(TestCase):

    def hel(self): self.result += "Hel"
    def lo(self): self.result += "lo"
    def world(self): self.result += "World"
    def space(self): self.result += " "

    def setUp(self):
        self.egen = EventGenerator()
        keymap = {
            'a': self.hel,
            'b': self.lo,
            'c': self.world,
            'd': self.space
            }
        self.elis = EventListener(keymap)
        self.egen.add_listener(self.elis)
        self.updated = 0
        self.result = ""

    def update(self):
        """Counts how many times the method was called"""
        # callback function called from EventGenerator()        
        self.updated += 1

    def test_event_generator(self):
        """Generate some key events and check whether they arrive."""
        self.egen.add_scripted_keys('acb')
        self.egen.add_scripted_event(QUIT_EVENT)
        self.egen.event_loop()
        self.assertEqual(self.result, "HelWorldlo")

    def test_callback(self):
        """Pass scripted keys as a string."""
        self.egen.add_callback(self)
        self.egen.add_scripted_keys('abdc')
        self.egen.add_scripted_event(QUIT_EVENT)
        self.egen.event_loop()
        self.assertEqual(self.result, "Hello World")
        self.assertEqual(self.updated, 5)

    def test_scripted_repeat(self):
        """Pass scripted keys as a string."""
        self.egen.add_callback(self)
        self.egen.add_scripted_keys('aaaa')
        self.egen.add_scripted_event(QUIT_EVENT)
        self.egen.event_loop()
        self.assertEqual(self.updated, 5)