Beispiel #1
0
        public void PlaySiegeHorn()
        {
            var hornCard = new Card
            {
                Id     = 1,
                Types  = GwintType.RowModifier | GwintType.Melee | GwintType.Ranged | GwintType.Siege,
                Effect = GwintEffect.Horn
            };
            var player1HandCards = new List <PlayerCard>
            {
                hornCard.ToPlayerCard()
            };
            var player1CardSlots = new List <PlayerCardSlot>();
            var game             = TestGameProvider.CreateGame(player1HandCards, player1CardSlots);
            var command          = new PlayCardCommand
            {
                SenderUserId = 1,
                CardId       = 1,
                Slot         = GwintSlot.SiegeModifier
            };

            command.Execute(game);

            var cardSlot = player1CardSlots.Single();

            Assert.Equal(GwintSlot.SiegeModifier, cardSlot.Slot);
            Assert.Equal(hornCard, cardSlot.Card);
        }
Beispiel #2
0
        public void PlaySiegeCreatureCard()
        {
            var card = new Card
            {
                Id    = 1,
                Types = GwintType.Creature | GwintType.Siege
            };
            var player1HandCards = new List <PlayerCard>
            {
                card.ToPlayerCard()
            };
            var player1CardSlots = new List <PlayerCardSlot>();
            var game             = TestGameProvider.CreateGame(player1HandCards, player1CardSlots);
            var command          = new PlayCardCommand
            {
                SenderUserId = 1,
                CardId       = 1,
                Slot         = GwintSlot.Siege
            };

            command.Execute(game);

            var cardSlot = player1CardSlots.Single();

            Assert.Equal(GwintSlot.Siege, cardSlot.Slot);
            Assert.Equal(card, cardSlot.Card);
        }
Beispiel #3
0
        public void PlayMeleeScorchCreatureCardBelowThreshold()
        {
            var meleeScorchCreature = new Card
            {
                Id     = 1,
                Types  = GwintType.Creature | GwintType.Melee,
                Effect = GwintEffect.MeleeScorch
            };
            var meleeCreature = new Card
            {
                Id    = 2,
                Types = GwintType.Creature | GwintType.Melee
            };
            var player1HandCards = new List <PlayerCard>
            {
                meleeScorchCreature.ToPlayerCard()
            };
            var player1CardSlots      = new List <PlayerCardSlot>();
            var player1GraveyardCards = new List <PlayerCard>();
            var player2CardSlots      = new List <PlayerCardSlot>
            {
                new PlayerCardSlot
                {
                    Slot           = GwintSlot.Melee,
                    Card           = meleeCreature,
                    EffectivePower = Constants.ScorchThresholdMelee - 1
                }
            };
            var player2GraveyardCards = new List <PlayerCard>();
            var game = TestGameProvider.CreateGame(
                player1HandCards,
                player1CardSlots,
                player1GraveyardCards,
                player2CardSlots,
                player2GraveyardCards);

            var command = new PlayCardCommand
            {
                SenderUserId = 1,
                CardId       = 1,
                Slot         = GwintSlot.Melee
            };

            command.Execute(game);

            var player1CardSlot = player1CardSlots.Single();

            Assert.Equal(GwintSlot.Melee, player1CardSlot.Slot);
            Assert.Equal(meleeScorchCreature, player1CardSlot.Card);

            var player2CardSlot = player2CardSlots.Single();

            Assert.Equal(GwintSlot.Melee, player2CardSlot.Slot);
            Assert.Equal(meleeCreature, player2CardSlot.Card);
        }
        public void PlayScorchWithSingleCreature()
        {
            var scorchCard = new Card
            {
                Id     = 1,
                Types  = GwintType.GlobalEffect,
                Effect = GwintEffect.Scorch
            };
            var creatureCard = new Card
            {
                Id    = 2,
                Types = GwintType.Creature | GwintType.Melee
            };
            var player1HandCards = new List <PlayerCard>
            {
                scorchCard.ToPlayerCard()
            };
            var player1CardSlots = new List <PlayerCardSlot>
            {
                new PlayerCardSlot
                {
                    Slot = GwintSlot.Melee,
                    Card = creatureCard
                }
            };
            var player1GraveyardCards = new List <PlayerCard>();
            var game = TestGameProvider.CreateGame(
                player1HandCards,
                player1CardSlots,
                player1GraveyardCards);
            var command = new PlayCardCommand
            {
                SenderUserId = 1,
                CardId       = 1,
                Slot         = GwintSlot.Melee
            };

            command.Execute(game);


            Assert.Empty(player1CardSlots);
            var expectedGraveyardCards = new List <Card>()
            {
                creatureCard,
                scorchCard
            };

            Assert.Equal(expectedGraveyardCards, player1GraveyardCards.Select(g => g.Card));
        }
