diff --git a/libraries/stdlib/test/CompareTest.kt b/libraries/stdlib/test/CompareTest.kt index 81235609264..71739f2ad2b 100644 --- a/libraries/stdlib/test/CompareTest.kt +++ b/libraries/stdlib/test/CompareTest.kt @@ -4,14 +4,23 @@ import java.util.Comparator import kotlin.test.* import org.junit.Test -class Item(val name: String, val rating: Int) { +class Item(val name: String, val rating: Int): Comparable { fun toString() = "Item($name, $rating)" + + public override fun compareTo(other: Item): Int { + return compareBy(this, other, {it.rating}, {it.name}) + } } class CompareTest { val v1 = Item("wine", 9) val v2 = Item("beer", 10) + Test fun compareByCompareTo() { + val diff = v1.compareTo(v2) + assertTrue(diff < 0) + } + Test fun compareByNameFirst() { val diff = compareBy(v1, v2, {(i: Item) -> i.name}, {(i: Item) -> i.rating}) assertTrue(diff > 0) @@ -22,6 +31,11 @@ class CompareTest { assertTrue(diff < 0) } + Test fun compareByRatingFirstUsingItNotation() { + val diff = compareBy(v1, v2, {it.rating}, {it.name}) + assertTrue(diff < 0) + } + Test fun compareSameObjectsByRatingFirst() { val diff = compareBy(v1, v1, {(i: Item) -> i.rating}, {(i: Item) -> i.name}) assertTrue(diff == 0)