def test_get_unit_status_distribution(self):
        dungeon_model = self._get_dungeon_model()
        with LogCapture():
            logger = logging.getLogger()
            dungeon = Dungeon(dungeon=dungeon_model,
                              announcer={},
                              log=logger)

        """ living hostile player """
        unit_generator = UnitGenerator()
        living_player = unit_generator.generate(is_player=True,
                                                combat_status="hostile")
        dungeon.add_unit(living_player)

        """ dead friendly NPC """
        dead_friendly_unit = unit_generator.generate(combat_status="friendly")
        dead_friendly_unit.kill()
        dungeon.add_unit(dead_friendly_unit)

        """ living friendly NPC """
        living_npc = unit_generator.generate(combat_status="friendly")
        dungeon.add_unit(living_npc)

        """ living hostile NPC """
        hostile_living_npc = unit_generator.generate(combat_status="hostile")
        dungeon.add_unit(hostile_living_npc)

        # TODO: add undead here
        actual = dungeon.get_unit_status_distribution()

        expected = {
            "players": {
                "living": 1,
                "dead": 0,
                "undead": 0
            },
            "npc": {
                "hostile": {
                    "living": 1,
                    "dead": 0,
                    "undead": 0
                },
                "friendly": {
                    "living": 1,
                    "dead": 1,
                    "undead": 0
                }
            }
        }

        self.assertEqual(expected, actual)