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)
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) )