Esempio n. 1
0
        public void ResolveStack_StackIsEmptiedAndBothPlayersPass_PhaseIsChanged()
        {
            bool mustResolve       = false;
            bool mustResolveAswell = false;

            Player[] players      = generatePlayersAndStartGame(2);
            Phases   currentPhase = this.TurnManager.CurrentPhase;

            MockCard card1 = new MockCard();

            card1.AddSpellAction(_ => mustResolveAswell = true);
            MockCard card2 = new MockCard();

            card2.AddSpellAction(_ => mustResolve = true);

            this.ActionManager.Queue(new CastCardCommand(players[0], card1, mana));
            this.ActionManager.Queue(new CastCardCommand(players[0], card2, mana));
            this.ActionManager.Queue(new PlayerPassPriorityCommand(players[0]));
            this.ActionManager.Queue(new PlayerPassPriorityCommand(players[1]));
            this.ActionManager.Queue(new PlayerPassPriorityCommand(players[0]));
            this.ActionManager.Queue(new PlayerPassPriorityCommand(players[1]));
            this.Engine.Update();

            Phases actualPhase = this.TurnManager.CurrentPhase;

            Assert.AreNotEqual(currentPhase, actualPhase);
        }
Esempio n. 2
0
        public void TestTarget_NoTargetCondition_TargetAccepted()
        {
            int firstTarget = 0;
            MockCard card = new MockCard();
            MockUnit someUnit = new MockUnit();

            bool result = card.TestTarget(firstTarget, someUnit);

            Assert.IsTrue(result);
        }
Esempio n. 3
0
        public void TestTarget_NoTargetCondition_TargetAccepted()
        {
            int      firstTarget = 0;
            MockCard card        = new MockCard();
            MockUnit someUnit    = new MockUnit();

            bool result = card.TestTarget(firstTarget, someUnit);

            Assert.IsTrue(result);
        }
Esempio n. 4
0
        public void TestTarget_ValidTarget_TargetAccepted()
        {
            int firstTarget = 0;
            MockCard card = new MockCard();
            MockUnit someUnit = new MockUnit();

            card.SetTargetCondition(firstTarget,unit => unit is UnitEntity);
            bool result = card.TestTarget(firstTarget, someUnit);

            Assert.IsTrue(result);
        }
Esempio n. 5
0
        public void TestTarget_ValidTarget_TargetAccepted()
        {
            int      firstTarget = 0;
            MockCard card        = new MockCard();
            MockUnit someUnit    = new MockUnit();

            card.SetTargetCondition(firstTarget, unit => unit is UnitEntity);
            bool result = card.TestTarget(firstTarget, someUnit);

            Assert.IsTrue(result);
        }
Esempio n. 6
0
        public void CastCard_PlayerChoosesValidCrystals_CrystalsDischargedAndSpellIsCast()
        {
            this.FailTestOnEngineCrash();
            bool spellResolved = false;

            AbilityManager am = new AbilityManager();

            this.Engine.AddActor(am);
            TurnManager tm = new TurnManager();

            this.Engine.AddActor(tm);

            ManaStorage m = new ManaStorage();

            Player[] players = generatePlayersAndStartGame(new Player[] { new Player(null, null, m, null), new Player() });
            this.Engine.Update();
            m.AddCrystal(Mana.Divine);
            m.AddCrystal(Mana.Divine);
            m.AddCrystal(Mana.Arcane);
            m.chargeAll();

            List <Mana> manaCost = new List <Mana>();

            manaCost.Add(Mana.Divine);
            manaCost.Add(Mana.Arcane);

            MockCard card = new MockCard();

            card.ManaCost = manaCost;
            card.AddSpellAction(_ => spellResolved = true);



            Player owner = players[0];


            List <Mana> selectedMana = new List <Mana>();

            selectedMana.Add(Mana.Divine);
            selectedMana.Add(Mana.Arcane);

            this.ActionManager.Queue(new CastCardCommand(owner, card, selectedMana));
            this.Engine.Update();
            EventManager.Raise(new PlayerPassedPriorityEvent(players[0]));
            EventManager.Raise(new PlayerPassedPriorityEvent(players[1]));
            this.Engine.Update();

            Assert.IsTrue(m.IsCharged(Mana.Divine, 0));
            Assert.IsFalse(m.IsCharged(Mana.Divine, 1));
            Assert.IsFalse(m.IsCharged(Mana.Arcane, 0));

            Assert.IsTrue(spellResolved);
        }
