Skip to content

Commit

Permalink
Merge branch 'nextversion' into cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
lbressler13 committed Jan 31, 2024
2 parents 3ce233c + e3fe03c commit 20bf2ae
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,8 @@ internal fun efPow(base: ExactFraction, exponent: ExactFraction): ExactFraction
}

when {
base.isZero() -> return ExactFraction.ZERO
base == ExactFraction.ONE || exponent.isZero() -> return ExactFraction.ONE
base.isZero() -> return ExactFraction.ZERO
exponent == ExactFraction.ONE -> return base
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,5 @@ class ExactFractionOperatorsTest {
@Test fun testEfAdd() = runCommonPlusTests(::efAdd)
@Test fun testEfTimes() = runCommonTimesTests(::efTimes)
@Test fun testEfPow() = runCommonPowTests(::efPow)
@Test fun testEfCompare() = runCommonCompareTests(::efCompare)
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ fun runCommonPowTests(powFn: (ExactFraction, ExactFraction) -> ExactFraction) {

base = ExactFraction.ZERO
exp = ExactFraction.ZERO
expected = ExactFraction.ZERO
expected = ExactFraction.ONE
assertEquals(expected, powFn(base, exp))

base = ExactFraction.ZERO
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,53 +4,62 @@ import kotlin.test.assertEquals
import kotlin.test.assertTrue

@Suppress("KotlinConstantConditions")
fun runCompareToTests() {
fun runCommonCompareTests(compareFn: (ExactFraction, ExactFraction) -> Int) {
// equal values
var first = ExactFraction(0)
var second = ExactFraction(0)
assertEquals(0, first.compareTo(second))
assertEquals(0, compareFn(first, second))

first = ExactFraction(100, 3)
second = ExactFraction(100, 3)
assertEquals(0, first.compareTo(second))
assertEquals(0, compareFn(first, second))

// positive greater than zero
first = ExactFraction(3)
second = ExactFraction(0)
assertTrue(first > second)
assertTrue(second < first)
assertEquals(1, compareFn(first, second))
assertEquals(-1, compareFn(second, first))

// negative less than zero
first = ExactFraction(-3)
second = ExactFraction(0)
assertTrue(first < second)
assertTrue(second > first)
assertEquals(-1, compareFn(first, second))
assertEquals(1, compareFn(second, first))

// negative less than positive
first = ExactFraction(-1)
second = ExactFraction(1)
assertTrue(first < second)
assertTrue(second > first)
assertEquals(-1, compareFn(first, second))
assertEquals(1, compareFn(second, first))

// negative order
first = ExactFraction(-3, 4)
second = ExactFraction(-2)
assertTrue(first > second)
assertTrue(second < first)
assertEquals(1, compareFn(first, second))
assertEquals(-1, compareFn(second, first))

first = ExactFraction(-3, 4)
second = ExactFraction(-4, 3)
assertTrue(first > second)
assertTrue(second < first)
assertEquals(1, compareFn(first, second))
assertEquals(-1, compareFn(second, first))

// positive order
first = ExactFraction(3)
second = ExactFraction(2)
assertTrue(first > second)
assertTrue(second < first)
assertEquals(1, compareFn(first, second))
assertEquals(-1, compareFn(second, first))

first = ExactFraction(3, 4)
second = ExactFraction(4, 3)
assertEquals(-1, compareFn(first, second))
assertEquals(1, compareFn(second, first))
}

fun runCompareToTests() {
runCommonCompareTests(ExactFraction::compareTo)

val first = ExactFraction(3, 4)
val second = ExactFraction(4, 3)
assertTrue(first < second)
assertTrue(second > first)

Expand Down

0 comments on commit 20bf2ae

Please sign in to comment.