diff --git a/src/tests/LinearRightNormalTest.java b/src/tests/LinearRightNormalTest.java deleted file mode 100644 index e9291ce..0000000 --- a/src/tests/LinearRightNormalTest.java +++ /dev/null @@ -1,61 +0,0 @@ -package tests; - -import static org.junit.jupiter.api.Assertions.*; - -import org.junit.jupiter.api.Test; - -import models.algebra.Type; -import models.dataConstraintModel.DataConstraintModel; -import models.terms.EvaluatableTerm; -import models.terms.ResourceVariable; - -public class LinearRightNormalTest { - - Type INT = DataConstraintModel.typeInt; - - @Test - void linearRightNormalTest() { - - - ResourceVariable a = EvaluatableTerm.of("A", INT, 2); - ResourceVariable b = EvaluatableTerm.of("B", INT, 2); - ResourceVariable c = EvaluatableTerm.of("C", INT, 2); - ResourceVariable d = EvaluatableTerm.of("D", INT, 2); - ResourceVariable e = EvaluatableTerm.of("E", INT, 2); - ResourceVariable f = EvaluatableTerm.of("F", INT, 2); - ResourceVariable g = EvaluatableTerm.of("G", INT, 1); - - EvaluatableTerm te1 = EvaluatableTerm.of(e, f, g); - EvaluatableTerm te2 = EvaluatableTerm.of(c, d, te1); - EvaluatableTerm te3 = EvaluatableTerm.of(a, b, te2); - //[a:b->[c:d->[e:f->g]]] - assertEquals(te3.isLinearRightNormal(), true); - - EvaluatableTerm te4 = EvaluatableTerm.of(a, b, c); - EvaluatableTerm te5 = EvaluatableTerm.of(te4, d, e); - EvaluatableTerm te6 = EvaluatableTerm.of(te5, f, g); - //[[[a:b->c]:d->e]:f->g] - assertEquals(te6.isLinearRightNormal(), false); - } - - @Test - void linearRightNormalizeTest() { - - ResourceVariable a = EvaluatableTerm.of("A", INT, 2); - ResourceVariable b = EvaluatableTerm.of("B", INT, 2); - ResourceVariable c = EvaluatableTerm.of("C", INT, 2); - ResourceVariable d = EvaluatableTerm.of("D", INT, 2); - ResourceVariable e = EvaluatableTerm.of("E", INT, 2); - ResourceVariable f = EvaluatableTerm.of("F", INT, 2); - ResourceVariable g = EvaluatableTerm.of("G", INT, 1); - - EvaluatableTerm te1 = EvaluatableTerm.of(a, b, c); - EvaluatableTerm te2 = EvaluatableTerm.of(te1, d, e); - EvaluatableTerm te3 = EvaluatableTerm.of(te2, f, g); - - assertEquals(te3.isLinearRightNormal(), false); - te3.selfLinearRightNormalize(); - assertEquals(te3.isLinearRightNormal(), true); - } - -} diff --git a/src/tests/meta/MetaResourceVariableTest.java b/src/tests/meta/MetaResourceVariableTest.java deleted file mode 100644 index 2e258e0..0000000 --- a/src/tests/meta/MetaResourceVariableTest.java +++ /dev/null @@ -1,127 +0,0 @@ -package tests.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.MetaDependencyVariable; -import models.terms.meta.MetaEvaluatableTermVariable; -import models.terms.meta.MetaRDLTermVariable; -import models.terms.meta.MetaResourceVariable; -import models.terms.meta.OrderConstraint; - -public class MetaResourceVariableTest { - - @Test - void MetaResourceVariableMathcingWithoutOrder() { - ResourceVariable a = new ResourceVariable("a", INT, 0); - ResourceVariable b = new ResourceVariable("b", INT, 0); - ResourceVariable c = new ResourceVariable("c", INT, 0); - Dependency dep = new Dependency(a, b); - DependencyTerm depTerm = new DependencyTerm(a, b, c); - - MetaResourceVariable x = new MetaResourceVariable(new Variable("x")); - MetaDependencyVariable d = new MetaDependencyVariable(new Variable("d")); - MetaDependencyTermVariable dte = new MetaDependencyTermVariable(new Variable("dte")); - MetaEvaluatableTermVariable te = new MetaEvaluatableTermVariable(new Variable("te")); - MetaRDLTermVariable t = new MetaRDLTermVariable(new Variable("t")); - - // a matches x(resource variable) - assertTrue(x.isMatchedBy(a)); - // a does not match d(dependency) - assertFalse(d.isMatchedBy(a)); - // a does not match dte(dependency term) - assertFalse(dte.isMatchedBy(a)); - // a matches te(evaluatable term) - assertTrue(te.isMatchedBy(a)); - // a matches t(term) - assertTrue(t.isMatchedBy(a)); - // [a : b] does not match x(resource variable) - assertFalse(x.isMatchedBy(dep)); - // [a : b -> c] does not match x(resource variable) - assertFalse(x.isMatchedBy(depTerm)); - } - - @Test - void MetaResourceVariableMathcingWithConstantOrderEQ() { - ResourceVariable a = new ResourceVariable("a", INT, 1); - MetaResourceVariable x = new MetaResourceVariable(new Variable("x"), parse("0")); - MetaResourceVariable y = new MetaResourceVariable(new Variable("y"), parse("1")); - //a(1) does not match x(=0) - assertFalse(x.isMatchedBy(a)); - //a(1) matches y(=1) - assertTrue(y.isMatchedBy(a)); - } - - @Test - void MetaResourceVariableMathcingWithConstantOrderLT() { - ResourceVariable a = new ResourceVariable("a", INT, 1); - MetaResourceVariable x = new MetaResourceVariable(new Variable("x"), OrderConstraint.LT, parse("0")); - MetaResourceVariable y = new MetaResourceVariable(new Variable("y"), OrderConstraint.LT, parse("1")); - MetaResourceVariable z = new MetaResourceVariable(new Variable("z"), OrderConstraint.LT, parse("2")); - //a(1) does not match x(<0) - assertFalse(x.isMatchedBy(a)); - //a(1) matches y(<1) - assertFalse(y.isMatchedBy(a)); - //a(1) matches z(<2) - assertTrue(z.isMatchedBy(a)); - } - - @Test - void MetaResourceVariableMathcingWithConstantOrderLE() { - ResourceVariable a = new ResourceVariable("a", INT, 1); - MetaResourceVariable x = new MetaResourceVariable(new Variable("x"), OrderConstraint.LE, parse("0")); - MetaResourceVariable y = new MetaResourceVariable(new Variable("y"), OrderConstraint.LE, parse("1")); - MetaResourceVariable z = new MetaResourceVariable(new Variable("z"), OrderConstraint.LE, parse("2")); - //a(1) does not match x(<=0) - assertFalse(x.isMatchedBy(a)); - //a(1) matches y(<=1) - assertTrue(y.isMatchedBy(a)); - //a(1) matches z(<=2) - assertTrue(z.isMatchedBy(a)); - } - - @Test - void MetaResourceVariableMathcingWithConstantOrderGT() { - ResourceVariable a = new ResourceVariable("a", INT, 1); - MetaResourceVariable x = new MetaResourceVariable(new Variable("x"), OrderConstraint.GT, parse("0")); - MetaResourceVariable y = new MetaResourceVariable(new Variable("y"), OrderConstraint.GT, parse("1")); - MetaResourceVariable z = new MetaResourceVariable(new Variable("z"), OrderConstraint.GT, parse("2")); - //a(1) does not match x(>0) - assertTrue(x.isMatchedBy(a)); - //a(1) matches y(>1) - assertFalse(y.isMatchedBy(a)); - //a(1) matches z(>2) - assertFalse(z.isMatchedBy(a)); - } - - @Test - void MetaResourceVariableMathcingWithConstantOrderGE() { - ResourceVariable a = new ResourceVariable("a", INT, 1); - MetaResourceVariable x = new MetaResourceVariable(new Variable("x"), OrderConstraint.GE, parse("0")); - MetaResourceVariable y = new MetaResourceVariable(new Variable("y"), OrderConstraint.GE, parse("1")); - MetaResourceVariable z = new MetaResourceVariable(new Variable("z"), OrderConstraint.GE, parse("2")); - //a(1) does not match x(>=0) - assertTrue(x.isMatchedBy(a)); - //a(1) matches y(>=1) - assertTrue(y.isMatchedBy(a)); - //a(1) matches z(>2) - assertFalse(z.isMatchedBy(a)); - } - - @Test - void MetaResourceVariableMathcingWithEqOrder() { - ResourceVariable a = new ResourceVariable("a", INT, 0); - MetaResourceVariable x = new MetaResourceVariable(new Variable("x"), parse("x")); - - //a(0) matches x(x) - assertTrue(x.isMatchedBy(a)); - } - -} diff --git a/src/tests/terms/LinearRightNormalTest.java b/src/tests/terms/LinearRightNormalTest.java new file mode 100644 index 0000000..c5e7846 --- /dev/null +++ b/src/tests/terms/LinearRightNormalTest.java @@ -0,0 +1,61 @@ +package tests.terms; + +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.Test; + +import models.algebra.Type; +import models.dataConstraintModel.DataConstraintModel; +import models.terms.EvaluatableTerm; +import models.terms.ResourceVariable; + +public class LinearRightNormalTest { + + Type INT = DataConstraintModel.typeInt; + + @Test + void linearRightNormalTest() { + + + ResourceVariable a = EvaluatableTerm.of("A", INT, 2); + ResourceVariable b = EvaluatableTerm.of("B", INT, 2); + ResourceVariable c = EvaluatableTerm.of("C", INT, 2); + ResourceVariable d = EvaluatableTerm.of("D", INT, 2); + ResourceVariable e = EvaluatableTerm.of("E", INT, 2); + ResourceVariable f = EvaluatableTerm.of("F", INT, 2); + ResourceVariable g = EvaluatableTerm.of("G", INT, 1); + + EvaluatableTerm te1 = EvaluatableTerm.of(e, f, g); + EvaluatableTerm te2 = EvaluatableTerm.of(c, d, te1); + EvaluatableTerm te3 = EvaluatableTerm.of(a, b, te2); + //[a:b->[c:d->[e:f->g]]] + assertEquals(te3.isLinearRightNormal(), true); + + EvaluatableTerm te4 = EvaluatableTerm.of(a, b, c); + EvaluatableTerm te5 = EvaluatableTerm.of(te4, d, e); + EvaluatableTerm te6 = EvaluatableTerm.of(te5, f, g); + //[[[a:b->c]:d->e]:f->g] + assertEquals(te6.isLinearRightNormal(), false); + } + + @Test + void linearRightNormalizeTest() { + + ResourceVariable a = EvaluatableTerm.of("A", INT, 2); + ResourceVariable b = EvaluatableTerm.of("B", INT, 2); + ResourceVariable c = EvaluatableTerm.of("C", INT, 2); + ResourceVariable d = EvaluatableTerm.of("D", INT, 2); + ResourceVariable e = EvaluatableTerm.of("E", INT, 2); + ResourceVariable f = EvaluatableTerm.of("F", INT, 2); + ResourceVariable g = EvaluatableTerm.of("G", INT, 1); + + EvaluatableTerm te1 = EvaluatableTerm.of(a, b, c); + EvaluatableTerm te2 = EvaluatableTerm.of(te1, d, e); + EvaluatableTerm te3 = EvaluatableTerm.of(te2, f, g); + + assertEquals(te3.isLinearRightNormal(), false); + te3.selfLinearRightNormalize(); + assertEquals(te3.isLinearRightNormal(), true); + } + +} diff --git a/src/tests/terms/meta/MetaResourceVariableTest.java b/src/tests/terms/meta/MetaResourceVariableTest.java new file mode 100644 index 0000000..30b1cc6 --- /dev/null +++ b/src/tests/terms/meta/MetaResourceVariableTest.java @@ -0,0 +1,127 @@ +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.MetaDependencyVariable; +import models.terms.meta.MetaEvaluatableTermVariable; +import models.terms.meta.MetaRDLTermVariable; +import models.terms.meta.MetaResourceVariable; +import models.terms.meta.OrderConstraint; + +public class MetaResourceVariableTest { + + @Test + void MetaResourceVariableMathcingWithoutOrder() { + ResourceVariable a = new ResourceVariable("a", INT, 0); + ResourceVariable b = new ResourceVariable("b", INT, 0); + ResourceVariable c = new ResourceVariable("c", INT, 0); + Dependency dep = new Dependency(a, b); + DependencyTerm depTerm = new DependencyTerm(a, b, c); + + MetaResourceVariable x = new MetaResourceVariable(new Variable("x")); + MetaDependencyVariable d = new MetaDependencyVariable(new Variable("d")); + MetaDependencyTermVariable dte = new MetaDependencyTermVariable(new Variable("dte")); + MetaEvaluatableTermVariable te = new MetaEvaluatableTermVariable(new Variable("te")); + MetaRDLTermVariable t = new MetaRDLTermVariable(new Variable("t")); + + // a matches x(resource variable) + assertTrue(x.isMatchedBy(a)); + // a does not match d(dependency) + assertFalse(d.isMatchedBy(a)); + // a does not match dte(dependency term) + assertFalse(dte.isMatchedBy(a)); + // a matches te(evaluatable term) + assertTrue(te.isMatchedBy(a)); + // a matches t(term) + assertTrue(t.isMatchedBy(a)); + // [a : b] does not match x(resource variable) + assertFalse(x.isMatchedBy(dep)); + // [a : b -> c] does not match x(resource variable) + assertFalse(x.isMatchedBy(depTerm)); + } + + @Test + void MetaResourceVariableMathcingWithConstantOrderEQ() { + ResourceVariable a = new ResourceVariable("a", INT, 1); + MetaResourceVariable x = new MetaResourceVariable(new Variable("x"), parse("0")); + MetaResourceVariable y = new MetaResourceVariable(new Variable("y"), parse("1")); + //a(1) does not match x(=0) + assertFalse(x.isMatchedBy(a)); + //a(1) matches y(=1) + assertTrue(y.isMatchedBy(a)); + } + + @Test + void MetaResourceVariableMathcingWithConstantOrderLT() { + ResourceVariable a = new ResourceVariable("a", INT, 1); + MetaResourceVariable x = new MetaResourceVariable(new Variable("x"), OrderConstraint.LT, parse("0")); + MetaResourceVariable y = new MetaResourceVariable(new Variable("y"), OrderConstraint.LT, parse("1")); + MetaResourceVariable z = new MetaResourceVariable(new Variable("z"), OrderConstraint.LT, parse("2")); + //a(1) does not match x(<0) + assertFalse(x.isMatchedBy(a)); + //a(1) matches y(<1) + assertFalse(y.isMatchedBy(a)); + //a(1) matches z(<2) + assertTrue(z.isMatchedBy(a)); + } + + @Test + void MetaResourceVariableMathcingWithConstantOrderLE() { + ResourceVariable a = new ResourceVariable("a", INT, 1); + MetaResourceVariable x = new MetaResourceVariable(new Variable("x"), OrderConstraint.LE, parse("0")); + MetaResourceVariable y = new MetaResourceVariable(new Variable("y"), OrderConstraint.LE, parse("1")); + MetaResourceVariable z = new MetaResourceVariable(new Variable("z"), OrderConstraint.LE, parse("2")); + //a(1) does not match x(<=0) + assertFalse(x.isMatchedBy(a)); + //a(1) matches y(<=1) + assertTrue(y.isMatchedBy(a)); + //a(1) matches z(<=2) + assertTrue(z.isMatchedBy(a)); + } + + @Test + void MetaResourceVariableMathcingWithConstantOrderGT() { + ResourceVariable a = new ResourceVariable("a", INT, 1); + MetaResourceVariable x = new MetaResourceVariable(new Variable("x"), OrderConstraint.GT, parse("0")); + MetaResourceVariable y = new MetaResourceVariable(new Variable("y"), OrderConstraint.GT, parse("1")); + MetaResourceVariable z = new MetaResourceVariable(new Variable("z"), OrderConstraint.GT, parse("2")); + //a(1) does not match x(>0) + assertTrue(x.isMatchedBy(a)); + //a(1) matches y(>1) + assertFalse(y.isMatchedBy(a)); + //a(1) matches z(>2) + assertFalse(z.isMatchedBy(a)); + } + + @Test + void MetaResourceVariableMathcingWithConstantOrderGE() { + ResourceVariable a = new ResourceVariable("a", INT, 1); + MetaResourceVariable x = new MetaResourceVariable(new Variable("x"), OrderConstraint.GE, parse("0")); + MetaResourceVariable y = new MetaResourceVariable(new Variable("y"), OrderConstraint.GE, parse("1")); + MetaResourceVariable z = new MetaResourceVariable(new Variable("z"), OrderConstraint.GE, parse("2")); + //a(1) does not match x(>=0) + assertTrue(x.isMatchedBy(a)); + //a(1) matches y(>=1) + assertTrue(y.isMatchedBy(a)); + //a(1) matches z(>2) + assertFalse(z.isMatchedBy(a)); + } + + @Test + void MetaResourceVariableMathcingWithEqOrder() { + ResourceVariable a = new ResourceVariable("a", INT, 0); + MetaResourceVariable x = new MetaResourceVariable(new Variable("x"), parse("x")); + + //a(0) matches x(x) + assertTrue(x.isMatchedBy(a)); + } + +}