Exemplo n.º 1
0
    def test_adding_effect(self):
        """
        Test that poison effect can be added to a character
        """
        character = CharacterBuilder().build()
        poison = mock(Poison)

        character.add_effect(poison)

        assert_that(character, has_effect(poison))
Exemplo n.º 2
0
    def test_adding_effect(self):
        """
        Test that poison effect can be added to a character
        """
        character = CharacterBuilder().build()
        poison = mock(Poison)

        character.add_effect(poison)

        assert_that(character, has_effect(poison))
Exemplo n.º 3
0
class TestEffectHandling():
    """
    Test for adding effects
    """
    def __init__(self):
        """
        Default constructor
        """
        super().__init__()

        self.character = None

    def setup(self):
        """
        Setup test case
        """
        self.character = CharacterBuilder().build()

    def test_add_effect(self):
        """
        Adding a single effect should be possible
        """
        effect = EffectBuilder().build()

        self.character.add_effect(effect)

        assert_that(self.character, has_effect(effect))

    def test_add_multiple_effects(self):
        """
        It should be possible to add multiple effects of different type
        """
        effect_1 = (EffectBuilder()
                    .with_effect_name('spell')
                    .build())
        effect_2 = (EffectBuilder()
                    .with_effect_name('curse')
                    .build())

        self.character.add_effect(effect_1)
        self.character.add_effect(effect_2)

        assert_that(self.character, has_effect(effect_1))
        assert_that(self.character, has_effect(effect_2))

    def test_add_multiple_effects_of_same_type(self):
        """
        Adding multiple effects of same type should not be possible
        """
        effect_1 = (EffectBuilder()
                    .with_effect_name('spell')
                    .build())
        effect_2 = (EffectBuilder()
                    .with_effect_name('spell')
                    .build())

        self.character.add_effect(effect_1)
        self.character.add_effect(effect_2)

        assert_that(self.character, has_effect(effect_1))
        assert_that(self.character, is_not(has_effect(effect_2)))

    def test_add_multiple_effects_of_same_type_when_allowed(self):
        """
        In special cases, adding multiple effects of same type is allowed
        """
        effect_1 = (EffectBuilder()
                    .with_effect_name('spell')
                    .with_multiple_allowed()
                    .build())
        effect_2 = (EffectBuilder()
                    .with_effect_name('spell')
                    .with_multiple_allowed()
                    .build())

        self.character.add_effect(effect_1)
        self.character.add_effect(effect_2)

        assert_that(self.character, has_effect(effect_1))
        assert_that(self.character, has_effect(effect_2))

    def test_worn_boots_effects(self):
        """
        Boots' effects are reported as user's effects
        """
        effect = (EffectBuilder()
                  .build())

        item = (ItemBuilder()
                .with_effect(effect)
                .build())

        self.character.inventory.boots = item

        assert_that(self.character, has_effect(effect))