Ejemplo n.º 1
0
        public void TestSetupPhase()
        {
            var player1 = new Player("Henk");
            var player2 = new Player("Bob");
            var player3 = new Player("Sjaak");
            var player4 = new Player("Kees");
            var players = new HashSet<IPlayer>() { player1, player2, player3, player4 };

            using (var factory = new GameContainer())
            {
                var game = factory.Create(players);
                var commandFactory = factory.GetCommandFactory(game);

                Assert.Equal(players, game.Players);

                int turnstartCount = 0;
                game.TurnStarted += (sender, args) => turnstartCount++;

                game.Start();
                Assert.Equal(1, turnstartCount);

                var rolldice = commandFactory.NewHighRollCommand(player1);
                game.Execute(rolldice);

                Assert.Equal(2, turnstartCount);

                //todo should think out and implement some flow through the game
            }
        }
Ejemplo n.º 2
0
        public void CantAddUnsourcedOrSea(MaterialType type)
        {
            var material = new Mock<IRawMaterial>();
            material.Setup(m => m.Type).Returns(type);
            var player = new Player("Henk");

            Assert.Throws<ArgumentException>(() => player.AddResources(material.Object));
        }
Ejemplo n.º 3
0
        public void ExpectMaterialsToBeAddedToPlayer()
        {
            var player = new Player("Bob");
            var command = new YearOfPlentyCommand(player, MaterialType.Grain, MaterialType.Wool);
            command.Execute();

            Assert.Equal(new MaterialType[] { MaterialType.Grain, MaterialType.Wool }, player.Inventory.Select(i => i.Type));
        }
Ejemplo n.º 4
0
        public void AddResourceTest(MaterialType type)
        {
            var material = new Mock<IRawMaterial>();
            material.Setup(m => m.Type).Returns(type);

            var player = new Player("Henk");
            player.AddResources(material.Object);

            Assert.Contains(material.Object, player.Inventory);
        }
Ejemplo n.º 5
0
        public void AddMultipleResourcesTest(IEnumerable<MaterialType> types)
        {
            IRawMaterial[] materails = types.Select(t => new RawMaterial(t)).ToArray();
            var player = new Player("jkljkl");
            player.AddResources(materails);

            foreach (var material in materails)
            {
                Assert.Contains(material, player.Inventory);
            }
        }
Ejemplo n.º 6
0
        public void ExecuteTest()
        {
            var player = new Player("Bob");
            player.AddResources(new RawMaterial(MaterialType.Brick));
            var victim1 = CreatePlayer(MaterialType.Brick, MaterialType.Grain, MaterialType.Ore);
            var victim2 = CreatePlayer(MaterialType.Grain, MaterialType.Grain, MaterialType.Brick, MaterialType.Grain);
            var victims = new IPlayer[] { victim1, victim2 };
            var command = new MonopolyCommand(player, victims, MaterialType.Grain);

            command.Execute();

            Assert.Equal(4, player.Inventory.Count(r => r.Type == MaterialType.Grain));
            Assert.Equal(5, player.Inventory.Count());
            Assert.Equal(0, victim1.Inventory.Count(r => r.Type == MaterialType.Grain));
            Assert.Equal(2, victim1.Inventory.Count());
            Assert.Equal(0, victim2.Inventory.Count(r => r.Type == MaterialType.Grain));
            Assert.Equal(1, victim2.Inventory.Count());
        }
Ejemplo n.º 7
0
 private static IPlayer CreatePlayer(params MaterialType[] materials)
 {
     var player = new Player("Test");
     player.AddResources(materials.Select(m => new RawMaterial(m)).ToArray());
     return player;
 }
Ejemplo n.º 8
0
        public void HasResourcesTrueOnEmpty()
        {
            var player = new Player("Bob");
            bool result = player.HasResources(new MaterialType[] { });

            Assert.True(result);
        }
Ejemplo n.º 9
0
        public void HasResourceFalseOnNull()
        {
            var player = new Player("Bob");
            bool result = player.HasResources(null);

            Assert.False(result);
        }
Ejemplo n.º 10
0
 public void CanAddNullResource()
 {
     var player = new Player("Abd");
     var materials = new IRawMaterial[] { null };
     Assert.Throws<ArgumentNullException>(() => player.AddResources(materials));
 }
Ejemplo n.º 11
0
 public void RemoveResourcesNullException()
 {
     var player = new Player("Bob");
     Assert.Throws<ArgumentNullException>(() => player.TakeResources(null));
 }
Ejemplo n.º 12
0
        public void ArmySizeEqualsAllPlayedRobberCards(IEnumerable<IDevelopmentCard> cards, int expectedArmySize)
        {
            var player = new Player("Bob");
            foreach (var card in cards)
                player.AddCard(card);

            int result = player.ArmySize;
            Assert.Equal(expectedArmySize, result);
        }
Ejemplo n.º 13
0
        public void AddAddsToCards()
        {
            var player = new Player("Henk");
            var card = new Mock<IDevelopmentCard>();
            player.AddCard(card.Object);

            Assert.Contains(card.Object, player.Cards);
        }
Ejemplo n.º 14
0
 public void CantAddNullCard()
 {
     var player = new Player("Bob");
     Assert.Throws<ArgumentNullException>(() => player.AddCard(null));
 }
Ejemplo n.º 15
0
        public void RemoveResourcesTest(MaterialType[] playerResources, MaterialType[] removeResources, MaterialType[] expected)
        {
            var player = new Player("Henk");

            foreach (var resource in playerResources)
            {
                var mock = new Mock<IRawMaterial>();
                mock.Setup(m => m.Type).Returns(resource);
                player.AddResources(mock.Object);
            }

            IEnumerable<IRawMaterial> materials = player.TakeResources(removeResources);

            Assert.Equal(expected, player.Inventory.Select(i => i.Type));
            Assert.Equal(removeResources, materials.Select(m => m.Type));
            Assert.Equal(removeResources.Length, materials.Count());
        }
Ejemplo n.º 16
0
        public void RemoveResourcesNotInInventoryException(MaterialType[] playerResources, MaterialType[] removeResources)
        {
            var player = new Player("Henk");

            foreach (var resource in playerResources)
            {
                var mock = new Mock<IRawMaterial>();
                mock.Setup(m => m.Type).Returns(resource);
                player.AddResources(mock.Object);
            }

            Assert.Throws<InvalidOperationException>(() => player.TakeResources(removeResources));
            Assert.True(player.HasResources(playerResources)); //assert nothing gets removed when failing
        }
Ejemplo n.º 17
0
 public void CantAddNullResources()
 {
     var player = new Player("ABC");
     Assert.Throws<ArgumentNullException>(() => player.AddResources(null));
 }
Ejemplo n.º 18
0
        public void HasResourcesTest(MaterialType[] current, MaterialType[] requested, bool expected)
        {
            var player = new Player("Bob");
            foreach (var material in current)
            {
                var mock = new Mock<IRawMaterial>();
                mock.Setup(m => m.Type).Returns(material);
                player.AddResources(mock.Object);
            }
            bool result = player.HasResources(requested);

            Assert.True(expected == result, $"Expected: {expected} != result {result}.\nCurrent:{string.Join(", ", current)}\nRequested:{string.Join(", ", requested)}");
        }