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()); }
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); }
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); }
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); }
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); }
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); }
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); }
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"); }
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()); }
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); }
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); }
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); }
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()); }
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()); }