コード例 #1
0
        public void CannotActivateSpellIfAllZonesUsed()
        {
            Game.P1         = Pegasus;
            Game.TurnPlayer = Game.P1;
            var world1   = (Spell)Pegasus.Deck.AddCardToHand(Pegasus.Hand, "Toon World");
            var world2   = (Spell)Pegasus.Deck.AddCardToHand(Pegasus.Hand, "Toon World");
            var world3   = (Spell)Pegasus.Deck.AddCardToHand(Pegasus.Hand, "Toon World");
            var contents = (Spell)Pegasus.Deck.AddCardToHand(Pegasus.Hand, "Toon Table of Contents");

            Assert.AreEqual(4, Pegasus.Hand.Cards.Count);
            Assert.AreEqual(0, Pegasus.DiscardPile.Count);
            Assert.AreEqual(0, Pegasus.Field.SpellTrapZones.Where(z => z.SpellTrapCard != null).Count());

            var mp = new MainPhase1(Game);

            mp.ActivateSpell(world1);
            mp.ActivateSpell(world2);
            mp.ActivateSpell(world3);
            Assert.AreEqual(1000, Pegasus.LifePoints);
            Assert.AreEqual(1, Pegasus.Hand.Cards.Count);
            Assert.AreEqual(0, Pegasus.DiscardPile.Count);
            Assert.AreEqual(3, Pegasus.Field.SpellTrapZones.Where(z => z.SpellTrapCard != null).Count());

            var success = mp.ActivateSpell(contents);

            Assert.False(success);
            Assert.AreEqual(1, Pegasus.Hand.Cards.Count);
            Assert.AreEqual(0, Pegasus.DiscardPile.Count);
            Assert.AreEqual(3, Pegasus.Field.SpellTrapZones.Where(z => z.SpellTrapCard != null).Count());
        }
コード例 #2
0
        public void SearchDeckForCardByNameAndAddToHand()
        {
            Game.P1         = Pegasus;
            Game.TurnPlayer = Game.P1;
            Pegasus.Deck.AddCardToHand(Pegasus.Hand, "Toon Table of Contents");

            Assert.AreEqual(1, Pegasus.Hand.Cards.Count);
            Assert.AreEqual(0, Pegasus.DiscardPile.Count);
            Assert.AreEqual(19, Pegasus.Deck.MainDeckCards.Count);
            Assert.AreEqual(13, Pegasus.Deck.MainDeckCards.Where(c => c.Name.Contains("Toon")).Count());

            var toonTable = (Spell)Pegasus.Hand.Cards[0];

            //var legalTargets = toonTable.GetLegalTargets();
            //Assert.AreEqual(13, legalTargets.Count);

            var success = new MainPhase1(Game).ActivateSpell(toonTable, "Toon World");

            Assert.True(success);
            Assert.AreEqual(1, Pegasus.DiscardPile.Count);
            Assert.AreEqual("Toon Table of Contents", Pegasus.DiscardPile[0].Name);
            Assert.AreEqual(1, Pegasus.Hand.Cards.Count);
            Assert.AreEqual("Toon World", Pegasus.Hand.Cards[0].Name);
            Assert.AreEqual(18, Pegasus.Deck.MainDeckCards.Count);
        }
コード例 #3
0
        public void CannotTributeSetLevel5OrHigherWithoutTributes()
        {
            Assert.AreEqual(0, Kaiba.Field.GetMonsters().Count);
            Assert.AreEqual(6, LusterDragon2.Level);

            Assert.AreEqual(CardLocation.Hand, LusterDragon2.Location);
            var success = new MainPhase1(Game).TributeSet(LusterDragon2);

            Assert.False(success);
            Assert.AreEqual(0, Kaiba.Field.GetMonsters().Count);
            Assert.AreEqual(CardLocation.Hand, LusterDragon2.Location);
        }
