Пример #1
0
 def test_invalid(self, monkeypatch):
     c = Character()
     monkeypatch.setattr("builtins.input", lambda x: "123")
     with pytest.raises(ValueError) as excinfo:
         c.char_race()
     exception_msg = excinfo.value.args[0]
     assert exception_msg == "Invalid selection"
Пример #2
0
 def test_random_roll(self):
     c = Character()
     c.set_social_class()
     print(c.social_class)
     assert c.social_class in ["Lower-Lower Class", "Middle-Lower Class", "Upper-Lower Class", "Lower-Middle Class",
                               "Middle-Middle Class", "Upper-Middle Class", "Lower-Upper Class",
                               "Middle-Upper Class", "Upper-Upper Class"]
Пример #3
0
 def test_abilities_2d6(self):
     c = Character()
     c.ability_rolls(3)
     assert 3 <= c.strength <= 18
     assert 3 <= c.intelligence <= 18
     assert 3 <= c.wisdom <= 18
     assert 3 <= c.dexterity <= 18
     assert 3 <= c.constitution <= 18
     assert 3 <= c.charisma <= 18
Пример #4
0
    def test_human(self, monkeypatch):
        c = Character()
        monkeypatch.setattr("builtins.input", lambda x: "6")
        c.char_race()
        assert c.race == "Human"

        approved_classes = c.class_by_race()
        assert approved_classes == ['Bard', 'Jester', 'Cavalier', 'Paladin', 'Cleric', 'Druid', 'Mystic', 'Fighter',
                                    'Barbarian', 'Ranger', 'Mage', 'Illusionist', 'Savant', 'Thief', 'Acrobat',
                                    'Mountebank']
Пример #5
0
    def test_dark_elf(self, monkeypatch):
        c = Character()
        monkeypatch.setattr("builtins.input", lambda x: "2")
        c.char_race()
        assert c.race == "Elf"

        monkeypatch.setattr("builtins.input", lambda x: "6")
        c.dm_underdark = True
        c.char_subrace(2)
        assert c.subrace == "Dark Elf"

        approved_classes = c.class_by_race()
        assert approved_classes == ['Bard', 'Cavalier', 'Cleric', 'Fighter', 'Ranger', 'Mage', 'Savant', 'Thief',
                                    'Acrobat', 'Mountebank']

        approved_multiclasses = c.multiclass_by_race()
        assert approved_multiclasses == ["cleric/fighter",
                                         "cleric/fighter/mage",
                                         "cleric/fighter/savant",
                                         "cleric/mage",
                                         "cleric/savant",
                                         "cleric/thief (inc. acrobat)",
                                         "fighter/mage",
                                         "fighter/mage (inc. savant)/thief (inc. acrobat)",
                                         "fighter/mage/mountebank",
                                         "fighter/mountebank",
                                         "fighter/savant",
                                         "fighter/savant/mountebank",
                                         "fighter/savant/thief (inc. acrobat)",
                                         "fighter/thief (inc. acrobat)",
                                         "mage/mountebank",
                                         "mage/thief (inc. acrobat)"]
Пример #6
0
    def test_dwarf(self, monkeypatch):
        c = Character()
        monkeypatch.setattr("builtins.input", lambda x: "1")
        c.char_race()
        assert c.race == "Dwarf"

        approved_classes = c.multiclass_by_race()
        assert approved_classes == ["cleric/fighter",
                                    "cleric/thief (inc. acrobat)",
                                    "fighter/mountebank",
                                    "fighter/thief (inc. acrobat)"]
Пример #7
0
    def test_name_empty(self, monkeypatch):
        """Dynamically allow argument to be passed to input() function.

        Since char_name() uses input() to capture a character's name from the user, the monkeypatch calls the built-in
        function input() and uses a lambda function to pass an argument to input(). This argument is then passed to
        char_name() as if the user provided it.
        """
        c = Character()
        monkeypatch.setattr("builtins.input", lambda x: "Sir Hector")
        c.char_name()
        assert c.name == "Sir Hector"