Beispiel #5
0
        public void PlayAndReplaceSiegeWeatherCard()
        {
            var card1 = new Card
            {
                Id     = 1,
                Types  = GwintType.Weather,
                Effect = GwintEffect.Siege
            };
            var card2 = new Card
            {
                Id     = 2,
                Types  = GwintType.Weather,
                Effect = GwintEffect.Siege
            };
            var player1HandCards = new List <PlayerCard>
            {
                card1.ToPlayerCard()
            };
            var player1CardSlots = new List <PlayerCardSlot>
            {
                new PlayerCardSlot
                {
                    Slot = GwintSlot.Weather,
                    Card = card2
                }
            };
            var graveyardCards = new List <PlayerCard>();
            var game           = TestGameProvider.CreateGame(player1HandCards, player1CardSlots, graveyardCards);
            var command        = new PlayCardCommand
            {
                SenderUserId = 1,
                CardId       = 1,
                Slot         = GwintSlot.Weather
            };

            command.Execute(game);

            var cardSlot = player1CardSlots.Single();

            Assert.Equal(GwintSlot.Weather, cardSlot.Slot);
            Assert.Equal(card1, cardSlot.Card);

            var graveyardCard = graveyardCards.Single();

            Assert.Equal(card2, graveyardCard.Card);
        }
        public void PlayUnsummunDummySpellCard()
        {
            var unsummonDummyCard = new Card
            {
                Id     = 1,
                Types  = GwintType.Spell,
                Effect = GwintEffect.UnsummonDummy
            };
            var targetCard = new Card
            {
                Id    = 2,
                Types = GwintType.Creature | GwintType.Melee
            };
            var player1HandCards = new List <PlayerCard>
            {
                unsummonDummyCard.ToPlayerCard()
            };
            var player1CardSlots = new List <PlayerCardSlot>
            {
                new PlayerCardSlot
                {
                    Slot = GwintSlot.Melee,
                    Card = targetCard
                }
            };
            var game    = TestGameProvider.CreateGame(player1HandCards, player1CardSlots);
            var command = new PlayCardCommand
            {
                SenderUserId = 1,
                CardId       = 1,
                Slot         = GwintSlot.Melee,
                TargetCardId = 2
            };

            command.Execute(game);

            var cardSlot = player1CardSlots.Single();

            Assert.Equal(GwintSlot.Melee, cardSlot.Slot);
            Assert.Equal(unsummonDummyCard, cardSlot.Card);

            var handCard = player1HandCards.Single();

            Assert.Equal(targetCard, handCard.Card);
        }
Beispiel #7
0
        public void PlaySummonClonesCreatureCard()
        {
            var cloneCard = new Card
            {
                Id    = 2,
                Types = GwintType.Creature | GwintType.Ranged
            };
            var summonClonesCard = new Card
            {
                Id          = 1,
                Types       = GwintType.Creature | GwintType.Melee,
                Effect      = GwintEffect.SummonClones,
                SummonFlags = new List <GwintSummonFlag>
                {
                    new GwintSummonFlag
                    {
                        SummonCard = cloneCard
                    }
                }
            };
            var player1HandCards = new List <PlayerCard>
            {
                summonClonesCard.ToPlayerCard(),
                cloneCard.ToPlayerCard()
            };
            var player1CardSlots      = new List <PlayerCardSlot>();
            var player1GraveyardCards = new List <PlayerCard>();
            var game = TestGameProvider.CreateGame(
                player1HandCards,
                player1CardSlots,
                player1GraveyardCards);

            var command = new PlayCardCommand
            {
                SenderUserId = 1,
                CardId       = 1,
                Slot         = GwintSlot.Melee
            };

            command.Execute(game);

            Assert.Contains(player1CardSlots, s => s.Slot == GwintSlot.Melee && s.Card == summonClonesCard);
            Assert.Contains(player1CardSlots, s => s.Slot == GwintSlot.Ranged && s.Card == cloneCard);
        }
Beispiel #8
0
        public void PlayNurseCreatureCard()
        {
            var nurseCreature = new Card
            {
                Id     = 1,
                Types  = GwintType.Creature | GwintType.Melee,
                Effect = GwintEffect.Nurse
            };
            var rangedCreature = new Card
            {
                Id    = 2,
                Types = GwintType.Creature | GwintType.Ranged
            };
            var player1HandCards = new List <PlayerCard>
            {
                nurseCreature.ToPlayerCard()
            };
            var player1CardSlots      = new List <PlayerCardSlot>();
            var player1GraveyardCards = new List <PlayerCard>
            {
                rangedCreature.ToPlayerCard()
            };
            var game = TestGameProvider.CreateGame(
                player1HandCards,
                player1CardSlots,
                player1GraveyardCards);

            var command = new PlayCardCommand
            {
                SenderUserId = 1,
                CardId       = 1,
                Slot         = GwintSlot.Melee,
                TargetCardId = 2
            };

            command.Execute(game);

            Assert.Contains(player1CardSlots, s => s.Slot == GwintSlot.Melee && s.Card == nurseCreature);
            Assert.Contains(player1CardSlots, s => s.Slot == GwintSlot.Ranged && s.Card == rangedCreature);
        }
