From 2fc7073c0161f4e25bebda675f1dd46b766e9e9e Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Sat, 22 Oct 2022 12:22:08 +0700 Subject: [PATCH] Simplify integerDivisionDown and integerDivisionUp --- .../kotlin/ru/dbotthepony/mc/otm/core/Math.kt | 22 +--------- .../ru/dbotthepony/mc/otm/tests/MathTests.kt | 41 +++++++++++++++++++ 2 files changed, 43 insertions(+), 20 deletions(-) create mode 100644 src/test/kotlin/ru/dbotthepony/mc/otm/tests/MathTests.kt diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/core/Math.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/core/Math.kt index 8903ae352..a5955aa08 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/core/Math.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/core/Math.kt @@ -44,16 +44,7 @@ fun BigInteger.toIntSafe(): Int { @Suppress("SameParameterValue") fun integerDivisionDown(elements: Int, elementsPerRow: Int): Int { require(elements >= 0) { "Invalid amount of elements $elements" } - - if (elements == 0) { - return 0 - } - - if (elements % elementsPerRow == 0) { - return elements / elementsPerRow - 1 - } - - return elements / elementsPerRow + return (elements - 1) / elementsPerRow } /** @@ -69,14 +60,5 @@ fun integerDivisionDown(elements: Int, elementsPerRow: Int): Int { @Suppress("SameParameterValue") fun integerDivisionUp(elements: Int, elementsPerRow: Int): Int { require(elements >= 0) { "Invalid amount of elements $elements" } - - if (elements == 0) { - return 0 - } - - if (elements % elementsPerRow == 0) { - return elements / elementsPerRow - } - - return elements / elementsPerRow + 1 + return (elements + elementsPerRow - 1) / elementsPerRow } diff --git a/src/test/kotlin/ru/dbotthepony/mc/otm/tests/MathTests.kt b/src/test/kotlin/ru/dbotthepony/mc/otm/tests/MathTests.kt new file mode 100644 index 000000000..4e96b646d --- /dev/null +++ b/src/test/kotlin/ru/dbotthepony/mc/otm/tests/MathTests.kt @@ -0,0 +1,41 @@ +package ru.dbotthepony.mc.otm.tests + +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.DisplayName +import org.junit.jupiter.api.Test +import ru.dbotthepony.mc.otm.core.integerDivisionDown +import ru.dbotthepony.mc.otm.core.integerDivisionUp + +object MathTests { + @Test + @DisplayName("Integer divisions (round up and round down)") + fun integerDivision() { + assertEquals(0, integerDivisionDown(0, 9)) + assertEquals(0, integerDivisionDown(1, 9)) + assertEquals(0, integerDivisionDown(4, 9)) + assertEquals(0, integerDivisionDown(5, 9)) + assertEquals(0, integerDivisionDown(9, 9)) + assertEquals(1, integerDivisionDown(10, 9)) + assertEquals(1, integerDivisionDown(11, 9)) + assertEquals(1, integerDivisionDown(12, 9)) + assertEquals(1, integerDivisionDown(15, 9)) + assertEquals(1, integerDivisionDown(16, 9)) + assertEquals(1, integerDivisionDown(17, 9)) + assertEquals(1, integerDivisionDown(18, 9)) + assertEquals(2, integerDivisionDown(19, 9)) + + assertEquals(0, integerDivisionUp(0, 9)) + assertEquals(1, integerDivisionUp(1, 9)) + assertEquals(1, integerDivisionUp(4, 9)) + assertEquals(1, integerDivisionUp(5, 9)) + assertEquals(1, integerDivisionUp(9, 9)) + assertEquals(2, integerDivisionUp(10, 9)) + assertEquals(2, integerDivisionUp(11, 9)) + assertEquals(2, integerDivisionUp(12, 9)) + assertEquals(2, integerDivisionUp(15, 9)) + assertEquals(2, integerDivisionUp(16, 9)) + assertEquals(2, integerDivisionUp(17, 9)) + assertEquals(2, integerDivisionUp(18, 9)) + assertEquals(3, integerDivisionUp(19, 9)) + } +}