Nullable Array.contentEquals/contentHashCode/contentToString #KT-34161

This commit is contained in:
Abduqodiri Qurbonzoda
2020-02-27 14:44:33 +03:00
parent 179ec41a6b
commit e632d58936
16 changed files with 1897 additions and 133 deletions
@@ -220,6 +220,11 @@ class ArraysTest {
checkArray(longArrayOf(1, 2, 3), { copyOf() }, { toList() }, { a1, a2 -> a1 contentEquals a2 }, { reverse() })
checkArray(doubleArrayOf(Double.NaN, -0.0, 0.0, Double.POSITIVE_INFINITY, 1.0),
{ copyOf() }, { toList() }, { a1, a2 -> a1 contentEquals a2 }, { this[1] = 0.0 })
assertTrue((null as BooleanArray?) contentEquals null)
assertFalse(null contentEquals shortArrayOf(1))
assertFalse((emptyArray<String>() as Array<String>?) contentEquals null)
assertFalse(null.contentEquals(arrayOf("0", null)))
}
@Test fun contentDeepEquals() {
@@ -245,6 +250,11 @@ class ArraysTest {
arr5[0][0] = 0.0
assertTrue(arr5 contentDeepEquals arr6)
assertTrue((null as Array<String>?) contentDeepEquals null)
assertTrue(null contentDeepEquals (null as Array<String>?))
assertFalse(arrayOf("") contentDeepEquals null)
assertFalse(null contentDeepEquals arrayOf<Any?>(null))
}
@Test fun contentToString() {
@@ -253,6 +263,8 @@ class ArraysTest {
intArrayOf(1, 10, 42).let { arr -> assertEquals(arr.asList().toString(), arr.contentToString()) }
longArrayOf(1L, 5L, Long.MAX_VALUE).let { arr -> assertEquals(arr.asList().toString(), arr.contentToString()) }
doubleArrayOf(0.0, Double.MAX_VALUE, Double.POSITIVE_INFINITY, Double.NaN).let { arr -> assertEquals(arr.asList().toString(), arr.contentToString()) }
(null as ByteArray?).let { arr -> assertEquals(arr?.asList().toString(), arr.contentToString()) }
}
@Test fun contentDeepToString() {
@@ -263,6 +275,8 @@ class ArraysTest {
doubleArrayOf(3.14), floatArrayOf(1.25f)
)
assertEquals("[aa, 1, null, [[foo]], [d], [false], [-1], [-1], [-1], [-1], [4294967295], [18446744073709551615], [65535], [255], [3.14], [1.25]]", arr.contentDeepToString())
assertEquals("null", (null as Array<Int>?).contentDeepToString())
}
@Test fun contentDeepToStringNoRecursion() {
@@ -290,6 +304,8 @@ class ArraysTest {
charArrayOf('a', Char.MAX_VALUE, Char.MIN_VALUE).let { assertEquals(it.toList().hashCode(), it.contentHashCode()) }
doubleArrayOf(1.0, -0.0, 0.0, Double.NaN, Double.POSITIVE_INFINITY).let { assertEquals(it.toList().hashCode(), it.contentHashCode()) }
floatArrayOf(1.0f, -0.0f, 0.0f, Float.NaN, Float.POSITIVE_INFINITY).let { assertEquals(it.toList().hashCode(), it.contentHashCode()) }
(null as IntArray?).let { assertEquals(it?.toList().hashCode(), it.contentHashCode()) }
}
@Test fun contentDeepHashCode() {
@@ -310,6 +326,8 @@ class ArraysTest {
val uintList2 = listOf(listOf(1u, 2u), listOf(3u, 4u))
assertEquals(uintList2.hashCode(), uintArray2.contentDeepHashCode())
assertEquals(0, (null as Array<Any>?).contentDeepHashCode())
}
@@ -86,6 +86,8 @@ class UnsignedArraysTest {
uintArrayOf(1u, UInt.MAX_VALUE, UInt.MIN_VALUE).let { assertEquals(it.toList().hashCode(), it.contentHashCode()) }
ushortArrayOf(1u, UShort.MAX_VALUE, UShort.MIN_VALUE).let { assertEquals(it.toList().hashCode(), it.contentHashCode()) }
ubyteArrayOf(1u, UByte.MAX_VALUE, UByte.MIN_VALUE).let { assertEquals(it.toList().hashCode(), it.contentHashCode()) }
(null as ULongArray?).let { assertEquals(it?.toList().hashCode(), it.contentHashCode()) }
}
@Test
@@ -94,6 +96,8 @@ class UnsignedArraysTest {
uintArrayOf(1u, UInt.MAX_VALUE, UInt.MIN_VALUE).let { assertEquals(it.toList().toString(), it.contentToString()) }
ushortArrayOf(1u, UShort.MAX_VALUE, UShort.MIN_VALUE).let { assertEquals(it.toList().toString(), it.contentToString()) }
ubyteArrayOf(1u, UByte.MAX_VALUE, UByte.MIN_VALUE).let { assertEquals(it.toList().toString(), it.contentToString()) }
(null as UIntArray?).let { assertEquals(it?.toList().toString(), it.contentToString()) }
}
@Test
@@ -114,6 +118,10 @@ class UnsignedArraysTest {
assertTrue(arr contentEquals UByteArray(arr.size, arr::get))
assertFalse(arr contentEquals UByteArray(arr.size - 1, arr::get))
}
assertTrue((null as UShortArray?) contentEquals null)
assertFalse(null contentEquals ubyteArrayOf(1u))
assertFalse(ulongArrayOf() contentEquals null)
}
@Test