示例#1
0
class CharacterTest(unittest.TestCase):
    def setUp(self):
        self._clock = Clock()
        self.locale_id = 1000
        self.book_stat = BookStat()
        self.sut_smithy_weapon = SmithWeapon()
        self.sut_smithy_armor = SmithArmor()
        self.sut_brains = Brains()

        self.sut_faction = Faction(
            experience=0,
            name='Red',
            faction_id='1000',
            clock=self._clock,
            smithy_weapon=self.sut_smithy_weapon,
            smithy_armor=self.sut_smithy_armor,
            brains=self.sut_brains,
        )

        self.sut = self.sut_faction.create_vpc(name='sut')

        arena = HexMap()
        arena.arena_ground = 'plains'
        arena.arena_height = 10
        arena.create_arena(radius=5)

        self.sut_dm = DungeonMaster(
            clock=Clock(),
            dungeon=arena,
            locale_id=self.locale_id,
        )

        self.sut_dm.add_char(
            member=self.sut,
            faction=self.sut_faction,
            edge='sw',
        )

    def test_starts_as_level_0(self):
        expected = 0
        self.assertEqual(expected, self.sut.get_level())

    def test_character_gains_a_level_level(self):
        expected = 1
        self.sut.give_experience(1001)
        self.assertEqual(expected, self.sut.get_level())

    def test_character_gains_a_level_test_skill_points_current(self):
        expected = 1
        self.sut.give_experience(1001)
        self.assertEqual(expected, self.sut.skillable.skill_points_current)

    def test_character_gains_a_level_test_skill_points_total(self):
        expected = 1
        self.sut.give_experience(1001)
        self.assertEqual(expected, self.sut.skillable.skill_points_total)

    def test_starts_with_no_experience(self):
        expected = 0
        self.assertEqual(expected, self.sut.get_experience())

    def test_character_gains_experience(self):
        starting = self.sut.get_experience()
        self.sut.give_experience(1001)
        ending = self.sut.get_experience()
        self.assertGreater(ending, starting)

    def test_gets_correct_id(self):
        expected_1 = 1
        expected_2 = 2
        sut_1 = Character(char_id=expected_1)
        sut_2 = Character(char_id=expected_2)
        self.assertEqual(expected_1, sut_1.char_id)
        self.assertEqual(expected_2, sut_2.char_id)

    def test_gets_name(self):
        expected = 'sut'
        self.assertEqual(expected, self.sut.name)

    def test_character_knows_the_worlds_time(self):
        test_time = 0
        self.assertEqual(test_time, self.sut.faction.get_world_time())
        self._clock.increment_time()

    def test_character_still_knows_the_worlds_time(self):
        test_time = 1
        self._clock.increment_time()
        self.assertEqual(test_time, self.sut.faction.get_world_time())

    def test_character_knows_the_locale_time(self):
        test_locale_id = 1
        test_time = 0
        self._clock.add_locale(locale_id=test_locale_id)
        self.sut.locale_id = test_locale_id
        self.assertEqual(test_time, self.sut.dm.get_time())

    def test_character_still_knows_the_locale_time(self):
        test_locale_id = 1
        test_time = 1
        self.sut.dm.increment_time()
        self.assertEqual(test_time, self.sut.dm.get_time())

    def test_character_has_stats(self):
        base_stat = self.book_stat.get_base_stat()
        stat_list = self.book_stat.get_list()

        for stat in stat_list:
            self.assertEqual(base_stat, self.sut.get_stat(stat))

    def test_character_gets_a_weapon(self):
        weapon_smith = SmithWeapon()
        new_weapon = weapon_smith.create()
        weapon_id = self.sut.rack_weapon.give_weapon(new_weapon)
        self.sut.sets_weapon.equip_weapon_by_id(weapon_id=weapon_id)
        equipped_weapon = self.sut.sets_weapon.get_equipped_weapon()
        self.assertEqual(equipped_weapon, new_weapon)

    def test_character_gets_a_weapon_and_automatically_equips_it(self):
        self.sut.sets_weapon.weapon_sets[1]['main'] = None
        self.sut.sets_weapon.weapon_sets[1]['off'] = None
        self.sut.sets_weapon.weapon_sets[1]['both'] = None
        weapon_smith = SmithWeapon()
        new_weapon = weapon_smith.create()
        self.sut.rack_weapon.give_weapon(new_weapon)
        equipped_weapon = self.sut.sets_weapon.get_equipped_weapon()
        self.assertEqual(equipped_weapon, new_weapon)

    def test_character_gets_an_armor_and_automatically_equips_it(self):
        armor_smith = SmithArmor()
        for piece in armor_smith.armor_pieces:
            self.sut.rack_armor.remove_armor(piece)
        new_armor = armor_smith.create()
        piece = new_armor.piece
        self.sut.rack_armor.give_armor(new_armor)
        equipped_armor = self.sut.rack_armor.get_equipped_armor(piece)
        self.assertEqual(equipped_armor, new_armor)
示例#2
0
class ClockTest(unittest.TestCase):
    def setUp(self):
        self.sut = Clock()

    def test_initial_world_time(self):
        test_time = 0
        self.assertEqual(test_time, self.sut.get_world_time())

    def test_world_time_moves_forward(self):
        test_time =  1
        self.sut.increment_time()
        self.assertEqual(test_time, self.sut.get_world_time())

    def test_initial_default_locale_time(self):
        test_time = 0
        test_locale_id = 1
        self.sut.add_locale()
        self.assertEqual(
            test_time,
            self.sut.get_locale_time(locale_id=test_locale_id)
        )

    def test_initial_default_time_moves_forward(self):
        test_time = 1
        test_locale_id = 1
        self.sut.add_locale()
        self.sut.increment_locale_time(test_locale_id)
        self.assertEqual(
            test_time,
            self.sut.get_locale_time(locale_id=test_locale_id)
        )

    def test_set_locale_time(self):
        test_time = 0
        test_locale_id = 1000
        self.sut.add_locale(locale_id=test_locale_id)
        self.assertEqual(
            test_time,
            self.sut.get_locale_time(locale_id=test_locale_id)
        )

    def test_set_time_moves_forward(self):
        test_time = 1
        test_locale_id = 1000
        self.sut.add_locale(locale_id=test_locale_id)
        self.sut.increment_locale_time(test_locale_id)
        self.assertEqual(
            test_time,
            self.sut.get_locale_time(locale_id=test_locale_id)
        )

    def test_set_locale_time_with_time(self):
        test_time = 5000
        test_locale_id = 1000
        self.sut.add_locale(
            locale_id=test_locale_id,
            local_time=test_time
        )
        self.assertEqual(
            test_time,
            self.sut.get_locale_time(locale_id=test_locale_id)
        )

    def test_set_time_with_time_moves_forward(self):
        test_time_initial = 5000
        test_time = test_time_initial + 1
        test_locale_id = 1000
        self.sut.add_locale(
            locale_id=test_locale_id,
            local_time=test_time_initial
        )
        self.sut.increment_locale_time(test_locale_id)
        self.assertEqual(
            test_time,
            self.sut.get_locale_time(locale_id=test_locale_id)
        )