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 0000000000000000000000000000000000000000..b6b9eaecd9fc35b25b9447611835c3d8469cea0e --- /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 03d1592ec867d393384c192936c91066a7108e59..6a69040a47abaf2e39225c563dfbad1594b1f261 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()))