From c925edcadbabcdc6de5e0442105dc30a387d3088 Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Wed, 8 May 2019 17:50:28 -0400 Subject: Implement interval arithmetic without exponentiation --- .../.classpath | 16 ++ .../.gitignore | 4 + .../.project | 34 ++++ .../.settings/org.eclipse.jdt.core.prefs | 7 + .../META-INF/MANIFEST.MF | 13 ++ .../build.properties | 5 + .../logic2viatra/tests/interval/AdditionTest.xtend | 49 +++++ .../logic2viatra/tests/interval/DivisionTest.xtend | 202 ++++++++++++++++++++ .../tests/interval/MultiplicationTest.xtend | 205 +++++++++++++++++++++ .../logic2viatra/tests/interval/NegationTest.xtend | 34 ++++ .../tests/interval/SubtractionTest.xtend | 49 +++++ 11 files changed, 618 insertions(+) create mode 100644 Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/.classpath create mode 100644 Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/.gitignore create mode 100644 Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/.project create mode 100644 Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/.settings/org.eclipse.jdt.core.prefs create mode 100644 Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/META-INF/MANIFEST.MF create mode 100644 Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/build.properties create mode 100644 Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/tests/interval/AdditionTest.xtend create mode 100644 Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/tests/interval/DivisionTest.xtend create mode 100644 Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/tests/interval/MultiplicationTest.xtend create mode 100644 Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/tests/interval/NegationTest.xtend create mode 100644 Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/tests/interval/SubtractionTest.xtend (limited to 'Tests') diff --git a/Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/.classpath b/Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/.classpath new file mode 100644 index 00000000..ef58158d --- /dev/null +++ b/Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/.classpath @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/.gitignore b/Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/.gitignore new file mode 100644 index 00000000..8ae4e44d --- /dev/null +++ b/Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/.gitignore @@ -0,0 +1,4 @@ +/bin/ +/src-gen/ +/vql-gen/ +/xtend-gen/ diff --git a/Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/.project b/Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/.project new file mode 100644 index 00000000..5bc946ea --- /dev/null +++ b/Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/.project @@ -0,0 +1,34 @@ + + + hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests + + + + + + org.eclipse.xtext.ui.shared.xtextBuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + org.eclipse.xtext.ui.shared.xtextNature + + diff --git a/Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/.settings/org.eclipse.jdt.core.prefs b/Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000..0c68a61d --- /dev/null +++ b/Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/META-INF/MANIFEST.MF b/Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/META-INF/MANIFEST.MF new file mode 100644 index 00000000..76c113c1 --- /dev/null +++ b/Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/META-INF/MANIFEST.MF @@ -0,0 +1,13 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Logic2Viatra Tests +Bundle-SymbolicName: hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests +Bundle-Version: 1.0.0.qualifier +Automatic-Module-Name: hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Import-Package: org.junit;version="4.12.0" +Require-Bundle: com.google.guava, + org.eclipse.xtext.xbase.lib, + org.eclipse.xtend.lib, + org.eclipse.xtend.lib.macro, + hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatraquery diff --git a/Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/build.properties b/Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/build.properties new file mode 100644 index 00000000..5b9d2918 --- /dev/null +++ b/Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/build.properties @@ -0,0 +1,5 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + . +additional.bundles = org.junit diff --git a/Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/tests/interval/AdditionTest.xtend b/Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/tests/interval/AdditionTest.xtend new file mode 100644 index 00000000..de5f40e1 --- /dev/null +++ b/Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/tests/interval/AdditionTest.xtend @@ -0,0 +1,49 @@ +package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests.interval + +import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.interval.Interval +import java.util.Collection +import org.junit.Assert +import org.junit.Test +import org.junit.runner.RunWith +import org.junit.runners.Parameterized +import org.junit.runners.Parameterized.Parameter +import org.junit.runners.Parameterized.Parameters + +import static hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.interval.Interval.* + +@RunWith(Parameterized) +class AdditionTest { + @Parameters(name = "{index}: {0} + {1} = {2}") + static def Collection data() { + #[ + #[EMPTY, EMPTY, EMPTY], + #[EMPTY, between(-1, 1), EMPTY], + #[between(-1, 1), EMPTY, EMPTY], + #[UNBOUNDED, UNBOUNDED, UNBOUNDED], + #[UNBOUNDED, upTo(2), UNBOUNDED], + #[UNBOUNDED, above(-2), UNBOUNDED], + #[UNBOUNDED, between(-1, 1), UNBOUNDED], + #[upTo(2), UNBOUNDED, UNBOUNDED], + #[upTo(2), upTo(1), upTo(3)], + #[upTo(2), above(-1), UNBOUNDED], + #[upTo(2), between(-1, 2), upTo(4)], + #[above(-2), UNBOUNDED, UNBOUNDED], + #[above(-2), upTo(1), UNBOUNDED], + #[above(-2), above(-1), above(-3)], + #[above(-2), between(-1, 2), above(-3)], + #[between(-2, 3), UNBOUNDED, UNBOUNDED], + #[between(-2, 3), upTo(1), upTo(4)], + #[between(-2, 3), above(-1), above(-3)], + #[between(-2, 3), between(-1, 2.5), between(-3, 5.5)] + ] + } + + @Parameter(0) public var Interval a + @Parameter(1) public var Interval b + @Parameter(2) public var Interval result + + @Test + def void additionTest() { + Assert.assertEquals(result, a + b) + } +} diff --git a/Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/tests/interval/DivisionTest.xtend b/Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/tests/interval/DivisionTest.xtend new file mode 100644 index 00000000..3a8c0c5d --- /dev/null +++ b/Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/tests/interval/DivisionTest.xtend @@ -0,0 +1,202 @@ +package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests.interval + +import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.interval.Interval +import java.util.Collection +import org.junit.Assert +import org.junit.Test +import org.junit.runner.RunWith +import org.junit.runners.Parameterized +import org.junit.runners.Parameterized.Parameter +import org.junit.runners.Parameterized.Parameters + +import static hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.interval.Interval.* + +@RunWith(Parameterized) +class DivisionTest { + @Parameters(name="{index}: {0} / {1} = {2}") + static def Collection data() { + #[ + #[EMPTY, EMPTY, EMPTY], + #[EMPTY, between(-1, 1), EMPTY], + #[between(-1, 1), EMPTY, EMPTY], + #[UNBOUNDED, UNBOUNDED, UNBOUNDED], + #[UNBOUNDED, upTo(-2), UNBOUNDED], + #[UNBOUNDED, upTo(0), UNBOUNDED], + #[UNBOUNDED, upTo(3), UNBOUNDED], + #[UNBOUNDED, above(-2), UNBOUNDED], + #[UNBOUNDED, above(0), UNBOUNDED], + #[UNBOUNDED, above(3), UNBOUNDED], + #[UNBOUNDED, between(-4, -3), UNBOUNDED], + #[UNBOUNDED, between(-4, 0), UNBOUNDED], + #[UNBOUNDED, between(-3, 4), UNBOUNDED], + #[UNBOUNDED, between(0, 4), UNBOUNDED], + #[UNBOUNDED, between(3, 4), UNBOUNDED], + #[UNBOUNDED, ZERO, EMPTY], + #[upTo(-12), UNBOUNDED, UNBOUNDED], + #[upTo(-12), upTo(-2), above(0)], + #[upTo(-12), upTo(0), above(0)], + #[upTo(-12), upTo(3), UNBOUNDED], + #[upTo(-12), above(-2), UNBOUNDED], + #[upTo(-12), above(0), upTo(0)], + #[upTo(-12), above(3), upTo(0)], + #[upTo(-12), between(-4, -3), above(3)], + #[upTo(-12), between(-4, 0), above(3)], + #[upTo(-12), between(-3, 4), UNBOUNDED], + #[upTo(-12), between(0, 4), upTo(-3)], + #[upTo(-12), between(3, 4), upTo(-3)], + #[upTo(-12), ZERO, EMPTY], + #[upTo(0), UNBOUNDED, UNBOUNDED], + #[upTo(0), upTo(-2), above(0)], + #[upTo(0), upTo(0), above(0)], + #[upTo(0), upTo(3), UNBOUNDED], + #[upTo(0), above(-2), UNBOUNDED], + #[upTo(0), above(0), upTo(0)], + #[upTo(0), above(3), upTo(0)], + #[upTo(0), between(-4, -3), above(0)], + #[upTo(0), between(-4, 0), above(0)], + #[upTo(0), between(-3, 4), UNBOUNDED], + #[upTo(0), between(0, 4), upTo(0)], + #[upTo(0), between(3, 4), upTo(0)], + #[upTo(0), ZERO, EMPTY], + #[upTo(12), UNBOUNDED, UNBOUNDED], + #[upTo(12), upTo(-2), above(-6)], + #[upTo(12), upTo(0), UNBOUNDED], + #[upTo(12), upTo(3), UNBOUNDED], + #[upTo(12), above(-2), UNBOUNDED], + #[upTo(12), above(0), UNBOUNDED], + #[upTo(12), above(3), upTo(4)], + #[upTo(12), between(-4, -3), above(-4)], + #[upTo(12), between(-4, 0), UNBOUNDED], + #[upTo(12), between(-3, 4), UNBOUNDED], + #[upTo(12), between(0, 4), UNBOUNDED], + #[upTo(12), between(3, 4), upTo(4)], + #[upTo(12), ZERO, EMPTY], + #[above(-12), UNBOUNDED, UNBOUNDED], + #[above(-12), upTo(-2), upTo(6)], + #[above(-12), upTo(0), UNBOUNDED], + #[above(-12), upTo(3), UNBOUNDED], + #[above(-12), above(-2), UNBOUNDED], + #[above(-12), above(0), UNBOUNDED], + #[above(-12), above(3), above(-4)], + #[above(-12), between(-4, -3), upTo(4)], + #[above(-12), between(-4, 0), UNBOUNDED], + #[above(-12), between(-3, 4), UNBOUNDED], + #[above(-12), between(0, 4), UNBOUNDED], + #[above(-12), between(3, 4), above(-4)], + #[above(-12), ZERO, EMPTY], + #[above(0), UNBOUNDED, UNBOUNDED], + #[above(0), upTo(-2), upTo(0)], + #[above(0), upTo(0), upTo(0)], + #[above(0), upTo(3), UNBOUNDED], + #[above(0), above(-2), UNBOUNDED], + #[above(0), above(0), above(0)], + #[above(0), above(3), above(0)], + #[above(0), between(-4, -3), upTo(0)], + #[above(0), between(-4, 0), upTo(0)], + #[above(0), between(-3, 4), UNBOUNDED], + #[above(0), between(0, 4), above(0)], + #[above(0), between(3, 4), above(0)], + #[above(0), ZERO, EMPTY], + #[above(12), UNBOUNDED, UNBOUNDED], + #[above(12), upTo(-2), upTo(0)], + #[above(12), upTo(0), upTo(0)], + #[above(12), upTo(3), UNBOUNDED], + #[above(12), above(-2), UNBOUNDED], + #[above(12), above(0), above(0)], + #[above(12), above(3), above(0)], + #[above(12), between(-4, -3), upTo(-3)], + #[above(12), between(-4, 0), upTo(-3)], + #[above(12), between(-3, 4), UNBOUNDED], + #[above(12), between(0, 4), above(3)], + #[above(12), between(3, 4), above(3)], + #[above(12), ZERO, EMPTY], + #[between(-36, -12), UNBOUNDED, UNBOUNDED], + #[between(-36, -12), upTo(-2), between(0, 18)], + #[between(-36, -12), upTo(0), above(0)], + #[between(-36, -12), upTo(3), UNBOUNDED], + #[between(-36, -12), above(-2), UNBOUNDED], + #[between(-36, -12), above(0), upTo(0)], + #[between(-36, -12), above(3), between(-12, 0)], + #[between(-36, -12), between(-4, -3), between(3, 12)], + #[between(-36, -12), between(-4, 0), above(3)], + #[between(-36, -12), between(-3, 4), UNBOUNDED], + #[between(-36, -12), between(0, 4), upTo(-3)], + #[between(-36, -12), between(3, 4), between(-12, -3)], + #[between(-36, -12), ZERO, EMPTY], + #[between(-36, 0), UNBOUNDED, UNBOUNDED], + #[between(-36, 0), upTo(-2), between(0, 18)], + #[between(-36, 0), upTo(0), above(0)], + #[between(-36, 0), upTo(3), UNBOUNDED], + #[between(-36, 0), above(-2), UNBOUNDED], + #[between(-36, 0), above(0), upTo(0)], + #[between(-36, 0), above(3), between(-12, 0)], + #[between(-36, 0), between(-4, -3), between(0, 12)], + #[between(-36, 0), between(-4, 0), above(0)], + #[between(-36, 0), between(-3, 4), UNBOUNDED], + #[between(-36, 0), between(0, 4), upTo(0)], + #[between(-36, 0), between(3, 4), between(-12, 0)], + #[between(-36, 0), ZERO, EMPTY], + #[between(-12, 36), UNBOUNDED, UNBOUNDED], + #[between(-12, 36), upTo(-2), between(-18, 6)], + #[between(-12, 36), upTo(0), UNBOUNDED], + #[between(-12, 36), upTo(3), UNBOUNDED], + #[between(-12, 36), above(-2), UNBOUNDED], + #[between(-12, 36), above(0), UNBOUNDED], + #[between(-12, 36), above(3), between(-4, 12)], + #[between(-12, 36), between(-4, -3), between(-12, 4)], + #[between(-12, 36), between(-4, 0), UNBOUNDED], + #[between(-12, 36), between(-3, 4), UNBOUNDED], + #[between(-12, 36), between(0, 4), UNBOUNDED], + #[between(-12, 36), between(3, 4), between(-4, 12)], + #[between(-12, 36), ZERO, EMPTY], + #[between(0, 36), UNBOUNDED, UNBOUNDED], + #[between(0, 36), upTo(-2), between(-18, 0)], + #[between(0, 36), upTo(0), upTo(0)], + #[between(0, 36), upTo(3), UNBOUNDED], + #[between(0, 36), above(-2), UNBOUNDED], + #[between(0, 36), above(0), above(0)], + #[between(0, 36), above(3), between(0, 12)], + #[between(0, 36), between(-4, -3), between(-12, 0)], + #[between(0, 36), between(-4, 0), upTo(0)], + #[between(0, 36), between(-3, 4), UNBOUNDED], + #[between(0, 36), between(0, 4), above(0)], + #[between(0, 36), between(3, 4), between(0, 12)], + #[between(0, 36), ZERO, EMPTY], + #[between(12, 36), UNBOUNDED, UNBOUNDED], + #[between(12, 36), upTo(-2), between(-18, 0)], + #[between(12, 36), upTo(0), upTo(0)], + #[between(12, 36), upTo(3), UNBOUNDED], + #[between(12, 36), above(-2), UNBOUNDED], + #[between(12, 36), above(0), above(0)], + #[between(12, 36), above(3), between(0, 12)], + #[between(12, 36), between(-4, -3), between(-12, -3)], + #[between(12, 36), between(-4, 0), upTo(-3)], + #[between(12, 36), between(-3, 4), UNBOUNDED], + #[between(12, 36), between(0, 4), above(3)], + #[between(12, 36), between(3, 4), between(3, 12)], + #[between(12, 36), ZERO, EMPTY], + #[ZERO, UNBOUNDED, ZERO], + #[ZERO, upTo(-2), ZERO], + #[ZERO, upTo(0), ZERO], + #[ZERO, upTo(3), ZERO], + #[ZERO, above(-2), ZERO], + #[ZERO, above(0), ZERO], + #[ZERO, above(3), ZERO], + #[ZERO, between(-4, -3), ZERO], + #[ZERO, between(-4, 0), ZERO], + #[ZERO, between(-3, 4), ZERO], + #[ZERO, between(0, 4), ZERO], + #[ZERO, between(3, 4), ZERO], + #[ZERO, ZERO, EMPTY] + ] + } + + @Parameter(0) public var Interval a + @Parameter(1) public var Interval b + @Parameter(2) public var Interval result + + @Test + def void divisionTest() { + Assert.assertEquals(result, a / b) + } +} diff --git a/Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/tests/interval/MultiplicationTest.xtend b/Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/tests/interval/MultiplicationTest.xtend new file mode 100644 index 00000000..5f997094 --- /dev/null +++ b/Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/tests/interval/MultiplicationTest.xtend @@ -0,0 +1,205 @@ +package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests.interval + +import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.interval.Interval +import java.util.Collection +import org.junit.Assert +import org.junit.Test +import org.junit.runner.RunWith +import org.junit.runners.Parameterized +import org.junit.runners.Parameterized.Parameter +import org.junit.runners.Parameterized.Parameters + +import static hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.interval.Interval.* + +@RunWith(Parameterized) +class MultiplicationTest { + @Parameters(name="{index}: {0} * {1} = {2}") + static def Collection data() { + #[ + #[EMPTY, EMPTY, EMPTY], + #[EMPTY, between(-1, 1), EMPTY], + #[between(-1, 1), EMPTY, EMPTY], + #[UNBOUNDED, UNBOUNDED, UNBOUNDED], + #[UNBOUNDED, upTo(-2), UNBOUNDED], + #[UNBOUNDED, upTo(0), UNBOUNDED], + #[UNBOUNDED, upTo(3), UNBOUNDED], + #[UNBOUNDED, above(-2), UNBOUNDED], + #[UNBOUNDED, above(0), UNBOUNDED], + #[UNBOUNDED, above(3), UNBOUNDED], + #[UNBOUNDED, between(-4, -3), UNBOUNDED], + #[UNBOUNDED, between(-4, 0), UNBOUNDED], + #[UNBOUNDED, between(-3, 4), UNBOUNDED], + #[UNBOUNDED, between(0, 4), UNBOUNDED], + #[UNBOUNDED, between(3, 4), UNBOUNDED], + #[UNBOUNDED, ZERO, ZERO], + #[upTo(-5), UNBOUNDED, UNBOUNDED], + #[upTo(-5), upTo(-2), above(10)], + #[upTo(-5), upTo(0), above(0)], + #[upTo(-5), upTo(3), UNBOUNDED], + #[upTo(-5), above(-2), UNBOUNDED], + #[upTo(-5), above(0), upTo(0)], + #[upTo(-5), above(3), upTo(-15)], + #[upTo(-5), between(-4, -3), above(15)], + #[upTo(-5), between(-4, 0), above(0)], + #[upTo(-5), between(-3, 4), UNBOUNDED], + #[upTo(-5), between(0, 4), upTo(0)], + #[upTo(-5), between(3, 4), upTo(-15)], + #[upTo(-5), ZERO, ZERO], + #[upTo(0), UNBOUNDED, UNBOUNDED], + #[upTo(0), upTo(-2), above(0)], + #[upTo(0), upTo(0), above(0)], + #[upTo(0), upTo(3), UNBOUNDED], + #[upTo(0), above(-2), UNBOUNDED], + #[upTo(0), above(0), upTo(0)], + #[upTo(0), above(3), upTo(0)], + #[upTo(0), between(-4, -3), above(0)], + #[upTo(0), between(-4, 0), above(0)], + #[upTo(0), between(-3, 4), UNBOUNDED], + #[upTo(0), between(0, 4), upTo(0)], + #[upTo(0), between(3, 4), upTo(0)], + #[upTo(0), ZERO, ZERO], + #[upTo(5), UNBOUNDED, UNBOUNDED], + #[upTo(5), upTo(-2), UNBOUNDED], + #[upTo(5), upTo(0), UNBOUNDED], + #[upTo(5), upTo(3), UNBOUNDED], + #[upTo(5), above(-2), UNBOUNDED], + #[upTo(5), above(0), UNBOUNDED], + #[upTo(5), above(3), UNBOUNDED], + #[upTo(5), between(-4, -3), above(-20)], + #[upTo(5), between(-4, 0), above(-20)], + #[upTo(5), between(-3, 4), UNBOUNDED], + #[upTo(5), between(0, 4), upTo(20)], + #[upTo(5), between(3, 4), upTo(20)], + #[upTo(5), ZERO, ZERO], + #[above(-5), UNBOUNDED, UNBOUNDED], + #[above(-5), upTo(-2), UNBOUNDED], + #[above(-5), upTo(0), UNBOUNDED], + #[above(-5), upTo(3), UNBOUNDED], + #[above(-5), above(-2), UNBOUNDED], + #[above(-5), above(0), UNBOUNDED], + #[above(-5), above(3), UNBOUNDED], + #[above(-5), between(-4, -3), upTo(20)], + #[above(-5), between(-4, 0), upTo(20)], + #[above(-5), between(-3, 4), UNBOUNDED], + #[above(-5), between(0, 4), above(-20)], + #[above(-5), between(3, 4), above(-20)], + #[above(-5), ZERO, ZERO], + #[above(0), UNBOUNDED, UNBOUNDED], + #[above(0), upTo(-2), upTo(0)], + #[above(0), upTo(0), upTo(0)], + #[above(0), upTo(3), UNBOUNDED], + #[above(0), above(-2), UNBOUNDED], + #[above(0), above(0), above(0)], + #[above(0), above(3), above(0)], + #[above(0), between(-4, -3), upTo(0)], + #[above(0), between(-4, 0), upTo(0)], + #[above(0), between(-3, 4), UNBOUNDED], + #[above(0), between(0, 4), above(0)], + #[above(0), between(3, 4), above(0)], + #[above(0), ZERO, ZERO], + #[above(5), UNBOUNDED, UNBOUNDED], + #[above(5), upTo(-2), upTo(-10)], + #[above(5), upTo(0), upTo(0)], + #[above(5), upTo(3), UNBOUNDED], + #[above(5), above(-2), UNBOUNDED], + #[above(5), above(0), above(0)], + #[above(5), above(3), above(15)], + #[above(5), between(-4, -3), upTo(-15)], + #[above(5), between(-4, 0), upTo(0)], + #[above(5), between(-3, 4), UNBOUNDED], + #[above(5), between(0, 4), above(0)], + #[above(5), between(3, 4), above(15)], + #[above(5), ZERO, ZERO], + #[between(-6, -5), UNBOUNDED, UNBOUNDED], + #[between(-6, -5), upTo(-2), above(10)], + #[between(-6, -5), upTo(0), above(0)], + #[between(-6, -5), upTo(3), above(-18)], + #[between(-6, -5), above(-2), upTo(12)], + #[between(-6, -5), above(0), upTo(0)], + #[between(-6, -5), above(3), upTo(-15)], + #[between(-6, -5), between(-4, -3), between(15, 24)], + #[between(-6, -5), between(-4, 0), between(0, 24)], + #[between(-6, -5), between(-3, 4), between(-24, 18)], + #[between(-6, -5), between(0, 4), between(-24, 0)], + #[between(-6, -5), between(3, 4), between(-24, -15)], + #[between(-6, -5), ZERO, ZERO], + #[between(-6, 0), UNBOUNDED, UNBOUNDED], + #[between(-6, 0), upTo(-2), above(0)], + #[between(-6, 0), upTo(0), above(0)], + #[between(-6, 0), upTo(3), above(-18)], + #[between(-6, 0), above(-2), upTo(12)], + #[between(-6, 0), above(0), upTo(0)], + #[between(-6, 0), above(3), upTo(0)], + #[between(-6, 0), between(-4, -3), between(0, 24)], + #[between(-6, 0), between(-4, 0), between(0, 24)], + #[between(-6, 0), between(-3, 4), between(-24, 18)], + #[between(-6, 0), between(0, 4), between(-24, 0)], + #[between(-6, 0), between(3, 4), between(-24, 0)], + #[between(-6, 0), ZERO, ZERO], + #[between(-5, 6), UNBOUNDED, UNBOUNDED], + #[between(-5, 6), upTo(-2), UNBOUNDED], + #[between(-5, 6), upTo(0), UNBOUNDED], + #[between(-5, 6), upTo(3), UNBOUNDED], + #[between(-5, 6), above(-2), UNBOUNDED], + #[between(-5, 6), above(0), UNBOUNDED], + #[between(-5, 6), above(3), UNBOUNDED], + #[between(-5, 6), between(-4, -3), between(-24, 20)], + #[between(-5, 6), between(-4, 0), between(-24, 20)], + #[between(-5, 6), between(-3, 4), between(-20, 24)], + #[between(-5, 6), between(-3, 2), between(-18, 15)], + #[between(-5, 1), between(-3, 4), between(-20, 15)], + #[between(-5, 1), between(-3, 2), between(-10, 15)], + #[between(-5, 6), between(0, 4), between(-20, 24)], + #[between(-5, 6), between(3, 4), between(-20, 24)], + #[between(-5, 6), ZERO, ZERO], + #[between(0, 6), UNBOUNDED, UNBOUNDED], + #[between(0, 6), upTo(-2), upTo(0)], + #[between(0, 6), upTo(0), upTo(0)], + #[between(0, 6), upTo(3), upTo(18)], + #[between(0, 6), above(-2), above(-12)], + #[between(0, 6), above(0), above(0)], + #[between(0, 6), above(3), above(0)], + #[between(0, 6), between(-4, -3), between(-24, 0)], + #[between(0, 6), between(-4, 0), between(-24, 0)], + #[between(0, 6), between(-3, 4), between(-18, 24)], + #[between(0, 6), between(0, 4), between(0, 24)], + #[between(0, 6), between(3, 4), between(0, 24)], + #[between(0, 6), ZERO, ZERO], + #[between(5, 6), UNBOUNDED, UNBOUNDED], + #[between(5, 6), upTo(-2), upTo(-10)], + #[between(5, 6), upTo(0), upTo(0)], + #[between(5, 6), upTo(3), upTo(18)], + #[between(5, 6), above(-2), above(-12)], + #[between(5, 6), above(0), above(0)], + #[between(5, 6), above(3), above(15)], + #[between(5, 6), between(-4, -3), between(-24, -15)], + #[between(5, 6), between(-4, 0), between(-24, 0)], + #[between(5, 6), between(-3, 4), between(-18, 24)], + #[between(5, 6), between(0, 4), between(0, 24)], + #[between(5, 6), between(3, 4), between(15, 24)], + #[between(5, 6), ZERO, ZERO], + #[ZERO, UNBOUNDED, ZERO], + #[ZERO, upTo(-2), ZERO], + #[ZERO, upTo(0), ZERO], + #[ZERO, upTo(3), ZERO], + #[ZERO, above(-2), ZERO], + #[ZERO, above(0), ZERO], + #[ZERO, above(3), ZERO], + #[ZERO, between(-4, -3), ZERO], + #[ZERO, between(-4, 0), ZERO], + #[ZERO, between(-3, 4), ZERO], + #[ZERO, between(0, 4), ZERO], + #[ZERO, between(3, 4), ZERO], + #[ZERO, ZERO, ZERO] + ] + } + + @Parameter(0) public var Interval a + @Parameter(1) public var Interval b + @Parameter(2) public var Interval result + + @Test + def void multiplicatonTest() { + Assert.assertEquals(result, a * b) + } +} diff --git a/Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/tests/interval/NegationTest.xtend b/Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/tests/interval/NegationTest.xtend new file mode 100644 index 00000000..477e925e --- /dev/null +++ b/Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/tests/interval/NegationTest.xtend @@ -0,0 +1,34 @@ +package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests.interval + +import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.interval.Interval +import java.util.Collection +import org.junit.Assert +import org.junit.Test +import org.junit.runner.RunWith +import org.junit.runners.Parameterized +import org.junit.runners.Parameterized.Parameter +import org.junit.runners.Parameterized.Parameters + +import static hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.interval.Interval.* + +@RunWith(Parameterized) +class NegationTest { + @Parameters(name = "{index}: -{0} = {1}") + static def Collection data() { + #[ + #[EMPTY, EMPTY], + #[UNBOUNDED, UNBOUNDED], + #[upTo(1), above(-1)], + #[above(1), upTo(-1)], + #[between(2, 3), between(-3, -2)] + ] + } + + @Parameter(0) public var Interval a + @Parameter(1) public var Interval result + + @Test + def void negationTest() { + Assert.assertEquals(result, -a) + } +} diff --git a/Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/tests/interval/SubtractionTest.xtend b/Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/tests/interval/SubtractionTest.xtend new file mode 100644 index 00000000..30709a9e --- /dev/null +++ b/Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/tests/interval/SubtractionTest.xtend @@ -0,0 +1,49 @@ +package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests.interval + +import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.interval.Interval +import java.util.Collection +import org.junit.Assert +import org.junit.Test +import org.junit.runner.RunWith +import org.junit.runners.Parameterized +import org.junit.runners.Parameterized.Parameter +import org.junit.runners.Parameterized.Parameters + +import static hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.interval.Interval.* + +@RunWith(Parameterized) +class SubtractionTest { + @Parameters(name = "{index}: {0} - {1} = {2}") + static def Collection data() { + #[ + #[EMPTY, EMPTY, EMPTY], + #[EMPTY, between(-1, 1), EMPTY], + #[between(-1, 1), EMPTY, EMPTY], + #[UNBOUNDED, UNBOUNDED, UNBOUNDED], + #[UNBOUNDED, upTo(2), UNBOUNDED], + #[UNBOUNDED, above(-2), UNBOUNDED], + #[UNBOUNDED, between(-1, 1), UNBOUNDED], + #[upTo(2), UNBOUNDED, UNBOUNDED], + #[upTo(2), upTo(1), UNBOUNDED], + #[upTo(2), above(-1), upTo(3)], + #[upTo(2), between(-1, 2), upTo(3)], + #[above(-2), UNBOUNDED, UNBOUNDED], + #[above(-2), upTo(1), above(-3)], + #[above(-2), above(-1), UNBOUNDED], + #[above(-2), between(-1, 2), above(-4)], + #[between(-2, 3), UNBOUNDED, UNBOUNDED], + #[between(-2, 3), upTo(1), above(-3)], + #[between(-2, 3), above(-1), upTo(4)], + #[between(-2, 3), between(-1, 2.5), between(-4.5, 4)] + ] + } + + @Parameter(0) public var Interval a + @Parameter(1) public var Interval b + @Parameter(2) public var Interval result + + @Test + def void subtractionTest() { + Assert.assertEquals(result, a - b) + } +} -- cgit v1.2.3-54-g00ecf