diff --git a/src/models/formulas/meta/MetaEquationFormula.java b/src/models/formulas/meta/MetaEquationFormula.java index ee29f66..5bed7ea 100644 --- a/src/models/formulas/meta/MetaEquationFormula.java +++ b/src/models/formulas/meta/MetaEquationFormula.java @@ -36,7 +36,7 @@ return false; } EquationFormula eq = (EquationFormula) formula; - return leftTerm.isMatchedBy(eq.getLeftTerm(), binding, orderConstraint) && rightTerm.isMatchedBy(rightTerm, binding, orderConstraint); + return leftTerm.isMatchedBy(eq.getLeftTerm(), binding, orderConstraint) && rightTerm.isMatchedBy(eq.getRightTerm(), binding, orderConstraint); } diff --git a/src/tests/formulas/meta/MetaEquationFormulaTest.java b/src/tests/formulas/meta/MetaEquationFormulaTest.java new file mode 100644 index 0000000..933be37 --- /dev/null +++ b/src/tests/formulas/meta/MetaEquationFormulaTest.java @@ -0,0 +1,67 @@ +package tests.formulas.meta; + +import static org.junit.jupiter.api.Assertions.*; +import static tests.Utils.*; + +import org.junit.jupiter.api.Test; + +import models.algebra.Variable; +import models.formulas.DependencyFormula; +import models.formulas.EquationFormula; +import models.formulas.meta.MetaDependencyFormula; +import models.formulas.meta.MetaEquationFormula; +import models.terms.Dependency; +import models.terms.DependencyTerm; +import models.terms.EvaluatableTerm; +import models.terms.ResourceVariable; +import models.terms.meta.MetaEvaluatableTermVariable; +import models.terms.meta.MetaRDLTerm; +import models.terms.meta.MetaResourceVariable; + +public class MetaEquationFormulaTest { + + @Test + void MetaEquationFormulaMatchingTest() { + + ResourceVariable a = new ResourceVariable("a", INT, 0); + ResourceVariable b = new ResourceVariable("b", INT, 0); + ResourceVariable c = new ResourceVariable("c", INT, 0); + ResourceVariable d = new ResourceVariable("d", INT, 0); + EvaluatableTerm te1 = new DependencyTerm(a, b, c); + EvaluatableTerm te2 = new DependencyTerm(a, b, d); + EquationFormula formula = new EquationFormula(te1, te2); + + + MetaEvaluatableTermVariable se = new MetaEvaluatableTermVariable(new Variable("se")); + MetaResourceVariable v = new MetaResourceVariable(new Variable("v")); + MetaEvaluatableTermVariable te = new MetaEvaluatableTermVariable(new Variable("te")); + MetaEvaluatableTermVariable ue = new MetaEvaluatableTermVariable(new Variable("ue")); + MetaRDLTerm left = new MetaRDLTerm(se, v, te); + MetaRDLTerm right = new MetaRDLTerm(se, v, ue); + MetaEquationFormula metaFormula = new MetaEquationFormula(left, right); + + // [a : b -> c] = [a : b -> d] matches [se : v -> te] = [se : v -> ue] + assertTrue(metaFormula.isMatchBy(formula)); + + } + + @Test + void MetaDependencyFormulaMatchingTest() { + ResourceVariable a = new ResourceVariable("a", INT, 0); + ResourceVariable b = new ResourceVariable("b", INT, 0); + ResourceVariable c = new ResourceVariable("c", INT, 0); + EvaluatableTerm te1 = new DependencyTerm(a, b, c); + ResourceVariable d = new ResourceVariable("d", INT, 0); + Dependency d1 = new Dependency(te1, d); + DependencyFormula depF = new DependencyFormula(d1); + + MetaEvaluatableTermVariable te = new MetaEvaluatableTermVariable(new Variable("te")); + MetaResourceVariable w = new MetaResourceVariable(new Variable("w")); + MetaRDLTerm dep = new MetaRDLTerm(te, w); + MetaDependencyFormula metaDepF = new MetaDependencyFormula(dep); + + //[a : b -> c] : d matches te : w + assertTrue(metaDepF.isMatchBy(depF)); + } + +}