class TestHudLayer(unittest.TestCase):
    
    @mock.patch('gui.play.MainScreen')
    @mock.patch('engine.rule.game.Game')
    @mock.patch('gui.play.FlowLayoutLayer')
    @mock.patch('cocos.cocosnode.Camera')
    @mock.patch('cocos.layer.base_layers.director')
    @mock.patch('gui.play.director')
    def setUp(self, director, base_layers_director, camera, flow_layer, game, main_screen):
        director.get_window_size.return_value = (640, 480)
        base_layers_director.get_window_size.return_value = (640, 480)
        self.hud = HudLayer(game, main_screen)
        
    def test_draw_ship_system_info_will_add_single_image_if_unknown(self):
        self.hud.draw_ship_system_info('fnord', { 'fnord': 1 })
        self.hud.sub_layer.add_image.assert_called_with('ship_stats/fnord.png', scale = 0.9)

    def test_draw_ship_system_info_will_add_numbered_image_if_known_numbered(self):
        self.hud.draw_ship_system_info('computer', { 'computer': 4 })
        self.hud.sub_layer.add_image.assert_called_with('ship_stats/computer_4.png', scale = 0.9)

    def test_draw_ship_system_info_will_add_several_numbered_image_if_known_numbered_and_more_than_max(self):
        self.hud.draw_ship_system_info('computer', { 'computer': 7 })
        self.hud.sub_layer.add_image.assert_has_calls([ call('ship_stats/computer_5.png', scale = 0.9),
                                                      call('ship_stats/computer_2.png', scale = 0.9) ])
 def setUp(self, director, base_layers_director, camera, flow_layer, game, main_screen):
     director.get_window_size.return_value = (640, 480)
     base_layers_director.get_window_size.return_value = (640, 480)
     self.hud = HudLayer(game, main_screen)