public void ShouldNotUnify(string testCode) { // Arrange var database = TestUtilities.LoadStatements(testCode); var unification = new UnifierCalculation(database); var lhs = database.Reader.ReadInternalTermsForLabel("lhs").Single(); var rhs = database.Reader.ReadInternalTermsForLabel("rhs").Single(); // Act var eq = new Equation { Lhs = lhs, Rhs = rhs }; var(substitutions, succeed) = unification.GetSyntacticUnifier(eq); // Assert Assert.False(succeed); Assert.Empty(substitutions); }
public void ShouldUnify(string testCode, string[] substitutions) { // Arrange var database = TestUtilities.LoadStatements(testCode); var unification = new UnifierCalculation(database); var lhs = database.Reader.ReadInternalTermsForLabel("lhs").Single(); var rhs = database.Reader.ReadInternalTermsForLabel("rhs").Single(); // Act var eq = new Equation { Lhs = lhs, Rhs = rhs }; var unifier = unification.GetSyntacticUnifier(eq); // Assert Assert.True(unifier.succeed); var unifierStrings = unifier.substitutions.Select(u => u.ToSourceCode(database)); Assert.True(TestUtilities.ContainsTheSameValues(substitutions, unifierStrings)); }