Esempio n. 7
0
        public void QueueSpell_PlayerCastCard_SpellFromCardQueuedToStack()
        {
            MockCard card          = new MockCard();
            Player   castingPlayer = new Player();

            this.ActionManager.Queue(new CastCardCommand(castingPlayer, card, mana));
            this.Engine.Update();

            IEnumerable <Ability> unresolved = AbilityManager.Unresolved;
            int expectedCount = 1;
            int actualCount   = unresolved.Count();

            Assert.AreEqual(expectedCount, actualCount);
        }
Esempio n. 8
0
        public void ConstructSpell_SimpleSpell_CorrectlyConstructed()
        {
            bool spellResolved = false;
            MockCard card = new MockCard();
            card.SetTargetCondition(0, _ => true);

            card.AddSpellAction(_ => spellResolved = true);

            Spell spell = card.ConstructSpell();
            spell.SetTarget(0, new object[]{null});

            this.ActionManager.Queue(spell);
            this.ActionManager.ExecuteActions();

            Assert.IsTrue(spellResolved);
        }
Esempio n. 9
0
        public void CastCard_PlayerChoosesValidCrystals_CrystalsDischargedAndSpellIsCast()
        {
            this.FailTestOnEngineCrash();
            bool spellResolved = false;

            AbilityManager am = new AbilityManager();
            this.Engine.AddActor(am);
            TurnManager tm = new TurnManager();
            this.Engine.AddActor(tm);

            ManaStorage m = new ManaStorage();
            Player[] players = generatePlayersAndStartGame(new Player[]{new Player(null,null,m,null),new Player()});
            this.Engine.Update();
            m.AddCrystal(Mana.Divine);
            m.AddCrystal(Mana.Divine);
            m.AddCrystal(Mana.Arcane);
            m.chargeAll();

            List<Mana> manaCost = new List<Mana>();
            manaCost.Add(Mana.Divine);
            manaCost.Add(Mana.Arcane);

            MockCard card = new MockCard();
            card.ManaCost = manaCost;
            card.AddSpellAction(_ => spellResolved = true);

            Player owner = players[0];

            List<Mana> selectedMana = new List<Mana>();
            selectedMana.Add(Mana.Divine);
            selectedMana.Add(Mana.Arcane);

            this.ActionManager.Queue(new CastCardCommand(owner, card, selectedMana));
            this.Engine.Update();
            EventManager.Raise(new PlayerPassedPriorityEvent(players[0]));
            EventManager.Raise(new PlayerPassedPriorityEvent(players[1]));
            this.Engine.Update();

            Assert.IsTrue(m.IsCharged(Mana.Divine, 0));
            Assert.IsFalse(m.IsCharged(Mana.Divine, 1));
            Assert.IsFalse(m.IsCharged(Mana.Arcane, 0));

            Assert.IsTrue(spellResolved);
        }
        public void ShuffleIntegrityTest()
        {
            var cardType   = new MockCardType();
            var collection = new MockCardCollection();
            var card1      = new MockCard(cardType, collection);
            var card2      = new MockCard(cardType, collection);
            var card3      = new MockCard(cardType, collection);

            collection.Shuffle();

            var cards = new List <MockCard>(new[] { card1, card2, card3 });

            foreach (MockCard card in collection.Cards)
            {
                Assert.Contains(card, cards);
                cards.Remove(card);
            }
            Assert.Empty(cards);
        }
Esempio n. 11
0
        public void QueueSpell_FirstPlayersTurnOtherPlayerCastSpell_FirstPlayerGetsPriorityFirst()
        {
            Player[] players      = generatePlayersAndStartGame(2);
            Phases   currentPhase = this.TurnManager.CurrentPhase;
            MockCard card         = new MockCard();

            this.ActionManager.Queue(new PlayerPassPriorityCommand(players[0]));
            this.Engine.Update();
            bool firstPlayerGainPrioOnCast  = false;
            bool secondPlayerGainPrioOnCast = false;

            this.EventManager.Register(new Trigger <PlayerGainedPriorityEvent>(evt => firstPlayerGainPrioOnCast  = players[0] == evt.Player));
            this.EventManager.Register(new Trigger <PlayerGainedPriorityEvent>(evt => secondPlayerGainPrioOnCast = players[1] == evt.Player));
            this.ActionManager.Queue(new CastCardCommand(players[1], card, mana));
            this.Engine.Update();

            Assert.IsTrue(firstPlayerGainPrioOnCast);
            Assert.IsFalse(secondPlayerGainPrioOnCast);
        }
