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 }))); }
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]); }
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 }))); }