def test_draw_borders_woffset(self, draw_rect, draw_line): config = GameConfig(window_size=(500, 600)) game_screen = GameScreen(config, GameModel()) window = pygame.display.set_mode(config.get_config_val("window_size")) border_prop = BorderProperties() draw_offset = (100, 0) qg = QuadraticGrid(10, 10, draw_offset=draw_offset, border_properties=border_prop) qg.draw(window, game_screen) self.assertTrue(draw_rect.called) block_dim = 50 # Python sorcery self.assertEqual(block_dim, qg._QuadraticGrid__compute_block_dimension(config, "width")) self.assertEqual(block_dim, qg._QuadraticGrid__compute_block_dimension(config, "height")) window_dimensions = config.get_config_val("window_size") # The horizontal borders for i in range(10): y = i * block_dim + draw_offset[0] draw_line.assert_any_call( window, border_prop.color, (0, y), (window_dimensions[0], y), border_prop.thickness ) # The vertical borders for i in range(10): x = i * block_dim draw_line.assert_any_call( window, border_prop.color, (x, draw_offset[0]), (x, window_dimensions[1]), border_prop.thickness )
def test_debug_provisions(self): config_debug = GameConfig(debug_mode=True) screen_debug = GameScreen(config_debug, GameModel()) window_size_debug = config_debug.get_config_val("window_size") self.assertEqual( (window_size_debug[0], window_size_debug[1] + GameScreen.DEBUG_SPACE_PROVISIONS), screen_debug.screen_size )
def test_draw(self, draw_rect): config = GameConfig(window_size=(400, 400)) game_screen = GameScreen(config, GameModel()) window = pygame.display.set_mode(config.get_config_val("window_size")) btn = Button("Test", Colors.NIGHT_BLUE, (100, 88)) btn.draw(window, game_screen) draw_rect.assert_any_call( window, btn.color, ( btn.position[1], btn.position[0], btn.max_size[0], btn.max_size[1] ) )
def test_draw_borders_wparams(self, draw_rect, draw_line): config = GameConfig(window_size=(400, 400)) game_screen = GameScreen(config, GameModel()) window = pygame.display.set_mode(config.get_config_val("window_size")) border_prop = BorderProperties() qg = QuadraticGrid(2, 2, border_properties=border_prop) qg.draw(window, game_screen) self.assertTrue(draw_rect.called) # The vertical borders draw_line.assert_any_call( window, border_prop.color, (0, 0), (0, 400), border_prop.thickness ) draw_line.assert_any_call( window, border_prop.color, (200, 0), (200, 400), border_prop.thickness ) draw_line.assert_any_call( window, border_prop.color, (400, 0), (400, 400), border_prop.thickness ) # The horizontal borders draw_line.assert_any_call( window, border_prop.color, (0, 0), (400, 0), border_prop.thickness ) draw_line.assert_any_call( window, border_prop.color, (0, 200), (400, 200), border_prop.thickness ) draw_line.assert_any_call( window, border_prop.color, (0, 400), (400, 400), border_prop.thickness )
class GameConfigTest(unittest.TestCase): def setUp(self): self.game_config = GameConfig() self.watcher = ConfigSubscriberMock() self.game_config.subscribe(self.watcher) self.titled_config = GameConfig(window_title="Your Majesty") def test_window_size_setter(self): self.assertFalse(self.watcher.notified) self.game_config.set_config_val("window_size", (100, 100)) self.assertTrue(self.watcher.notified) def test_clock_rate_setter(self): self.assertFalse(self.watcher.notified) self.game_config.set_config_val("clock_rate", 100) self.assertTrue(self.watcher.notified) def test_custom_key_setter(self): self.assertFalse(self.watcher.notified) self.game_config.set_config_val("quick brown foxkcd", 1) self.assertTrue(self.watcher.notified) def test_load_from_file_expected(self): expected_json_newbies = """{ "song": "Lost Stars", "artist": "Adam Levine", "player": "Spotify" }""" preload_title = self.titled_config.get_config_val("window_title") self.assertTrue(preload_title is not None) self.titled_config.load_from_file(StringIO(expected_json_newbies)) postload_title = self.titled_config.get_config_val("window_title") self.assertEqual(preload_title, postload_title) json_confs = json.loads(expected_json_newbies) for key in json_confs.keys(): self.assertEqual(self.titled_config.get_config_val(key), json_confs[key]) def test_load_from_file_unwanted(self): unwanted_json = """[ {"song": "Lost Stars"}, {"artist": "Adam Levine"}, {"player": "Spotify"} ]""" preload_title = self.titled_config.get_config_val("window_title") self.assertTrue(preload_title is not None) with self.assertRaises(AttributeError): self.titled_config.load_from_file(StringIO(unwanted_json)) postload_title = self.titled_config.get_config_val("window_title") self.assertEquals(preload_title, postload_title) def test_load_from_file_replacing(self): replacing_json = '{"window_title": "Your Royal Highness"}' preload_title = self.titled_config.get_config_val("window_title") self.assertTrue(preload_title is not None) self.titled_config.load_from_file(StringIO(replacing_json)) postload_title = self.titled_config.get_config_val("window_title") self.assertEqual(postload_title, "Your Royal Highness") self.assertNotEqual(preload_title, postload_title)