Exemplo n.º 1
0
        public void Register1_Returns_ConfiguredISpellLikeAbility()
        {
            // Arrange
            var mockSpell = new Mock <ISpell>();

            mockSpell.Setup(s => s.Level)
            .Returns(7);
            ISpell spell = mockSpell.Object;

            var mockAbilityScore = new Mock <IAbilityScore>();

            mockAbilityScore.Setup(ab => ab.GetBonus())
            .Returns(4);
            IAbilityScore abilityScore = mockAbilityScore.Object;

            var mockCharacter = new Mock <ICharacter>();

            mockCharacter.Setup(c => c.Level)
            .Returns(19);
            ICharacter character = mockCharacter.Object;

            SpellRegistrar spellReg = new SpellRegistrar(character);

            // Act
            ICastableSpell castable = spellReg.Register(spell, abilityScore);

            // Assert
            Assert.AreSame(spell, castable.Spell);
        }
Exemplo n.º 2
0
        public void Register1_NullIAbilityScore_Throws()
        {
            // Arrange
            var           spell        = Mock.Of <ISpell>();
            IAbilityScore abilityScore = null;

            var            character = Mock.Of <ICharacter>();
            SpellRegistrar spellReg  = new SpellRegistrar(character);

            // Act
            TestDelegate registerMethod = () => spellReg.Register(spell, abilityScore);

            // Assert
            Assert.Throws <ArgumentNullException>(registerMethod,
                                                  "Null arguments are not allowed.");
        }
Exemplo n.º 3
0
        public void Register2_NullISpell_Throws()
        {
            // Arrange
            Func <byte> casterLevel  = () => 10;
            ISpell      spell        = null;
            var         abilityScore = Mock.Of <IAbilityScore>();

            var            character = Mock.Of <ICharacter>();
            SpellRegistrar spellReg  = new SpellRegistrar(character);

            // Act
            TestDelegate registerMethod = () => spellReg.Register(spell, abilityScore, casterLevel);

            // Assert
            Assert.Throws <ArgumentNullException>(registerMethod,
                                                  "Null arguments are not allowed.");
        }
Exemplo n.º 4
0
        public void GetSpellLikeAbilities_Register1_RoundTrip()
        {
            // Arrange
            var spell        = Mock.Of <ISpell>();
            var abilityScore = Mock.Of <IAbilityScore>();

            var            character = Mock.Of <ICharacter>();
            SpellRegistrar spellReg  = new SpellRegistrar(character);

            ICastableSpell castable = spellReg.Register(spell, abilityScore);

            // Act
            var result = spellReg.GetSpells();

            // Assert
            Assert.That(result,
                        Has.Exactly(1).Matches <ICastableSpell>(sp => castable == sp));
        }
Exemplo n.º 5
0
        public void Register1_TriggersEvent()
        {
            // Arrange
            var spell        = Mock.Of <ISpell>();
            var abilityScore = Mock.Of <IAbilityScore>();

            var            character = Mock.Of <ICharacter>();
            SpellRegistrar spellReg  = new SpellRegistrar(character);

            bool wasCalled = false;             // This tracks whether the event was fired.

            spellReg.OnRegistered += (sender, e) => {
                wasCalled = true;
            };

            // Act
            spellReg.Register(spell, abilityScore);

            // Assert
            Assert.IsTrue(wasCalled);
        }