diff --git a/src/tests/terms/meta/MetaDependencyVariableTest.java b/src/tests/terms/meta/MetaDependencyVariableTest.java new file mode 100644 index 0000000..0f2e9f9 --- /dev/null +++ b/src/tests/terms/meta/MetaDependencyVariableTest.java @@ -0,0 +1,129 @@ +package tests.terms.meta; + +import static org.junit.jupiter.api.Assertions.*; +import static tests.Utils.*; + +import org.junit.jupiter.api.Test; + +import models.algebra.Constant; +import models.algebra.Variable; +import models.terms.Dependency; +import models.terms.DependencyTerm; +import models.terms.ResourceVariable; +import models.terms.meta.MetaDependencyVariable; +import models.terms.meta.OrderConstraint; + +public class MetaDependencyVariableTest { + + @Test + void MetaDependencyVariableMatchingWithoutOrderTest() { + ResourceVariable a = new ResourceVariable("a", INT, 1); + ResourceVariable b = new ResourceVariable("b", INT, 1); + ResourceVariable c = new ResourceVariable("c", INT, 1); + Dependency dep1 = new Dependency(a, b); + Dependency dep2 = new Dependency(dep1); + DependencyTerm te1 = new DependencyTerm(a, b, c); + + MetaDependencyVariable d = new MetaDependencyVariable(new Variable("d")); + // [a : b] mathces d(dependency) + assertTrue(d.isMatchedBy(dep1)); + // [[a : b]] mathces d(dependency) + assertTrue(d.isMatchedBy(dep2)); + // a does not mathc d(dependency) + assertFalse(d.isMatchedBy(a)); + // [a : b -> c] does not mathc d(dependency) + assertFalse(d.isMatchedBy(te1)); + } + + @Test + void MetaDependencyVariableMatchingWithConstantOrderEQTest() { + ResourceVariable a = new ResourceVariable("a", INT, 1); + ResourceVariable b = new ResourceVariable("b", INT, 1); + ResourceVariable c = new ResourceVariable("c", INT, 2); + Dependency dep1 = new Dependency(a, b); + Dependency dep2 = new Dependency(a, c); + + MetaDependencyVariable d = new MetaDependencyVariable(new Variable("d"), new Constant("1")); + // [a : b](1) mathces d(=1) + assertTrue(d.isMatchedBy(dep1)); + // [a : c](2) does not mathc d(=1) + assertFalse(d.isMatchedBy(dep2)); + } + + @Test + void MetaDependencyVariableMatchingWithConstantOrderLTTest() { + ResourceVariable a = new ResourceVariable("a", INT, 0); + ResourceVariable b = new ResourceVariable("b", INT, 1); + ResourceVariable c = new ResourceVariable("c", INT, 2); + ResourceVariable e = new ResourceVariable("e", INT, 0); + Dependency dep1 = new Dependency(a, b); + Dependency dep2 = new Dependency(a, c); + Dependency dep3 = new Dependency(a, e); + + MetaDependencyVariable d = new MetaDependencyVariable(new Variable("d"), OrderConstraint.LT, new Constant("1")); + // [a : b](1) does not match d(<1) + assertFalse(d.isMatchedBy(dep1)); + // [a : c](2) does not match d(<1) + assertFalse(d.isMatchedBy(dep2)); + // [a : e](0) matches d(<1) + assertTrue(d.isMatchedBy(dep3)); + } + + @Test + void MetaDependencyVariableMatchingWithConstantOrderLETest() { + ResourceVariable a = new ResourceVariable("a", INT, 0); + ResourceVariable b = new ResourceVariable("b", INT, 1); + ResourceVariable c = new ResourceVariable("c", INT, 2); + ResourceVariable e = new ResourceVariable("e", INT, 0); + Dependency dep1 = new Dependency(a, b); + Dependency dep2 = new Dependency(a, c); + Dependency dep3 = new Dependency(a, e); + + MetaDependencyVariable d = new MetaDependencyVariable(new Variable("d"), OrderConstraint.LE, new Constant("1")); + // [a : b](1) matches d(<=1) + assertTrue(d.isMatchedBy(dep1)); + // [a : c](2) does not match d(<=1) + assertFalse(d.isMatchedBy(dep2)); + // [a : e](0) matches d(<=1) + assertTrue(d.isMatchedBy(dep3)); + } + + @Test + void MetaDependencyVariableMatchingWithConstantOrderGTTest() { + ResourceVariable a = new ResourceVariable("a", INT, 0); + ResourceVariable b = new ResourceVariable("b", INT, 1); + ResourceVariable c = new ResourceVariable("c", INT, 2); + ResourceVariable e = new ResourceVariable("e", INT, 0); + Dependency dep1 = new Dependency(a, b); + Dependency dep2 = new Dependency(a, c); + Dependency dep3 = new Dependency(a, e); + + MetaDependencyVariable d = new MetaDependencyVariable(new Variable("d"), OrderConstraint.GT, new Constant("1")); + // [a : b](1) does not match d(>1) + assertFalse(d.isMatchedBy(dep1)); + // [a : c](2) matches d(>1) + assertTrue(d.isMatchedBy(dep2)); + // [a : e](0) does not match d(>1) + assertFalse(d.isMatchedBy(dep3)); + } + + @Test + void MetaDependencyVariableMatchingWithConstantOrderGETest() { + ResourceVariable a = new ResourceVariable("a", INT, 0); + ResourceVariable b = new ResourceVariable("b", INT, 1); + ResourceVariable c = new ResourceVariable("c", INT, 2); + ResourceVariable e = new ResourceVariable("e", INT, 0); + Dependency dep1 = new Dependency(a, b); + Dependency dep2 = new Dependency(a, c); + Dependency dep3 = new Dependency(a, e); + + MetaDependencyVariable d = new MetaDependencyVariable(new Variable("d"), OrderConstraint.GE, new Constant("1")); + // [a : b](1) matches d(>=1) + assertTrue(d.isMatchedBy(dep1)); + // [a : c](2) matches d(>=1) + assertTrue(d.isMatchedBy(dep2)); + // [a : e](0) does not match d(>=1) + assertFalse(d.isMatchedBy(dep3)); + } + +} diff --git a/src/tests/terms/meta/MetaRDLTermTest.java b/src/tests/terms/meta/MetaRDLTermTest.java new file mode 100644 index 0000000..7f945af --- /dev/null +++ b/src/tests/terms/meta/MetaRDLTermTest.java @@ -0,0 +1,49 @@ +package tests.terms.meta; + +import static org.junit.jupiter.api.Assertions.*; +import static tests.Utils.*; + +import org.junit.jupiter.api.Test; + +import models.algebra.Variable; +import models.terms.Dependency; +import models.terms.DependencyTerm; +import models.terms.ResourceVariable; +import models.terms.meta.MetaDependencyTermVariable; +import models.terms.meta.MetaRDLTerm; +import models.terms.meta.MetaResourceVariable; + +public class MetaRDLTermTest { + + @Test + void MetaDependencyMatchingWithoutOrderTest() { + ResourceVariable a = new ResourceVariable("a", INT, 1); + ResourceVariable b = new ResourceVariable("b", INT, 1); + ResourceVariable c = new ResourceVariable("c", INT, 1); + Dependency dep1 = new Dependency(a, b); + DependencyTerm te1 = new DependencyTerm(a, b, c); + Dependency dep2 = new Dependency(te1, b); + + MetaResourceVariable v1 = new MetaResourceVariable(new Variable("v1")); + MetaResourceVariable v2 = new MetaResourceVariable(new Variable("v2")); + MetaResourceVariable v3 = new MetaResourceVariable(new Variable("v3")); + MetaDependencyTermVariable vte = new MetaDependencyTermVariable(new Variable("vte")); + MetaRDLTerm metaDep = new MetaRDLTerm(v1, v2); + MetaRDLTerm metaDep2 = new MetaRDLTerm(vte, v2); + MetaRDLTerm metaTe = new MetaRDLTerm(v1, v2, v3); + MetaRDLTerm metaDep3 = new MetaRDLTerm(metaTe, v2); + MetaRDLTerm metaDep4 = new MetaRDLTerm(metaTe, v3); + + //[a : b] matches [v1 : v2] + assertTrue(metaDep.isMatchedBy(dep1)); + //[[a : b -> c] : b] does not match [v1 : v2] + assertFalse(metaDep.isMatchedBy(dep2)); + //[[a : b -> c] : b] matches [vte : v2] + assertTrue(metaDep2.isMatchedBy(dep2)); + //[[a : b -> c] : b] matches [[v1 : v2 -> v3] : v2] + assertTrue(metaDep3.isMatchedBy(dep2)); + //[[a : b -> c] : b] does not match [[v1 : v2 -> v3] : v3] + assertFalse(metaDep4.isMatchedBy(dep2)); + } + +}