Beispiel #9
0
        public void PlaySpyCreatureCard()
        {
            var spyCreature = new Card
            {
                Id     = 1,
                Types  = GwintType.Creature | GwintType.Melee | GwintType.Spy,
                Effect = GwintEffect.Draw2
            };
            var player1HandCards = new List <PlayerCard>
            {
                spyCreature.ToPlayerCard()
            };
            var player1CardSlots      = new List <PlayerCardSlot>();
            var player1GraveyardCards = new List <PlayerCard>();
            var player2CardSlots      = new List <PlayerCardSlot>();
            var player2GraveyardCards = new List <PlayerCard>();
            var game = TestGameProvider.CreateGame(
                player1HandCards,
                player1CardSlots,
                player1GraveyardCards,
                player2CardSlots,
                player2GraveyardCards);

            var command = new PlayCardCommand
            {
                SenderUserId = 1,
                CardId       = 1,
                Slot         = GwintSlot.Melee
            };

            command.Execute(game);

            Assert.Empty(player1CardSlots);

            var player2CardSlot = player2CardSlots.Single();

            Assert.Equal(GwintSlot.Melee, player2CardSlot.Slot);
            Assert.Equal(spyCreature, player2CardSlot.Card);
        }
Beispiel #10
0
        public void PlayClearSkyWeatherCard()
        {
            var clearSkyCard = new Card
            {
                Id     = 1,
                Types  = GwintType.Weather,
                Effect = GwintEffect.ClearSky
            };
            var weatherCard1 = new Card
            {
                Id     = 2,
                Types  = GwintType.Weather,
                Effect = GwintEffect.Melee
            };
            var weatherCard2 = new Card
            {
                Id     = 3,
                Types  = GwintType.Weather,
                Effect = GwintEffect.Ranged
            };
            var weatherCard3 = new Card
            {
                Id     = 4,
                Types  = GwintType.Weather,
                Effect = GwintEffect.Siege
            };
            var player1HandCards = new List <PlayerCard>
            {
                clearSkyCard.ToPlayerCard()
            };
            var player1CardSlots = new List <PlayerCardSlot>
            {
                new PlayerCardSlot
                {
                    Slot = GwintSlot.Weather,
                    Card = weatherCard1
                },
                new PlayerCardSlot
                {
                    Slot = GwintSlot.Weather,
                    Card = weatherCard2
                },
                new PlayerCardSlot
                {
                    Slot = GwintSlot.Weather,
                    Card = weatherCard3
                },
            };
            var graveyardCards = new List <PlayerCard>();
            var game           = TestGameProvider.CreateGame(player1HandCards, player1CardSlots, graveyardCards);
            var command        = new PlayCardCommand
            {
                SenderUserId = 1,
                CardId       = 1,
                Slot         = GwintSlot.Weather
            };

            command.Execute(game);

            Assert.Empty(player1CardSlots);

            var expectedGraveyardCards = new List <Card>()
            {
                weatherCard1,
                weatherCard2,
                weatherCard3,
                clearSkyCard,
            };

            Assert.Equal(expectedGraveyardCards, graveyardCards.Select(g => g.Card), EqualityComparer <Card> .Default);
        }
        public void PlayScorchWithTwoDifferentPowerCreatures()
        {
            var scorchCard = new Card
            {
                Id     = 1,
                Types  = GwintType.GlobalEffect,
                Effect = GwintEffect.Scorch
            };
            var creatureCard1 = new Card
            {
                Id    = 2,
                Types = GwintType.Creature | GwintType.Melee
            };
            var creatureCard2 = new Card
            {
                Id    = 3,
                Types = GwintType.Creature | GwintType.Melee
            };
            var player1HandCards = new List <PlayerCard>
            {
                scorchCard.ToPlayerCard()
            };
            var player1CardSlots = new List <PlayerCardSlot>
            {
                new PlayerCardSlot
                {
                    Slot           = GwintSlot.Melee,
                    Card           = creatureCard1,
                    EffectivePower = 1
                },
                new PlayerCardSlot
                {
                    Slot           = GwintSlot.Melee,
                    Card           = creatureCard2,
                    EffectivePower = 2
                }
            };
            var player1GraveyardCards = new List <PlayerCard>();
            var game = TestGameProvider.CreateGame(
                player1HandCards,
                player1CardSlots,
                player1GraveyardCards);
            var command = new PlayCardCommand
            {
                SenderUserId = 1,
                CardId       = 1,
                Slot         = GwintSlot.Melee
            };

            command.Execute(game);


            var cardSlot = player1CardSlots.Single();

            Assert.Equal(GwintSlot.Melee, cardSlot.Slot);
            Assert.Equal(creatureCard1, cardSlot.Card);
            var expectedGraveyardCards = new List <Card>()
            {
                creatureCard2,
                scorchCard
            };

            Assert.Equal(expectedGraveyardCards, player1GraveyardCards.Select(g => g.Card));
        }