public void TestApplyGetSpellName()
        {
            var spellMock     = new Mock <ISpell>();
            var characterMock = new Mock <ICharacterInformation>();

            spellMock.Setup(s => s.Name).Returns("SpellName").Verifiable();

            var sut    = new SpellTemplate();
            var iblock = sut.Apply(spellMock.Object, characterMock.Object);

            spellMock.Verify(s => s.Name, Times.Once);
        }
        public void TestApplyZfW()
        {
            var spellMock     = new Mock <ISpell>();
            var characterMock = new Mock <ICharacterInformation>();

            spellMock.Setup(m => m.ZfW).Returns(15).Verifiable();

            ISpellTemplate sut   = new SpellTemplate();
            IBlock         block = sut.Apply(spellMock.Object, characterMock.Object);

            spellMock.Verify(m => m.ZfW, Times.AtLeastOnce);
            Assert.IsTrue(block.ContainsChild(r => r.Id == "ZfW"));
        }
        public void TestApplyGetEigenschaften()
        {
            var spellMock     = new Mock <ISpell>();
            var characterMock = new Mock <ICharacterInformation>();

            characterMock.Setup(c => c.GetEigenschaft(It.IsAny <Eigenschaft>())).Returns(0).Verifiable();

            var sut    = new SpellTemplate();
            var iblock = sut.Apply(spellMock.Object, characterMock.Object);

            foreach (Eigenschaft e in Enum.GetValues(typeof(Eigenschaft)))
            {
                characterMock.Verify(c => c.GetEigenschaft(e), Times.AtLeastOnce);
            }
        }
        public void TestApplyZauberdauer()
        {
            var spellMock     = new Mock <ISpell>();
            var characterMock = new Mock <ICharacterInformation>();

            spellMock.Setup(m => m.ZD).Returns(7).Verifiable();
            spellMock.Setup(m => m.ZDEinheit).Returns(Zeiteinheit.AR).Verifiable();

            ISpellTemplate sut   = new SpellTemplate();
            IBlock         block = sut.Apply(spellMock.Object, characterMock.Object);

            spellMock.Verify(m => m.ZD, Times.AtLeastOnce);
            spellMock.Verify(m => m.ZDEinheit, Times.Once);
            Assert.IsTrue(block.ContainsChild(r => r.Id == "ZD"));
        }
        public void TestApplyAllBlocksNamed()
        {
            var spellMock     = new Mock <ISpell>();
            var characterMock = new Mock <ICharacterInformation>();

            ISpellTemplate sut    = new SpellTemplate();
            var            iblock = sut.Apply(spellMock.Object, characterMock.Object);

            bool AssertBlockIdsRecursively(IBlock block)
            {
                return(!string.IsNullOrEmpty(block.Id) && block.Children.OfType <IBlock>().All(AssertBlockIdsRecursively));
            }

            Assert.IsTrue(AssertBlockIdsRecursively(iblock));
        }
        public void TestApplyReichweite()
        {
            var spellMock     = new Mock <ISpell>();
            var characterMock = new Mock <ICharacterInformation>();

            spellMock.Setup(m => m.Reichweite).Returns(7).Verifiable();
            spellMock.Setup(m => m.ReichweiteEinheit).Returns(DistanzEinheit.Schritt).Verifiable();

            ISpellTemplate sut   = new SpellTemplate();
            IBlock         block = sut.Apply(spellMock.Object, characterMock.Object);

            Assert.IsTrue(block.ContainsChild(r => r.Id == "Reichweite"));
            IBlock reichweiteBlock = block.FindChild <IBlock>(b => b.Id == "Reichweite");
            IText  label           = reichweiteBlock.Children.OfType <IText>().FirstOrDefault(r => r.Style == TextStyle.Label);

            Assert.NotNull(label);
            Assert.AreEqual("Reichweite:", label.Content);
            IText content = reichweiteBlock.Children.OfType <IText>().FirstOrDefault(r => r.Style != TextStyle.Label);

            Assert.NotNull(content);
            Assert.AreEqual("7 Schritt", content.Content);
        }
        public void TestApplyProbe()
        {
            var spellMock = new Mock <ISpell>();

            spellMock.Setup(s => s.Probe1).Returns(Eigenschaft.CH).Verifiable();
            spellMock.Setup(s => s.Probe2).Returns(Eigenschaft.KL).Verifiable();
            spellMock.Setup(s => s.Probe3).Returns(Eigenschaft.FF).Verifiable();
            var characterMock = new Mock <ICharacterInformation>();

            characterMock.Setup(c => c.GetEigenschaft(Eigenschaft.CH)).Returns(14).Verifiable();
            characterMock.Setup(c => c.GetEigenschaft(Eigenschaft.KL)).Returns(15).Verifiable();
            characterMock.Setup(c => c.GetEigenschaft(Eigenschaft.FF)).Returns(12).Verifiable();

            var sut    = new SpellTemplate();
            var iblock = sut.Apply(spellMock.Object, characterMock.Object);

            spellMock.Verify(s => s.Probe1, Times.AtLeastOnce);
            spellMock.Verify(s => s.Probe2, Times.AtLeastOnce);
            spellMock.Verify(s => s.Probe3, Times.AtLeastOnce);

            characterMock.Verify(c => c.GetEigenschaft(Eigenschaft.CH), Times.AtLeastOnce);
            characterMock.Verify(c => c.GetEigenschaft(Eigenschaft.KL), Times.AtLeastOnce);
            characterMock.Verify(c => c.GetEigenschaft(Eigenschaft.FF), Times.AtLeastOnce);
        }