コード例 #4
0
        public void CannotTributeSetLevel4OrLower()
        {
            Assert.AreEqual(0, Kaiba.Field.GetMonsters().Count);
            Assert.AreEqual(4, BattleOx.Level);

            Assert.AreEqual(CardLocation.Hand, BattleOx.Location);
            var success = new MainPhase1(Game).TributeSet(BattleOx);

            Assert.False(success);
            Assert.AreEqual(0, Kaiba.Field.GetMonsters().Count);
            Assert.AreEqual(CardLocation.Hand, BattleOx.Location);
        }
コード例 #5
0
        public void CanNormalSetLevel4OrlowerWithoutTribute()
        {
            Assert.AreEqual(0, Kaiba.Field.GetMonsters().Count);
            Assert.AreEqual(4, BattleOx.Level);

            Assert.AreEqual(CardLocation.Hand, BattleOx.Location);
            var success = new MainPhase1(Game).NormalSetWithoutTribute(BattleOx);

            Assert.True(success);
            Assert.AreEqual(1, Kaiba.Field.GetMonsters().Count);
            Assert.AreEqual(CardLocation.MonsterZone, BattleOx.Location);
            Assert.AreEqual(CardPosition.FaceDownDefense, BattleOx.Position);
        }
コード例 #6
0
        public void CannotNormalSetLevel4OrLowerIfTooManyMonstersOnBoard()
        {
            new MainPhase1(Game).NormalSummonWithoutTribute(BattleOx);
            new MainPhase1(Game).NormalSummonWithoutTribute(BattleOx2);
            new MainPhase1(Game).NormalSummonWithoutTribute(BattleOx3);

            Assert.AreEqual(3, Kaiba.Field.GetMonsters().Count);

            Assert.AreEqual(CardLocation.Hand, TwinHeadedBehemoth.Location);
            var success = new MainPhase1(Game).NormalSetWithoutTribute(TwinHeadedBehemoth);

            Assert.False(success);
            Assert.AreEqual(3, Kaiba.Field.GetMonsters().Count);
            Assert.AreEqual(CardLocation.Hand, TwinHeadedBehemoth.Location);
        }
コード例 #7
0
        public void CannotTributeSetLevel5Or6WithoutSpecifyingTributeIfMoreThanOneMonsterOnBoard()
        {
            new MainPhase1(Game).NormalSummonWithoutTribute(BattleOx);
            new MainPhase1(Game).NormalSummonWithoutTribute(TwinHeadedBehemoth);

            Assert.AreEqual(2, Kaiba.Field.GetMonsters().Count);
            Assert.AreEqual(6, LusterDragon2.Level);
            Assert.AreEqual(0, Kaiba.DiscardPile.Count);

            Assert.AreEqual(CardLocation.Hand, LusterDragon2.Location);
            var success = new MainPhase1(Game).TributeSet(LusterDragon2);

            Assert.False(success);
            Assert.AreEqual(2, Kaiba.Field.GetMonsters().Count);
            Assert.AreEqual(0, Kaiba.DiscardPile.Count);
            Assert.AreEqual(CardLocation.Hand, LusterDragon2.Location);
        }
コード例 #8
0
        public void AmazonessVillageShouldBoostAmazonessMonsters()
        {
            var village     = (Spell)Mai.Deck.AddCardToHand(Mai.Hand, "Amazoness Village");
            var swordsWoman = (Monster)Mai.Deck.AddCardToHand(Mai.Hand, "Amazoness Swords Woman");

            Game.TurnPlayer = Mai;

            var m1 = new MainPhase1(Game);

            m1.ActivateSpell(village);
            m1.NormalSummonWithoutTribute(swordsWoman);

            Assert.IsTrue(Mai.Field.FieldZone.FieldSpell == village, "Mai should have Amazoness Village active in the field spell zone.");
            Assert.AreEqual(1, Game.FieldBuffs.Count, "Mai should have 1 field buff");
            Assert.AreEqual(CardLocation.MonsterZone, swordsWoman.Location, "Swordswoman should be in a monster zone.");
            Assert.AreEqual(CardPosition.FaceUpAttack, swordsWoman.Position, "Swordswoman should be in face-up attack position.");
            Assert.AreEqual(1700, swordsWoman.ATK, "Swordswoman should have 1700 ATK");
        }