Пример #8
0
    def test_wood_elf(self, monkeypatch):
        c = Character()
        monkeypatch.setattr("builtins.input", lambda x: "2")
        c.char_race()
        assert c.race == "Elf"

        monkeypatch.setattr("builtins.input", lambda x: "5")
        c.char_subrace(2)
        assert c.subrace == "Wood Elf"

        approved_classes = c.class_by_race()
        assert approved_classes == ['Bard', 'Cleric', 'Druid', 'Mystic', 'Fighter', 'Ranger', 'Mage', 'Thief', 'Acrobat',
                                    'Mountebank']

        approved_multiclasses = c.multiclass_by_race()
        assert approved_multiclasses == ["cleric/fighter",
                                         "cleric/fighter/mage",
                                         "cleric/ranger",
                                         "cleric/ranger/mage",
                                         "cleric/thief (inc. acrobat)",
                                         "druid/ranger",
                                         "fighter/mage",
                                         "fighter/mage/mountebank",
                                         "fighter/mage/thief (inc. acrobat)",
                                         "fighter/mountebank",
                                         "fighter/thief (inc. acrobat)",
                                         "mage/mountebank",
                                         "mage/thief (inc. acrobat)",
                                         "mystic/fighter",
                                         "mystic/fighter/mage",
                                         "mystic/mage",
                                         "mystic/ranger",
                                         "mystic/ranger/mage",
                                         "mystic/thief (inc. acrobat)"]
Пример #9
0
    def test_grey_dwarf(self, monkeypatch):
        c = Character()
        monkeypatch.setattr("builtins.input", lambda x: "1")
        c.char_race()
        assert c.race == "Dwarf"

        monkeypatch.setattr("builtins.input", lambda x: "3")
        c.dm_underdark = True
        c.char_subrace(1)
        assert c.subrace == "Grey Dwarf"

        approved_classes = c.class_by_race()
        assert approved_classes == ['Cleric', 'Fighter', 'Thief', 'Acrobat', 'Mountebank']
Пример #10
0
    def test_wild_elf(self, monkeypatch):
        c = Character()
        monkeypatch.setattr("builtins.input", lambda x: "2")
        c.char_race()
        assert c.race == "Elf"

        monkeypatch.setattr("builtins.input", lambda x: "4")
        c.char_subrace(2)
        assert c.subrace == "Wild Elf"

        approved_classes = c.class_by_race()
        assert approved_classes == ['Druid', 'Mystic', 'Fighter', 'Thief', 'Acrobat']

        approved_multiclasses = c.multiclass_by_race()
        assert approved_multiclasses == ["fighter/thief (inc. acrobat)"]
Пример #11
0
 def test_empty_char(self):
     """Confirm all variables are properly created and initialized"""
     c = Character()
     assert c.strength == 0.0
     assert c.dexterity == 0
     assert c.intelligence == 0
     assert c.wisdom == 0
     assert c.constitution == 0
     assert c.charisma == 0
     assert c.ppd_save == 0
     assert c.pp_save == 0
     assert c.bw_save == 0
     assert c.rsw_save == 0
     assert c.spell_save == 0
     assert c.name == ''
     assert c.gender == ''
     assert c.race == ''
     assert c.subrace == ''
     assert c.social_class == ''
     assert c.alignment == ''
     assert c.age == 0
     assert c.height == 0.0
     assert c.weight == 0
     assert c.special_abilities == []
     assert c.experience == 0
     assert c.level == 0
     assert c.char_class == {"": 0}
     assert c.languages == []
     assert c.armour_class == 0
     assert c.hit_points == 0
     assert c.non_lethal_wounds == 0
     assert c.armour_worn == ''
     assert c.init_mod == 0
     assert c.surprise_mod == 0
     assert c.attack_column == ''
     assert c.weapons == {"": 0}
     assert c.skills == {"": 0}
     assert c.class_abilities == {"": 0}
     assert c.supplies == {"": 0}
     assert c.equipment == {"": 0}
     assert c.encumbrance == 0
     assert c.base_move == 0
     assert c.move_rate == 0
     assert c.magic_items == {"": 0}
     assert c.deeds_titles == ''
     assert c.spells_memorized == [""]
     assert c.spell_components == {"": 0}
     assert c.max_spells_memorized == {"": 0}
