def test_tick(self): self.assertTrue(self.game._side_bar.text_area._text) self.game.handle_player_movement( test_utils.MockEvent(typ=KEYDOWN, key=K_UP)) self.assertTrue(self.game.handle_player_movement( test_utils.MockEvent(typ=play_area._TICK))) self.assertFalse(self.game._side_bar.text_area._text)
def test_handle_player_collision(self): self.play_area.handle_player_movement( test_utils.MockEvent(typ=KEYDOWN, key=K_UP)) self._set_speed_for_collision() self.assertIsInstance( self.play_area.handle_player_movement( test_utils.MockEvent(typ=play_area._TICK)), str)
def test_send_overflow(self): self.chest.send(test_utils.MockEvent(KEYDOWN, key=K_r, unicode='r')) self.chest.send(test_utils.MockEvent(KEYDOWN, key=K_r, unicode='r')) self.chest.send(test_utils.MockEvent(KEYDOWN, key=K_r, unicode='r')) self.assertIs( self.chest.send(test_utils.MockEvent(KEYDOWN, key=K_r, unicode='r')), False) self.assertEqual(self.chest.text, 'RRR')
def test_collide_invisible_wall_twice(self): self._move_player(2400, 800) self.play_area._scroll_speed = (-800, 0) self.play_area.handle_player_movement( test_utils.MockEvent(typ=play_area._TICK)) self.play_area._scroll_speed = (-800, 0) self.play_area.handle_player_movement( test_utils.MockEvent(typ=play_area._TICK))
def test_tick(self): self.play_area.handle_player_movement( test_utils.MockEvent(typ=KEYDOWN, key=K_LEFT)) speed_x = self.play_area._scroll_speed[0] self.assertIs( self.play_area.handle_player_movement( test_utils.MockEvent(typ=play_area._TICK)), True) self.assertGreater(self.play_area._scroll_speed[0], speed_x)
def test_current_square(self): self.assertEqual(self.game._side_bar.mini_map._current_square, (0, 0)) self.game.handle_player_movement( test_utils.MockEvent(typ=KEYDOWN, key=K_LEFT)) self.assertEqual(self.game._side_bar.mini_map._current_square, (0, 0)) self.game._play_area._scroll_speed = (800, 0) self.game.handle_player_movement( test_utils.MockEvent(typ=play_area._TICK)) self.assertEqual(self.game._side_bar.mini_map._current_square, (-1, 0))
def test_win(self): self.game.active = True self.game._images.keypad.text = '9710' self.game._keypad_test.start() self.game._keypad_test._question = room._Question(('1', '+', '1', '3')) self.game.handle_keypad_test(test_utils.MockEvent(KEYDOWN, unicode='3')) self.game.handle_keypad_test( test_utils.MockEvent(room.KeyPadTest._TICK)) self.assertFalse(self.game.active)
def test_seen_walls(self): self.assertFalse(self.game._side_bar.mini_map._seen_walls) self.game.handle_player_movement( test_utils.MockEvent(typ=KEYDOWN, key=K_RIGHT)) self.assertFalse(self.game._side_bar.mini_map._seen_walls) self.game._play_area._scroll_speed = (-400, 0) self.game.handle_player_movement( test_utils.MockEvent(typ=play_area._TICK)) wall, = self.game._side_bar.mini_map._seen_walls self.assertEqual(wall.SQUARE, (0, 0)) self.assertEqual(wall.SIDE, walls.Side.RIGHT)
def test_player_collision(self): self.game.handle_player_movement( test_utils.MockEvent(typ=KEYDOWN, key=K_UP)) # Since the player is standing with his head overlapping with the house, # this speed should result in a collision. self.game._play_area._scroll_speed = ( 0, self.game._play_area.player.RECT.h) self.assertFalse(self.game._side_bar.text_area._text) self.game.handle_player_movement( test_utils.MockEvent(typ=play_area._TICK)) self.assertTrue(self.game._side_bar.text_area._text)
def test_max_text_length(self): self.game.view = room.View.FLOOR num_updates_1 = self.num_updates for _ in range(3): self.game.handle_chest_combo( test_utils.MockEvent(KEYDOWN, key=K_r, unicode='r')) num_updates_2 = self.num_updates consumed = self.game.handle_chest_combo( test_utils.MockEvent(KEYDOWN, key=K_r, unicode='r')) self.assertTrue(consumed) self.assertEqual(self.game._images.chest.text, 'RRR') self.assertEqual(num_updates_2 - num_updates_1, 3) self.assertEqual(self.num_updates, num_updates_2)
def test_run(self): self.state.screen.fullscreen = False with unittest.mock.patch.object( pygame.display, 'set_mode', self.mock_set_mode): with unittest.mock.patch.object(pygame.event, 'get') as mock_get: mock_get.return_value = [ test_utils.MockEvent(KEYDOWN, key=K_F11), test_utils.MockEvent(KEYDOWN, key=K_F11), test_utils.MockEvent(KEYDOWN, key=K_F11), test_utils.MockEvent(KEYDOWN, key=K_c, mod=KMOD_CTRL), ] self.state.run() self.assertTrue(self.state.screen.fullscreen) self.assertEqual(self.state.drawn, 4) self.assertFalse(self.state.active)
def test_skip_update(self): consumed = self.game.handle_reset( test_utils.MockEvent(KEYDOWN, key=K_ESCAPE)) assert consumed # make sure we actually reset the view self.assertEqual(self.game.view, room.View.DEFAULT) # We were already on the default view, so no need to redraw it. self.assertEqual(self.num_updates, 1)
def test_start_player_craving(self): self._move_player(2400, 800) self.play_area._scroll_speed = (-800, 0) self.assertIn('pre_crave', self.play_area._state) self.play_area.handle_player_movement( test_utils.MockEvent(typ=play_area._TICK)) self.assertNotIn('pre_crave', self.play_area._state)
def test_update_text(self): self.game.view = room.View.FRONT_KEYPAD consumed = self.game.handle_keypad_input( test_utils.MockEvent(KEYDOWN, key=K_1, unicode='1')) self.assertTrue(consumed) self.assertEqual(self.game._images.keypad.text, '1') self.assertEqual(self.game._images.door.text, '1')
def test_update_text(self): self.game.view = room.View.FLOOR consumed = self.game.handle_chest_combo( test_utils.MockEvent(KEYDOWN, key=K_r, unicode='r')) self.assertTrue(consumed) self.assertEqual(self.game._images.chest.text, 'R') self.assertEqual(self.game._images.mini_chest.text, 'R')
def test_click(self): self.game.view = room.View.RIGHT_WALL self.game.handle_click( test_utils.MockEvent(MOUSEBUTTONDOWN, button=1, pos=(room.RECT.w / 2, room.RECT.h / 2 - 1))) self.assertFalse(self.game._images.light_switch.on) self.assertFalse(self.game._images.door.light_switch_on)
def test_turn_minimap_red(self): self.assertNotEqual( self.game._side_bar.mini_map._square_color, color.RED) for obj in self.game._play_area._objects.values(): obj.move((-1600, -3200)) self.game.handle_player_movement( test_utils.MockEvent(typ=KEYDOWN, key=K_DOWN)) self.assertEqual(self.game._side_bar.mini_map._square_color, color.RED)
def test_unfullscreen(self): self.state.screen.fullscreen = True with unittest.mock.patch.object( pygame.display, 'set_mode', self.mock_set_mode): self.state.handle_fullscreen( test_utils.MockEvent(KEYDOWN, key=K_F11)) self.assertFalse(self.state.screen.fullscreen) self.assertEqual(self.state.drawn, 2)
def test_stop_after_err(self): self.keypad_test.start() self._tick() # send a wrong answer self.keypad_test.send(test_utils.MockEvent(KEYDOWN, unicode='88')) self._tick() self.assertEqual(self.keypad_test._keypad.text, 'ERR') self._tick() self.assertFalse(self.keypad_test._active)
def test_item_multiples(self): self.game._side_bar.add_item('peach') self.game._side_bar.add_item('peach') self.game.handle_click( test_utils.MockEvent( typ=MOUSEBUTTONDOWN, button=1, pos=self.game._side_bar.item_cell1.RECT.move((576, 0)).center)) self.assertIsNotNone(self.game._side_bar.item_cell0.item) self.assertIsNone(self.game._side_bar.item_cell1.item)
def test_click_key(self): for obj in self.game._play_area._objects.values(): obj.move((950, -950)) self.game._side_bar.text_area.show(None) self.assertTrue(self.game.handle_click( test_utils.MockEvent(typ=MOUSEBUTTONDOWN, button=1, pos=self.game._play_area.key.RECT.center))) self.assertNotIn('key', self.game._play_area._objects) self.assertEqual(self.game._side_bar.item_cell0.item, 'key') self.assertTrue(self.game._side_bar.text_area._text)
def test_fail_text_multiword_object(self): del self.game._play_area._objects['fishing_rod'] self.game._side_bar.add_item('fishing_rod') self.game._side_bar.text_area.show(None) self.game.handle_click( test_utils.MockEvent( typ=MOUSEBUTTONDOWN, button=1, pos=self.game._side_bar.item_cell0.RECT.move((576, 0)).center)) text = ' '.join( block.value for block in self.game._side_bar.text_area._text) self.assertIn('fishing rod', text)
def test_next_question(self): self.keypad_test.start() self._tick() question = self.keypad_test._question self.keypad_test.send( test_utils.MockEvent(KEYDOWN, unicode=question.value[-1])) self._tick() self.assertEqual(self.keypad_test._keypad.text, 'OK') self._tick() self.assertIsNotNone(self.keypad_test._question) self.assertIsNot(self.keypad_test._question, question)
def test_fail_use_key(self): del self.game._play_area._objects['key'] self.game._side_bar.add_item('key') self.game._side_bar.text_area.show(None) self.assertTrue(self.game.handle_click( test_utils.MockEvent( typ=MOUSEBUTTONDOWN, button=1, pos=self.game._side_bar.item_cell0.RECT.move((576, 0)).center))) self.assertIn('gate', self.game._play_area._objects) self.assertIsNotNone(self.game._side_bar.item_cell0.item) self.assertTrue(self.game._side_bar.text_area._text)
def test_inventory_overflow(self): for obj in self.game._play_area._objects.values(): obj.move((800, 0)) self.game._side_bar.text_area.show(None) for _ in range(9): self.game.handle_click( test_utils.MockEvent( typ=MOUSEBUTTONDOWN, button=1, pos=self.game._play_area.tree_peach.RECT.center)) text = ' '.join( block.value for block in self.game._side_bar.text_area._text) self.assertEqual(text, self.game._OBTAIN_FAIL_TEXT)
def test_test(self): self.game.view = room.View.FRONT_KEYPAD # test is inactive consumed = self.game.handle_keypad_test( test_utils.MockEvent(MOUSEBUTTONDOWN)) self.assertFalse(consumed) self.assertFalse(self.game._images.keypad.opened) self.assertFalse(self.game._keypad_test._active) # test is active after keypad is opened self.game._images.door.text = self.game._images.keypad.text = '9710' consumed = self.game.handle_keypad_test( test_utils.MockEvent(MOUSEBUTTONDOWN)) self.assertTrue(consumed) self.assertTrue(self.game._images.keypad.opened) self.assertTrue(self.game._keypad_test._active) # clicking away stops the test and resets the keypad self.game.handle_click( test_utils.MockEvent(MOUSEBUTTONDOWN, button=1, pos=(0, 0))) self.assertFalse(self.game._images.keypad.opened) self.assertFalse(self.game._keypad_test._active) self.assertFalse(self.game._images.keypad.text) self.assertFalse(self.game._images.door.text)
def test_start_player_movement(self): object_x = self.play_area.house.RECT.x hidden_object_x = ( self.play_area._hidden_objects['open_gate_left'].RECT.x) self.assertIs( self.play_area.handle_player_movement( test_utils.MockEvent(typ=KEYDOWN, key=K_LEFT)), True) speed_x, speed_y = self.play_area._scroll_speed self.assertGreater(speed_x, 0) self.assertFalse(speed_y) self.assertEqual(self.play_area.house.RECT.x, object_x + speed_x) self.assertEqual( self.play_area._hidden_objects['open_gate_left'].RECT.x, hidden_object_x + speed_x)
def test_stop_player_movement(self): self.assertIs( self.play_area.handle_player_movement( test_utils.MockEvent(typ=KEYUP, key=K_LEFT)), True) self.assertIsNone(self.play_area._scroll_speed)
def test_cleanup(self): self.assertFalse(self.state.clean) with unittest.mock.patch.object(pygame.event, 'get') as mock_get: mock_get.return_value = [test_utils.MockEvent(QUIT)] self.state.run() self.assertTrue(self.state.clean)
def test_quit_q(self): self.assertTrue(self.state.active) self.state.handle_quit( test_utils.MockEvent(KEYDOWN, key=K_c, mod=KMOD_CTRL)) self.assertFalse(self.state.active)