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