Пример #12
0
    def test_half_elf(self, monkeypatch):
        """Half-elves use the same multi-classes as their elven parent's race"""
        c = Character()
        monkeypatch.setattr("builtins.input", lambda x: "2")
        c.char_race()
        assert c.race == "Elf"

        monkeypatch.setattr("builtins.input", lambda x: "2")
        c.char_subrace(2)
        assert c.subrace == "Half-Elf"

        approved_classes = c.class_by_race()
        assert approved_classes == ['Bard', 'Cavalier', 'Cleric', 'Druid', 'Mystic', 'Fighter', 'Ranger', 'Mage',
                                    'Savant', 'Thief', 'Mountebank']
Пример #13
0
    def test_deep_gnome(self, monkeypatch):
        c = Character()
        monkeypatch.setattr("builtins.input", lambda x: "3")
        c.char_race()
        assert c.race == "Gnome"

        monkeypatch.setattr("builtins.input", lambda x: "3")
        c.dm_underdark = True
        c.char_subrace(3)
        assert c.subrace == "Deep Gnome"

        approved_classes = c.class_by_race()
        assert approved_classes == ['Bard', 'Cleric', 'Fighter', 'Illusionist', 'Thief', 'Acrobat', 'Mountebank']

        approved_multiclasses = c.multiclass_by_race()
        assert approved_multiclasses == ["cleric/fighter",
                                         "cleric/thief (inc. acrobat)",
                                         "fighter/illusionist",
                                         "fighter/mountebank",
                                         "fighter/thief (inc. acrobat)",
                                         "illusionist/mountebank",
                                         "illusionist/thief (inc. acrobat)",
                                         "jester/fighter"]
Пример #14
0
    def test_high_elf(self, monkeypatch):
        c = Character()
        monkeypatch.setattr("builtins.input", lambda x: "2")
        c.char_race()
        assert c.race == "Elf"

        monkeypatch.setattr("builtins.input", lambda x: "3")
        c.char_subrace(2)
        assert c.subrace == "High Elf"

        approved_classes = c.class_by_race()
        assert approved_classes == ['Bard', 'Cavalier', 'Cleric', 'Druid', 'Mystic', 'Fighter', 'Ranger', 'Mage',
                                    'Savant', 'Thief', 'Mountebank']

        approved_multiclasses = c.multiclass_by_race()
        assert approved_multiclasses == ["cleric/fighter",
                                         "cleric/fighter/mage",
                                         "cleric/fighter/savant",
                                         "cleric/mage",
                                         "cleric/ranger",
                                         "cleric/ranger/mage",
                                         "cleric/ranger/savant",
                                         "cleric/savant",
                                         "cleric/thief (inc. acrobat)",
                                         "druid/ranger",
                                         "fighter/mage",
                                         "fighter/mage (inc. savant)/thief (inc. acrobat or mountebank)",
                                         "fighter/mage/mountebank",
                                         "fighter/mountebank",
                                         "fighter/savant",
                                         "fighter/savant/mountebank",
                                         "fighter/savant/thief",
                                         "fighter/thief (inc. acrobat)",
                                         "mage (inc. savant)/thief (inc. acrobat or mountebank)",
                                         "mystic/fighter",
                                         "mystic/fighter/mage",
                                         "mystic/mage",
                                         "mystic/ranger",
                                         "mystic/savant",
                                         "mystic/thief (inc. acrobat)",
                                         "ranger/mage",
                                         "ranger/savant"]
Пример #15
0
    def test_forest_gnome(self, monkeypatch):
        c = Character()
        monkeypatch.setattr("builtins.input", lambda x: "3")
        c.char_race()
        assert c.race == "Gnome"

        monkeypatch.setattr("builtins.input", lambda x: "1")
        c.char_subrace(3)
        assert c.subrace == "Forest Gnome"

        approved_classes = c.class_by_race()
        assert approved_classes == ['Bard', 'Jester', 'Druid', 'Fighter', 'Savant', 'Thief', 'Acrobat', 'Mountebank']

        approved_multiclasses = c.multiclass_by_race()
        assert approved_multiclasses == ["druid/fighter",
                                         "druid/thief (inc. acrobat)",
                                         "fighter/savant",
                                         "fighter/thief (inc. acrobat)",
                                         "illusionist/mountebank",
                                         "jester/fighter",
                                         "savant/thief",
                                         "savant/mountebank"]
