Exemplo n.º 1
0
        public void Test_Rules_Builder_Create()
        {
            Assert.NotNull(Rules.Default.ValidMoves);
            Assert.NotNull(Rules.Default.StartingField);

            Rules.Builder builder = Rules.Build(new[] { 10, 15 });

            Rules rules = builder.Create();

            Assert.AreEqual(Rules.Default.LastMoveWins, rules.LastMoveWins);
            Assert.AreEqual(Rules.Default.PlayerCount, rules.PlayerCount);
            Assert.AreEqual(Rules.Default.ValidMoves.Count, rules.ValidMoves.Count);
            for (int i = 0; i < Rules.Default.ValidMoves.Count; ++i)
            {
                Assert.True(Rules.Default.ValidMoves[i].Equals(rules.ValidMoves[i]));
            }
            Assert.AreEqual(2, rules.StartingField.Rows.Count);
            Assert.AreEqual(10, rules.StartingField.Rows[0]);
            Assert.AreEqual(15, rules.StartingField.Rows[1]);


            builder = Rules.Build(new[] { 20, 21 });

            builder.AddRules(new Move(new[] { 7, 9 }));

            Assert.Throws <Exception>(() => builder.AddRules(new Move(new[] { -1, 0 })));
            Assert.Throws <Exception>(() => builder.AddRules(new Move(new[] { 1, 0, 0 })));

            builder.LastMoveWins();

            builder.Players(3);

            rules = builder.Create();

            Assert.AreEqual(true, rules.LastMoveWins);
            Assert.AreEqual(3, rules.PlayerCount);
            Assert.AreEqual(1, rules.ValidMoves.Count);
            Assert.True(rules.ValidMoves[0].Equals(new Move(new[] { 7, 9 })));
            Assert.AreEqual(2, rules.StartingField.Rows.Count);
            Assert.AreEqual(20, rules.StartingField.Rows[0]);
            Assert.AreEqual(21, rules.StartingField.Rows[1]);
        }