Esempio n. 12
0
        public void ConstructSpell_SimpleSpell_CorrectlyConstructed()
        {
            bool     spellResolved = false;
            MockCard card          = new MockCard();

            card.SetTargetCondition(0, _ => true);

            card.AddSpellAction(_ => spellResolved = true);

            Spell spell = card.ConstructSpell();

            spell.SetTarget(0, new object[] { null });

            this.ActionManager.Queue(spell);
            this.ActionManager.ExecuteActions();


            Assert.IsTrue(spellResolved);
        }
        public void ShuffleTest()
        {
            var    cardType   = new MockCardType();
            var    collection = new MockCardCollection();
            var    card1      = new MockCard(cardType, collection);
            var    card2      = new MockCard(cardType, collection);
            var    card3      = new MockCard(cardType, collection);
            var    card4      = new MockCard(cardType, collection);
            var    card5      = new MockCard(cardType, collection);
            var    cards      = new List <MockCard>(new[] { card1, card2, card3, card4, card5 });
            var    cardsTest  = new List <MockCard>();
            int    differents = 0;   // Anzahl Unterschiede zu Original Liste
            double mischGrad  = 0.5; // Bestimmen wie viel Karten unterschiedlich sein sollen
            int    minDiff    = Convert.ToInt32(Math.Round(cards.Count * mischGrad));

            collection.AddCard(card1);
            collection.AddCard(card2);
            collection.AddCard(card3);
            collection.AddCard(card4);
            collection.AddCard(card5);

            collection.Shuffle();

            // Karten Liste der gemischten Collection
            foreach (MockCard card in collection.Cards)
            {
                cardsTest.Add(card);
            }

            // Gemischte Karten Liste und Original Liste vergleichen
            for (int i = 0; i < cards.Count; i++)
            {
                if (cards[i] != cardsTest[i])
                {
                    differents += 1;
                }
            }
            Assert.True(differents >= minDiff);
        }
Esempio n. 14
0
        public void QueueSpell_FirstPlayersTurnOtherPlayerCastSpell_FirstPlayerGetsPriorityFirst()
        {
            Player[] players = generatePlayersAndStartGame(2);
            Phases currentPhase = this.TurnManager.CurrentPhase;
            MockCard card = new MockCard();

            this.ActionManager.Queue(new PlayerPassPriorityCommand(players[0]));
            this.Engine.Update();
            bool firstPlayerGainPrioOnCast = false;
            bool secondPlayerGainPrioOnCast = false;
            this.EventManager.Register(new Trigger<PlayerGainedPriorityEvent>(evt => firstPlayerGainPrioOnCast = players[0] == evt.Player));
            this.EventManager.Register(new Trigger<PlayerGainedPriorityEvent>(evt => secondPlayerGainPrioOnCast = players[1] == evt.Player));
            this.ActionManager.Queue(new CastCardCommand(players[1], card, mana));
            this.Engine.Update();

            Assert.IsTrue(firstPlayerGainPrioOnCast);
            Assert.IsFalse(secondPlayerGainPrioOnCast);
        }
Esempio n. 15
0
        public void ResolveStack_StackIsEmptiedAndBothPlayersPass_PhaseIsChanged()
        {
            bool mustResolve = false;
            bool mustResolveAswell = false;
            Player[] players = generatePlayersAndStartGame(2);
            Phases currentPhase = this.TurnManager.CurrentPhase;

            MockCard card1 = new MockCard();
            card1.AddSpellAction(_ => mustResolveAswell = true);
            MockCard card2 = new MockCard();
            card2.AddSpellAction(_ => mustResolve = true);

            this.ActionManager.Queue(new CastCardCommand(players[0], card1, mana));
            this.ActionManager.Queue(new CastCardCommand(players[0], card2, mana));
            this.ActionManager.Queue(new PlayerPassPriorityCommand(players[0]));
            this.ActionManager.Queue(new PlayerPassPriorityCommand(players[1]));
            this.ActionManager.Queue(new PlayerPassPriorityCommand(players[0]));
            this.ActionManager.Queue(new PlayerPassPriorityCommand(players[1]));
            this.Engine.Update();

            Phases actualPhase = this.TurnManager.CurrentPhase;

            Assert.AreNotEqual(currentPhase, actualPhase);
        }
Esempio n. 16
0
        public void QueueSpell_PlayerCastCard_SpellFromCardQueuedToStack()
        {
            MockCard card = new MockCard();
            Player castingPlayer = new Player();

            this.ActionManager.Queue(new CastCardCommand(castingPlayer, card, mana));
            this.Engine.Update();

            IEnumerable<Ability> unresolved = AbilityManager.Unresolved;
            int expectedCount = 1;
            int actualCount = unresolved.Count();
            Assert.AreEqual(expectedCount, actualCount);
        }