コード例 #9
0
        public void CannotActivateSpellIfTargetIsNotValid()
        {
            Game.P1         = Pegasus;
            Game.TurnPlayer = Game.P1;
            Pegasus.Deck.AddCardToHand(Pegasus.Hand, "Toon Table of Contents");

            Assert.AreEqual(1, Pegasus.Hand.Cards.Count);
            Assert.AreEqual(0, Pegasus.DiscardPile.Count);
            Assert.AreEqual(19, Pegasus.Deck.MainDeckCards.Count);
            Assert.AreEqual(13, Pegasus.Deck.MainDeckCards.Where(c => c.Name.Contains("Toon")).Count());

            var toonTable = (Spell)Pegasus.Hand.Cards[0];
            var success   = new MainPhase1(Game).ActivateSpell(toonTable, "Battle Ox");

            Assert.False(success);
            Assert.AreEqual(1, Pegasus.Hand.Cards.Count);
            Assert.AreEqual(0, Pegasus.DiscardPile.Count);
            Assert.AreEqual(19, Pegasus.Deck.MainDeckCards.Count);
            Assert.AreEqual(13, Pegasus.Deck.MainDeckCards.Where(c => c.Name.Contains("Toon")).Count());
        }
コード例 #10
0
        public void CannotNormalSetTwiceInSameMainPhase()
        {
            Assert.AreEqual(0, Kaiba.Field.GetMonsters().Count);
            Assert.AreEqual(CardLocation.Hand, BattleOx.Location);
            Assert.AreEqual(CardLocation.Hand, TwinHeadedBehemoth.Location);

            var phase   = new MainPhase1(Game);
            var success = phase.NormalSetWithoutTribute(BattleOx);

            // Fist summon should go through
            Assert.True(success);
            Assert.AreEqual(1, Kaiba.Field.GetMonsters().Count);
            Assert.AreEqual(CardLocation.MonsterZone, BattleOx.Location);
            Assert.AreEqual(CardLocation.Hand, TwinHeadedBehemoth.Location);

            success = phase.NormalSetWithoutTribute(TwinHeadedBehemoth);
            Assert.False(success);
            Assert.AreEqual(1, Kaiba.Field.GetMonsters().Count);
            Assert.AreEqual(CardLocation.MonsterZone, BattleOx.Location);
            Assert.AreEqual(CardLocation.Hand, TwinHeadedBehemoth.Location);
        }
コード例 #11
0
        public void CanTributeSetLevel5OrHigherWithOneTributeWithoutSpecifyingIfOnlyOneTributeIsOnBoard()
        {
            new MainPhase1(Game).NormalSummonWithoutTribute(BattleOx);

            Assert.AreEqual(1, Kaiba.Field.GetMonsters().Count);
            Assert.AreEqual(CardLocation.MonsterZone, BattleOx.Location);
            Assert.AreEqual(CardPosition.FaceUpAttack, BattleOx.Position);
            Assert.AreEqual(0, Kaiba.DiscardPile.Count);
            Assert.AreEqual(6, LusterDragon2.Level);
            Assert.AreEqual(CardLocation.Hand, LusterDragon2.Location);

            var success = new MainPhase1(Game).TributeSet(LusterDragon2);

            Assert.True(success);
            Assert.AreEqual(1, Kaiba.Field.GetMonsters().Count);
            Assert.AreEqual(CardLocation.MonsterZone, LusterDragon2.Location);
            Assert.AreEqual(CardPosition.FaceDownDefense, LusterDragon2.Position);
            Assert.AreEqual(1, Kaiba.DiscardPile.Count);
            Assert.IsTrue(Kaiba.DiscardPile.Contains(BattleOx));
            Assert.AreEqual(CardLocation.Graveyard, BattleOx.Location);
        }
