Ejemplo n.º 1
0
    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
            )
Ejemplo n.º 2
0
 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
     )
Ejemplo n.º 3
0
 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]
         )
     )
Ejemplo n.º 4
0
    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
        )
Ejemplo n.º 5
0
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)