diff --git a/src/tests/terms/meta/MetaRDLTermTest.java b/src/tests/terms/meta/MetaRDLTermTest.java index 7f945af..bc9baf7 100644 --- a/src/tests/terms/meta/MetaRDLTermTest.java +++ b/src/tests/terms/meta/MetaRDLTermTest.java @@ -5,6 +5,7 @@ import org.junit.jupiter.api.Test; +import models.algebra.Constant; import models.algebra.Variable; import models.terms.Dependency; import models.terms.DependencyTerm; @@ -46,4 +47,53 @@ assertFalse(metaDep4.isMatchedBy(dep2)); } + @Test + void MetaDependencyMatchingWithConstantOrderTest() { + MetaResourceVariable v1 = new MetaResourceVariable(new Variable("v1"), new Constant("1")); + MetaResourceVariable v2 = new MetaResourceVariable(new Variable("v2"), new Constant("2")); + MetaRDLTerm vd1 = new MetaRDLTerm(v1, v2); + + ResourceVariable a1 = new ResourceVariable("a1", INT, 1); + ResourceVariable a2 = new ResourceVariable("a2", INT, 2); + Dependency d1 = new Dependency(a1, a2); + //[1 : 2] matches [1 : 2] + assertTrue(vd1.isMatchedBy(d1)); + + ResourceVariable b1 = new ResourceVariable("b1", INT, 1); + Dependency d2 = new Dependency(a1, b1); + //[1 : 1] does not match [1 : 2] + assertFalse(vd1.isMatchedBy(d2)); + } + + @Test + void MetaDependencyMatchingWithVariableOrderTest() { + MetaResourceVariable v1 = new MetaResourceVariable(new Variable("v1"), parse("x")); + MetaResourceVariable v2 = new MetaResourceVariable(new Variable("v2"), parse("x")); + MetaResourceVariable v3 = new MetaResourceVariable(new Variable("v3"), parse("y")); + MetaRDLTerm vd1 = new MetaRDLTerm(v1, v2); + MetaRDLTerm vd2 = new MetaRDLTerm(v1, v3); + MetaRDLTerm vd3 = new MetaRDLTerm(new MetaRDLTerm(v3, v1), v2); + + ResourceVariable a1 = new ResourceVariable("a1", INT, 1); + ResourceVariable a2 = new ResourceVariable("a2", INT, 2); + ResourceVariable b1 = new ResourceVariable("b1", INT, 1); + ResourceVariable b2 = new ResourceVariable("b2", INT, 2); + Dependency d1 = new Dependency(a1, a2); + Dependency d2 = new Dependency(a1, b1); + Dependency d3 = new Dependency(new Dependency(a1, b1), a2); + Dependency d4 = new Dependency(new Dependency(a1, a2), b2); + //[1 : 2] does not match [x : x] + assertFalse(vd1.isMatchedBy(d1)); + //[1 : 1] matches [x : x] + assertTrue(vd1.isMatchedBy(d2)); + //[1 : 2] matches [x : y] + assertTrue(vd2.isMatchedBy(d1)); + //[1 : 1] matches [x : y] + assertTrue(vd2.isMatchedBy(d2)); + //[[1 : 1] : 2] does not match [[y : x] : x] + assertFalse(vd3.isMatchedBy(d3)); + //[[1 : 2] : 2] matches [[y : x] : x] + assertTrue(vd3.isMatchedBy(d4)); + } + }