From 419c35f15c6d5210053b0d61a276329705e55077 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B6ren=20Henning?= <soeren.henning@email.uni-kiel.de> Date: Sat, 17 Apr 2021 19:58:13 +0200 Subject: [PATCH] Add tests for LowerBoundRestriction --- .../restriction/LowerBoundRestrictionTest.kt | 116 ++++++++++++++++++ .../kotlin/theodolite/util/ResultsTest.kt | 8 +- 2 files changed, 120 insertions(+), 4 deletions(-) create mode 100644 theodolite-quarkus/src/test/kotlin/theodolite/strategies/restriction/LowerBoundRestrictionTest.kt diff --git a/theodolite-quarkus/src/test/kotlin/theodolite/strategies/restriction/LowerBoundRestrictionTest.kt b/theodolite-quarkus/src/test/kotlin/theodolite/strategies/restriction/LowerBoundRestrictionTest.kt new file mode 100644 index 000000000..b6b9eaecd --- /dev/null +++ b/theodolite-quarkus/src/test/kotlin/theodolite/strategies/restriction/LowerBoundRestrictionTest.kt @@ -0,0 +1,116 @@ +package theodolite.strategies.restriction + +import org.junit.jupiter.api.Assertions.* +import org.junit.jupiter.api.Disabled +import org.junit.jupiter.api.Test +import theodolite.util.LoadDimension +import theodolite.util.Resource +import theodolite.util.Results + +internal class LowerBoundRestrictionTest { + + @Test + fun testNoPreviousResults() { + val results = Results() + val strategy = LowerBoundRestriction(results) + val load = buildLoadDimension(10000) + val resources = listOf( + buildResourcesDimension(1), + buildResourcesDimension(2), + buildResourcesDimension(3) + ) + val restriction = strategy.apply(load, resources) + + assertEquals(3, restriction.size) + assertEquals(resources, restriction) + } + + @Test + fun testWithSuccessfulPreviousResults() { + val results = Results() + results.setResult(10000, 1, true) + results.setResult(20000, 1, false) + results.setResult(20000, 2, true) + val strategy = LowerBoundRestriction(results) + val load = buildLoadDimension(30000) + val resources = listOf( + buildResourcesDimension(1), + buildResourcesDimension(2), + buildResourcesDimension(3) + ) + val restriction = strategy.apply(load, resources) + + assertEquals(2, restriction.size) + assertEquals(resources.subList(1,3), restriction) + } + + @Test + @Disabled + fun testWithNoSuccessfulPreviousResults() { + // This test is currently not implemented this way, but might later be the desired behavior. + val results = Results() + results.setResult(10000, 1, true) + results.setResult(20000, 1, false) + results.setResult(20000, 2, false) + results.setResult(20000, 3, false) + val strategy = LowerBoundRestriction(results) + val load = buildLoadDimension(30000) + val resources = listOf( + buildResourcesDimension(1), + buildResourcesDimension(2), + buildResourcesDimension(3) + ) + val restriction = strategy.apply(load, resources) + + assertEquals(0, restriction.size) + assertEquals(emptyList<Resource>(), restriction) + } + + + @Test + fun testNoPreviousResults2() { + val results = Results() + results.setResult(10000, 1, true) + results.setResult(20000, 2, true) + results.setResult(10000, 1, false) + results.setResult(20000, 2, true) + + val minRequiredInstances = results.getMinRequiredInstances(LoadDimension(20000, emptyList())) + + assertNotNull(minRequiredInstances) + assertEquals(2, minRequiredInstances!!.get()) + } + + @Test + @Disabled + fun testMinRequiredInstancesWhenNotSuccessful() { + // This test is currently not implemented this way, but might later be the desired behavior. + val results = Results() + results.setResult(10000, 1, true) + results.setResult(20000, 2, true) + results.setResult(10000, 1, false) + results.setResult(20000, 2, false) + + val minRequiredInstances = results.getMinRequiredInstances(LoadDimension(20000, emptyList())) + + assertNotNull(minRequiredInstances) + assertEquals(2, minRequiredInstances!!.get()) + } + + private fun buildLoadDimension(load: Int): LoadDimension { + return LoadDimension(load, emptyList()) + } + + private fun buildResourcesDimension(resources: Int): Resource { + return Resource(resources, emptyList()) + } + + private fun Results.setResult(load: Int, resources: Int, successful: Boolean) { + this.setResult( + Pair( + buildLoadDimension(load), + buildResourcesDimension(resources) + ), + successful) + } +} \ No newline at end of file diff --git a/theodolite-quarkus/src/test/kotlin/theodolite/util/ResultsTest.kt b/theodolite-quarkus/src/test/kotlin/theodolite/util/ResultsTest.kt index 03d1592ec..6a69040a4 100644 --- a/theodolite-quarkus/src/test/kotlin/theodolite/util/ResultsTest.kt +++ b/theodolite-quarkus/src/test/kotlin/theodolite/util/ResultsTest.kt @@ -12,8 +12,8 @@ internal class ResultsTest { fun testMinRequiredInstancesWhenSuccessful() { val results = Results() results.setResult(10000, 1, true) - results.setResult(20000, 2, true) - results.setResult(10000, 1, false) + results.setResult(10000, 2, true) + results.setResult(20000, 1, false) results.setResult(20000, 2, true) val minRequiredInstances = results.getMinRequiredInstances(LoadDimension(20000, emptyList())) @@ -28,8 +28,8 @@ internal class ResultsTest { // This test is currently not implemented this way, but might later be the desired behavior. val results = Results() results.setResult(10000, 1, true) - results.setResult(20000, 2, true) - results.setResult(10000, 1, false) + results.setResult(10000, 2, true) + results.setResult(20000, 1, false) results.setResult(20000, 2, false) val minRequiredInstances = results.getMinRequiredInstances(LoadDimension(20000, emptyList())) -- GitLab