public void PassiveMagicSkillTest()
        {
            // Check the basics
            Assert.AreEqual(0, passiveMagicSkill.Id);
            Assert.AreEqual("A +10 Buff to the user's strength.", passiveMagicSkill.Description);
            Assert.AreEqual("ShadowStrength (Cost: 10, Body +10 for 10 sec)", passiveMagicSkill.ToString());

            // Check if the combination matches
            Assert.IsFalse(passiveMagicSkill.Match(new int[] { }));
            Assert.IsFalse(passiveMagicSkill.Match(new int[] { coin.Id }));
            Assert.IsFalse(passiveMagicSkill.Match(new int[] { herb.Id, coin.Id }));
            Assert.IsFalse(passiveMagicSkill.Match(new int[] { coin.Id, herb.Id }));
            Assert.IsTrue(passiveMagicSkill.Match(new int[] { herb.Id }));

            // Player triggers a Skill that is not learned yet
            bool triggered = player.TriggerMagicSkill(passiveMagicSkill.Id);

            Assert.IsFalse(triggered);

            // Player learns the Skill and triggers it
            player.LearnMagicSkill(passiveMagicSkill.Id);
            triggered = player.TriggerMagicSkill(passiveMagicSkill.Id);
            Assert.IsTrue(triggered);

            // Check the effect on the modified attribute
            Assert.AreEqual(10, player.Stats.Body.Value);

            // Player triggers it again right away, which is not possible due to cooldown time
            triggered = player.TriggerMagicSkill(passiveMagicSkill.Id);
            Assert.IsFalse(triggered);

            // Enemy uses the same passive skill
            enemy.LearnMagicSkill(passiveMagicSkill.Id);
            triggered = enemy.TriggerMagicSkill(passiveMagicSkill.Id);
            Assert.IsTrue(triggered);

            // Advance in Time and trigger again
            GameTime.time = 5;
            triggered     = player.TriggerMagicSkill(passiveMagicSkill.Id);
            Assert.IsTrue(triggered);

            // Take the use costs into account
            GameTime.time = 10;
            triggered     = player.TriggerMagicSkill(passiveMagicSkill.Id);
            Assert.IsFalse(triggered);
        }
        public void OffensiveMagicSkillTest()
        {
            // Check the basics
            Assert.AreEqual(1, offensiveMagicSkill.Id);

            // Check if the combination matches
            Assert.IsFalse(offensiveMagicSkill.Match(new int[] { }));
            Assert.IsFalse(offensiveMagicSkill.Match(new int[] { coin.Id }));
            Assert.IsFalse(offensiveMagicSkill.Match(new int[] { herb.Id, coin.Id }));
            Assert.IsFalse(offensiveMagicSkill.Match(new int[] { coin.Id, herb.Id }));
            Assert.IsTrue(offensiveMagicSkill.Match(new int[] { herb.Id }));

            // Player triggers a Skill that is not learned yet
            bool triggered = player.TriggerMagicSkill(offensiveMagicSkill.Id);

            Assert.IsFalse(triggered);

            // Player learns the Skill and triggers it
            player.LearnMagicSkill(offensiveMagicSkill.Id);
            triggered = player.TriggerMagicSkill(offensiveMagicSkill.Id);
            Assert.IsTrue(triggered);

            // Player triggers it again right away, which is not possible due to cooldown time
            triggered = player.TriggerMagicSkill(offensiveMagicSkill.Id);
            Assert.IsFalse(triggered);

            // Enemy uses the same passive skill
            enemy.LearnMagicSkill(offensiveMagicSkill.Id);
            triggered = enemy.TriggerMagicSkill(offensiveMagicSkill.Id);
            Assert.IsTrue(triggered);

            // Advance in Time and trigger again
            GameTime.time += 5;
            triggered      = player.TriggerMagicSkill(offensiveMagicSkill.Id);
            Assert.IsTrue(triggered);
        }