Пример #16
0
    def test_half_orc(self, monkeypatch):
        c = Character()
        monkeypatch.setattr("builtins.input", lambda x: "5")
        c.char_race()
        assert c.race == "Half-Orc"

        approved_classes = c.class_by_race()
        assert approved_classes == ['Cleric', 'Fighter', 'Barbarian', 'Thief', 'Acrobat', 'Mountebank']

        approved_multiclasses = c.multiclass_by_race()
        assert approved_multiclasses == ["cleric/fighter",
                                         "cleric/mountebank",
                                         "cleric/thief (inc. acrobat)",
                                         "fighter/mountebank",
                                         "fighter/thief (inc. acrobat)"]
Пример #17
0
    def test_halfling(self, monkeypatch):
        c = Character()
        monkeypatch.setattr("builtins.input", lambda x: "4")
        c.char_race()
        assert c.race == "Halfling"

        approved_classes = c.class_by_race()
        assert approved_classes == ['Bard', 'Jester', 'Cleric', 'Druid', 'Mystic', 'Fighter', 'Thief', 'Acrobat',
                                    'Mountebank']

        approved_multiclasses = c.multiclass_by_race()
        assert approved_multiclasses == ["cleric/fighter",
                                         "cleric/thief (inc. acrobat)",
                                         "druid/fighter",
                                         "druid/thief (inc. acrobat)",
                                         "fighter/mountebank",
                                         "fighter/thief (inc. acrobat)",
                                         "jester/thief (inc. acrobat)",
                                         "mystic/fighter"]
Пример #18
0
 def test_elf(self, monkeypatch):
     c = Character()
     monkeypatch.setattr("builtins.input", lambda x: "2")
     c.char_race()
     assert c.race == "Elf"
Пример #19
0
 def test_female_word(self, monkeypatch):
     c = Character()
     monkeypatch.setattr("builtins.input", lambda x: "female")
     c.char_gender()
     assert c.gender == "Female"
Пример #20
0
 def test_chaotic_evil(self, monkeypatch):
     c = Character()
     monkeypatch.setattr("builtins.input", lambda x: "9")
     c.set_alignment()
     assert c.alignment == "Chaotic Evil"
Пример #21
0
 def test_neutral_evil(self, monkeypatch):
     c = Character()
     monkeypatch.setattr("builtins.input", lambda x: "6")
     c.set_alignment()
     assert c.alignment == "Neutral Evil"
Пример #22
0
 def test_lawful_evil(self, monkeypatch):
     c = Character()
     monkeypatch.setattr("builtins.input", lambda x: "3")
     c.set_alignment()
     assert c.alignment == "Lawful Evil"
Пример #23
0
 def test_invalid_number(self, monkeypatch):
     c = Character()
     monkeypatch.setattr("builtins.input", lambda x: "11")
     with pytest.raises(KeyError):
         c.set_alignment()
Пример #24
0
 def test_invalid_input(self, monkeypatch):
     c = Character()
     monkeypatch.setattr("builtins.input", lambda x: "Lawful Good")
     with pytest.raises(ValueError):
         c.set_alignment()
Пример #25
0
 def test_gnome(self, monkeypatch):
     c = Character()
     monkeypatch.setattr("builtins.input", lambda x: "3")
     c.char_race()
     assert c.race == "Gnome"
Пример #26
0
 def test_name_set(self):
     c = Character()
     c.char_name("Sir Hector")
     assert c.name == "Sir Hector"
Пример #27
0
 def test_male_letter(self, monkeypatch):
     c = Character()
     monkeypatch.setattr("builtins.input", lambda x: "m")
     c.char_gender()
     assert c.gender == "Male"
Пример #28
0
 def test_argument(self):
     c = Character()
     c.set_social_class("Middle-Middle Class")
     assert c.social_class == "Middle-Middle Class"