Compare floating point values asList elements in total order #KT-28753

This commit is contained in:
Abduqodiri Qurbonzoda
2020-03-27 06:09:12 +03:00
parent ba5e643cb2
commit 97c688057d
3 changed files with 46 additions and 16 deletions
@@ -824,6 +824,26 @@ class ArraysTest {
assertEquals(10, intsAsList[1], "Should reflect changes in original array")
}
@Test fun asListInFloatingPrimitiveArrays() {
fun <T> testTotalOrder(expected: List<T>, actual: List<T>, element: T) = compare(expected, actual) {
propertyEquals { contains(element) }
propertyEquals { indexOf(element) }
propertyEquals { lastIndexOf(element) }
}
testTotalOrder(listOf(Float.NaN), floatArrayOf(Float.NaN).asList(), Float.NaN)
testTotalOrder(listOf(-0.0f), floatArrayOf(-0.0f).asList(), -0.0f)
testTotalOrder(listOf(-0.0f), floatArrayOf(-0.0f).asList(), 0.0f)
testTotalOrder(listOf(0.0f), floatArrayOf(0.0f).asList(), 0.0f)
testTotalOrder(listOf(0.0f), floatArrayOf(0.0f).asList(), -0.0f)
testTotalOrder(listOf(Double.NaN), doubleArrayOf(Double.NaN).asList(), Double.NaN)
testTotalOrder(listOf(-0.0), doubleArrayOf(-0.0).asList(), -0.0)
testTotalOrder(listOf(-0.0), doubleArrayOf(-0.0).asList(), 0.0)
testTotalOrder(listOf(0.0), doubleArrayOf(0.0).asList(), 0.0)
testTotalOrder(listOf(0.0), doubleArrayOf(0.0).asList(), -0.0)
}
@Test fun toPrimitiveArray() {
val genericArray: Array<Int> = arrayOf(1, 2, 3)
val primitiveArray: IntArray = genericArray.toIntArray()