示例#1
0
 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)
示例#2
0
 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)
示例#3
0
 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')
示例#4
0
 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))
示例#5
0
 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)
示例#6
0
 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))
示例#7
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)
示例#8
0
 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)
示例#9
0
 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)
示例#10
0
 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)
示例#11
0
 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)
示例#12
0
 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)
示例#13
0
 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)
示例#14
0
 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')
示例#15
0
 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')
示例#16
0
 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)
示例#17
0
 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)
示例#18
0
 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)
示例#19
0
 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)
示例#20
0
 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)
示例#21
0
 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)
示例#22
0
 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)
示例#23
0
 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)
示例#24
0
 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)
示例#25
0
 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)
示例#26
0
 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)
示例#27
0
 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)
示例#28
0
 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)
示例#29
0
 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)
示例#30
0
 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)