Provide infix compareTo extension for Comparable<T> #KT-46423
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
@@ -2129,7 +2129,7 @@ class ArraysTest {
|
||||
}
|
||||
|
||||
private data class Text(val data: String) : Comparable<Text> {
|
||||
override fun compareTo(other: Text): Int = data.compareTo(other.data)
|
||||
override fun compareTo(other: Text): Int = data compareTo other.data
|
||||
}
|
||||
|
||||
private fun testStableSort(stableSort: Array<Text>.() -> Unit, intSort: Array<Int>.() -> Unit) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
@@ -578,13 +578,13 @@ fun <T> Iterator<T>.assertSorted(isInOrder: (T, T) -> Boolean) {
|
||||
}
|
||||
|
||||
data class Sortable<K : Comparable<K>>(val key: K, val index: Int) : Comparable<Sortable<K>> {
|
||||
override fun compareTo(other: Sortable<K>): Int = this.key.compareTo(other.key)
|
||||
override fun compareTo(other: Sortable<K>): Int = this.key compareTo other.key
|
||||
}
|
||||
|
||||
|
||||
fun <K : Comparable<K>> Iterator<Sortable<K>>.assertStableSorted(descending: Boolean = false) {
|
||||
assertSorted { a, b ->
|
||||
val relation = a.key.compareTo(b.key)
|
||||
val relation = a.key compareTo b.key
|
||||
(if (descending) relation > 0 else relation < 0) || relation == 0 && a.index < b.index
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,6 +28,8 @@ class OrderingTest {
|
||||
fun compareByCompareTo() {
|
||||
val diff = v1.compareTo(v2)
|
||||
assertTrue(diff < 0)
|
||||
val infixDiff = v1 compareTo v2
|
||||
assertEquals(diff, infixDiff)
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -60,7 +62,7 @@ class OrderingTest {
|
||||
|
||||
@Test
|
||||
fun sortComparatorThenComparator() {
|
||||
val comparator = Comparator<Item> { a, b -> a.name.compareTo(b.name) }.thenComparator { a, b -> a.rating.compareTo(b.rating) }
|
||||
val comparator = Comparator<Item> { a, b -> a.name compareTo b.name }.thenComparator { a, b -> a.rating compareTo b.rating }
|
||||
|
||||
val diff = comparator.compare(v1, v2)
|
||||
assertTrue(diff > 0)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
@@ -20,7 +20,7 @@ class KotlinVersionTest {
|
||||
val anotherCurrent = KotlinVersion.CURRENT.run { KotlinVersion(major, minor, patch) }
|
||||
assertEquals(KotlinVersion.CURRENT, anotherCurrent)
|
||||
assertEquals(KotlinVersion.CURRENT.hashCode(), anotherCurrent.hashCode())
|
||||
assertEquals(0, KotlinVersion.CURRENT.compareTo(anotherCurrent))
|
||||
assertEquals(0, KotlinVersion.CURRENT compareTo anotherCurrent)
|
||||
}
|
||||
|
||||
@Test fun componentValidation() {
|
||||
|
||||
Reference in New Issue
Block a user