コード例 #12
0
        public void CanTributeSetLevel7OrHigherWithTwoTributeWithoutSpecifyingIfOnlTwoTributesAreOnBoard()
        {
            new MainPhase1(Game).NormalSummonWithoutTribute(BattleOx);
            new MainPhase1(Game).NormalSummonWithoutTribute(TwinHeadedBehemoth);

            Assert.AreEqual(2, Kaiba.Field.GetMonsters().Count);
            Assert.AreEqual(8, BlueEyesWhiteDragon.Level);
            Assert.AreEqual(0, Kaiba.DiscardPile.Count);

            Assert.AreEqual(CardLocation.Hand, BlueEyesWhiteDragon.Location);
            var success = new MainPhase1(Game).TributeSet(BlueEyesWhiteDragon);

            Assert.True(success);
            Assert.AreEqual(1, Kaiba.Field.GetMonsters().Count);
            Assert.AreEqual(CardLocation.MonsterZone, BlueEyesWhiteDragon.Location);
            Assert.AreEqual(CardPosition.FaceDownDefense, BlueEyesWhiteDragon.Position);
            Assert.AreEqual(2, Kaiba.DiscardPile.Count);
            Assert.IsTrue(Kaiba.DiscardPile.Contains(BattleOx));
            Assert.IsTrue(Kaiba.DiscardPile.Contains(TwinHeadedBehemoth));
            Assert.AreEqual(CardLocation.Graveyard, BattleOx.Location);
            Assert.AreEqual(CardLocation.Graveyard, TwinHeadedBehemoth.Location);
        }
コード例 #13
0
        public void CanActivateFluteIfLegal()
        {
            var lordOfD = (Monster)Kaiba.Deck.AddCardToHand(Kaiba.Hand, "Lord of D.");
            var flute   = (Spell)Kaiba.Deck.AddCardToHand(Kaiba.Hand, "The Flute of Summoning Dragon");
            var bewd    = (Monster)Kaiba.Deck.AddCardToHand(Kaiba.Hand, "Blue-Eyes White Dragon");
            var tdragon = (Monster)Kaiba.Deck.AddCardToHand(Kaiba.Hand, "Tyrant Dragon");

            Assert.AreEqual(4, Kaiba.Hand.Cards.Count);
            Assert.AreEqual(0, Kaiba.DiscardPile.Count);
            Assert.AreEqual(0, Kaiba.Field.SpellTrapZones.Where(z => z.SpellTrapCard != null).Count());
            Assert.AreEqual(0, Kaiba.Field.MonsterZones.Where(z => z.Monster != null).Count());

            var mp = new MainPhase1(Game);

            mp.NormalSetWithoutTribute(lordOfD);
            var success = mp.ActivateSpell(flute, bewd, tdragon);

            Assert.True(success);
            Assert.AreEqual(0, Kaiba.Hand.Cards.Count);
            Assert.AreEqual(1, Kaiba.DiscardPile.Count);
            Assert.AreEqual(0, Kaiba.Field.SpellTrapZones.Where(z => z.SpellTrapCard != null).Count());
            Assert.AreEqual(3, Kaiba.Field.MonsterZones.Where(z => z.Monster != null).Count());
        }
コード例 #14
0
        public void CannotActivateSpellIfNoValidTargets()
        {
            Kaiba.Hand.Add(GetCardByName("Toon Table of Contents"));

            Assert.AreEqual(1, Kaiba.Hand.Cards.Count);
            Assert.AreEqual(0, Kaiba.DiscardPile.Count);
            Assert.AreEqual(20, Kaiba.Deck.MainDeckCards.Count);
            Assert.AreEqual(0, Kaiba.Deck.MainDeckCards.Where(c => c.Name.Contains("Toon")).Count());

            var toonTable = (Spell)Kaiba.Hand.Cards[0];
            //var legalTargets = toonTable.GetLegalTargets();

            //Assert.AreEqual(0, legalTargets.Count);
            //Assert.False(toonTable.CanActivate());

            var success = new MainPhase1(Game).ActivateSpell(toonTable);

            Assert.False(success);
            Assert.AreEqual(1, Kaiba.Hand.Cards.Count);
            Assert.AreEqual(0, Kaiba.DiscardPile.Count);
            Assert.AreEqual(20, Kaiba.Deck.MainDeckCards.Count);
            Assert.AreEqual(0, Kaiba.Deck.MainDeckCards.Where(c => c.Name.Contains("Toon")).Count());
        }