public void Test_Dictionary_Not_Updates_After_Assignment() { var a = new Assignment <int, int>(); var d = a.AsReadOnlyDictionary(); var newA = a.Assign(v1, 2); var newD = newA.AsReadOnlyDictionary(); Assert.AreEqual(2, newD[v1]); Assert.IsFalse(d.ContainsKey(v1)); }
public void Test_Constructor_With_Values() { IDictionary <Variable <int, int>, int> d = new Dictionary <Variable <int, int>, int> { { v1, 1 }, { v2, 3 } }; var a = new Assignment <int, int>(d); var assignmentDictionary = a.AsReadOnlyDictionary(); Assert.AreEqual(1, assignmentDictionary[v1]); Assert.AreEqual(3, assignmentDictionary[v2]); }
public void Demo() { const int n = 8; IReadOnlyCollection <int> values = Enumerable.Range(1, n).ToList(); IReadOnlyCollection <Variable <string, int> > variables = Enumerable.Range(1, n).Select(i => new Variable <string, int>(i.ToString(), values)).ToList(); IConstraint <string, int>[] constraints = new[] { new AllDifferentConstraint <string, int>(variables) }; Problem <string, int> problem = new Problem <string, int>(variables, constraints); ISolver <string, int> solver = new RecursiveBacktrackSolver <string, int>(); Assignment <string, int> solution = solver.Solve(problem, CancellationToken.None); IReadOnlyDictionary <Variable <string, int>, int> solutionDictionary = solution.AsReadOnlyDictionary(); var expectedDictionary = Enumerable.Range(1, n).ToDictionary(i => i.ToString(), i => i); var actualDictionary = solutionDictionary.OrderBy(kv => kv.Key.UserObject).ToDictionary(kv => kv.Key.UserObject, kv => kv.Value); CollectionAssert.AreEqual(expectedDictionary, actualDictionary); }