Exemplo n.º 1
0
        public void Test_Rules_Builder_Moves()
        {
            Rules.Builder builder = Rules.Build(new[] { 10, 20 });
            builder.AddSingleRowRules(1, 3);
            Rules rules = builder.Create();

            Assert.AreEqual(6, rules.ValidMoves.Count);
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 0, 1 })));
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 0, 2 })));
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 0, 3 })));
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 1, 0 })));
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 2, 0 })));
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 3, 0 })));


            builder = Rules.Build(new[] { 30, 40, 50 });
            builder.AddMultiRowRules(1, 2);
            rules = builder.Create();

            Assert.AreEqual(6, rules.ValidMoves.Count);
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 0, 1, 2 })));
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 0, 2, 1 })));
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 1, 0, 2 })));
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 1, 2, 0 })));
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 2, 0, 1 })));
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 2, 1, 0 })));
        }
Exemplo n.º 2
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]);
        }
Exemplo n.º 3
0
        public void Test_Rules_Builder_ParseMoves()
        {
            Rules.Builder builder = Rules.Build(new[] { 10, 20 });
            builder.ParseMoveRules("1");
            Rules rules = builder.Create();

            Assert.AreEqual(2, rules.ValidMoves.Count);
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 0, 1 })));
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 1, 0 })));


            builder = Rules.Build(new[] { 10, 20 });
            builder.ParseMoveRules("2-3");
            rules = builder.Create();

            Assert.AreEqual(4, rules.ValidMoves.Count);
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 0, 2 })));
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 2, 0 })));
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 0, 3 })));
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 3, 0 })));


            builder = Rules.Build(new[] { 10, 20 });
            builder.ParseMoveRules("2-3,0-1");
            rules = builder.Create();

            Assert.AreEqual(8, rules.ValidMoves.Count);
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 0, 2 })));
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 2, 0 })));
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 0, 3 })));
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 3, 0 })));
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 1, 2 })));
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 2, 1 })));
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 1, 3 })));
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 3, 1 })));


            builder = Rules.Build(new[] { 10, 20 });
            builder.ParseMoveRules("2-3;1,1");
            rules = builder.Create();

            Assert.AreEqual(5, rules.ValidMoves.Count);
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 0, 2 })));
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 2, 0 })));
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 0, 3 })));
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 3, 0 })));
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 1, 1 })));


            builder = Rules.Build(new[] { 10, 20 });
            builder.ParseMoveRules("2-3;1,1;3-4,2-3");
            rules = builder.Create();

            Assert.AreEqual(12, rules.ValidMoves.Count);
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 0, 2 })));
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 2, 0 })));
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 0, 3 })));
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 3, 0 })));
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 1, 1 })));
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 3, 2 })));
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 4, 2 })));
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 3, 3 })));
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 4, 3 })));
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 2, 3 })));
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 2, 4 })));
            Assert.True(rules.ValidMoves.Contains(new Move(new[] { 3, 4 })));
        }