Do not use erroneous unsigned/signed comparison in UnsignedArraysTest

The error SIGNED_CONSTANT_CONVERTED_TO_UNSIGNED is suppressed in this
file, and JVM IR is not able to generate comparisons of UInt and Long
(KT-41780).
This commit is contained in:
Alexander Udalov
2020-09-10 13:54:38 +02:00
parent bcd33da6f8
commit ae9c1af883
@@ -297,34 +297,34 @@ class UnsignedArraysTest {
@Test @Test
fun all() { fun all() {
assertTrue(ubyteArrayOf(0, 1, 2).all { it < 3 }) assertTrue(ubyteArrayOf(0u, 1u, 2u).all { it < 3u })
assertFalse(ushortArrayOf(0, 1, 2).all { it % 2u == 0u }) assertFalse(ushortArrayOf(0u, 1u, 2u).all { it % 2u == 0u })
assertTrue(uintArrayOf(0, 2, 4).all { it % 2u == 0u }) assertTrue(uintArrayOf(0u, 2u, 4u).all { it % 2u == 0u })
assertTrue(ulongArrayOf(2, 3, 4).all { it > 1 }) assertTrue(ulongArrayOf(2u, 3u, 4u).all { it > 1uL })
} }
@Test @Test
fun none() { fun none() {
assertTrue(ubyteArrayOf(0, 1, 2).none { it > 2 }) assertTrue(ubyteArrayOf(0u, 1u, 2u).none { it > 2u })
assertFalse(ushortArrayOf(0, 1, 2).none { it % 2u == 0u }) assertFalse(ushortArrayOf(0u, 1u, 2u).none { it % 2u == 0u })
assertTrue(uintArrayOf(0, 2, 4).none { it % 2u != 0u }) assertTrue(uintArrayOf(0u, 2u, 4u).none { it % 2u != 0u })
assertTrue(ulongArrayOf(2, 3, 4).none { it < 2 }) assertTrue(ulongArrayOf(2u, 3u, 4u).none { it < 2uL })
} }
@Test @Test
fun any() { fun any() {
assertTrue(ubyteArrayOf(0, 1, 2).any { it >= 2 }) assertTrue(ubyteArrayOf(0u, 1u, 2u).any { it >= 2u })
assertFalse(ushortArrayOf(0, 1, 2).any { it == 5.toUShort() }) assertFalse(ushortArrayOf(0u, 1u, 2u).any { it == 5.toUShort() })
assertTrue(uintArrayOf(0, 2, 4).any { it % 3u == 1u }) assertTrue(uintArrayOf(0u, 2u, 4u).any { it % 3u == 1u })
assertTrue(ulongArrayOf(2, 3, 4).any { it % 3u == 0.toULong() }) assertTrue(ulongArrayOf(2u, 3u, 4u).any { it % 3uL == 0uL })
} }
@Test @Test
fun count() { fun count() {
assertEquals(1, ubyteArrayOf(0, 1, 2).count { it >= 2 }) assertEquals(1, ubyteArrayOf(0u, 1u, 2u).count { it >= 2u })
assertEquals(2, ushortArrayOf(0, 1, 2).count { it % 2u == 0u }) assertEquals(2, ushortArrayOf(0u, 1u, 2u).count { it % 2u == 0u })
assertEquals(0, uintArrayOf(0, 2, 4).count { it % 2u != 0u }) assertEquals(0, uintArrayOf(0u, 2u, 4u).count { it % 2u != 0u })
assertEquals(3, ulongArrayOf(2, 3, 4).count { it > 1 }) assertEquals(3, ulongArrayOf(2u, 3u, 4u).count { it > 1uL })
} }
@Test @Test
@@ -1075,18 +1075,18 @@ class UnsignedArraysTest {
@Test @Test
fun dropWhile() { fun dropWhile() {
expect(listOf(3.toUByte(), 1.toUByte())) { ubyteArrayOf(2, 3, 1).dropWhile { it < 3 } } expect(listOf(3.toUByte(), 1.toUByte())) { ubyteArrayOf(2u, 3u, 1u).dropWhile { it < 3u } }
expect(listOf()) { ushortArrayOf().dropWhile { it < 3 } } expect(listOf()) { ushortArrayOf().dropWhile { it < 3u } }
expect(listOf()) { uintArrayOf(1).dropWhile { it < 3 } } expect(listOf()) { uintArrayOf(1u).dropWhile { it < 3u } }
expect(listOf(3uL, 1uL)) { ulongArrayOf(2, 3, 1).dropWhile { it < 3 } } expect(listOf(3uL, 1uL)) { ulongArrayOf(2u, 3u, 1u).dropWhile { it < 3uL } }
} }
@Test @Test
fun dropLastWhile() { fun dropLastWhile() {
expect(listOf(2.toUByte(), 3.toUByte())) { ubyteArrayOf(2, 3, 1).dropLastWhile { it < 3 } } expect(listOf(2.toUByte(), 3.toUByte())) { ubyteArrayOf(2u, 3u, 1u).dropLastWhile { it < 3u } }
expect(listOf()) { ushortArrayOf().dropLastWhile { it < 3 } } expect(listOf()) { ushortArrayOf().dropLastWhile { it < 3u } }
expect(listOf()) { uintArrayOf(1).dropLastWhile { it < 3 } } expect(listOf()) { uintArrayOf(1u).dropLastWhile { it < 3u } }
expect(listOf(2uL, 3uL)) { ulongArrayOf(2, 3, 1).dropLastWhile { it < 3 } } expect(listOf(2uL, 3uL)) { ulongArrayOf(2u, 3u, 1u).dropLastWhile { it < 3uL } }
} }
@Test @Test
@@ -1113,42 +1113,50 @@ class UnsignedArraysTest {
@Test @Test
fun takeWhile() { fun takeWhile() {
expect(listOf(2.toUByte())) { ubyteArrayOf(2, 3, 1).takeWhile { it < 3 } } expect(listOf(2.toUByte())) { ubyteArrayOf(2u, 3u, 1u).takeWhile { it < 3u } }
expect(listOf()) { ushortArrayOf().takeWhile { it < 3 } } expect(listOf()) { ushortArrayOf().takeWhile { it < 3u } }
expect(listOf(1u)) { uintArrayOf(1).takeWhile { it < 3 } } expect(listOf(1u)) { uintArrayOf(1u).takeWhile { it < 3u } }
expect(listOf(2uL)) { ulongArrayOf(2, 3, 1).takeWhile { it < 3 } } expect(listOf(2uL)) { ulongArrayOf(2u, 3u, 1u).takeWhile { it < 3uL } }
} }
@Test @Test
fun takeLastWhile() { fun takeLastWhile() {
expect(listOf()) { ubyteArrayOf().takeLastWhile { it < 3 } } expect(listOf()) { ubyteArrayOf().takeLastWhile { it < 3u } }
expect(listOf(1.toUShort())) { ushortArrayOf(1).takeLastWhile { it < 3 } } expect(listOf(1.toUShort())) { ushortArrayOf(1u).takeLastWhile { it < 3u } }
expect(listOf(1u)) { uintArrayOf(2, 3, 1).takeLastWhile { it < 3 } } expect(listOf(1u)) { uintArrayOf(2u, 3u, 1u).takeLastWhile { it < 3u } }
expect(listOf(1uL)) { ulongArrayOf(2, 3, 1).takeLastWhile { it < 3 } } expect(listOf(1uL)) { ulongArrayOf(2u, 3u, 1u).takeLastWhile { it < 3uL } }
} }
@Test @Test
fun filter() { fun filter() {
expect(listOf(3.toByte())) { byteArrayOf(2, 3).filter { it > 2 } } expect(listOf(3.toByte())) { byteArrayOf(2, 3).filter { it > 2 } }
expect(listOf()) { ushortArrayOf().filter { it > 2 } } expect(listOf()) { ushortArrayOf().filter { it > 2u } }
expect(listOf()) { uintArrayOf(1).filter { it > 2 } } expect(listOf()) { uintArrayOf(1u).filter { it > 2u } }
expect(listOf(3uL)) { ulongArrayOf(2, 3).filter { it > 2 } } expect(listOf(3uL)) { ulongArrayOf(2u, 3u).filter { it > 2uL } }
} }
@Test @Test
fun filterIndexed() { fun filterIndexed() {
expect(listOf<UByte>(2, 5, 8)) { ubyteArrayOf(2, 4, 3, 5, 8).filterIndexed { index, value -> index % 2 == (value % 2).toInt() } } expect(listOf<UByte>(2u, 5u, 8u)) {
expect(listOf()) { ushortArrayOf().filterIndexed { i, v -> i > v.toInt() } } ubyteArrayOf(2u, 4u, 3u, 5u, 8u).filterIndexed { index, value -> index % 2 == (value % 2u).toInt() }
expect(listOf<UInt>(2, 5, 8)) { uintArrayOf(2, 4, 3, 5, 8).filterIndexed { index, value -> index % 2 == (value % 2).toInt() } } }
expect(listOf<ULong>(2, 5, 8)) { ulongArrayOf(2, 4, 3, 5, 8).filterIndexed { index, value -> index % 2 == (value % 2).toInt() } } expect(listOf()) {
ushortArrayOf().filterIndexed { i, v -> i > v.toInt() }
}
expect(listOf(2u, 5u, 8u)) {
uintArrayOf(2u, 4u, 3u, 5u, 8u).filterIndexed { index, value -> index % 2 == (value % 2u).toInt() }
}
expect(listOf<ULong>(2u, 5u, 8u)) {
ulongArrayOf(2u, 4u, 3u, 5u, 8u).filterIndexed { index, value -> index % 2 == (value % 2uL).toInt() }
}
} }
@Test @Test
fun filterNot() { fun filterNot() {
expect(listOf(2.toUByte())) { ubyteArrayOf(2, 3).filterNot { it > 2 } } expect(listOf(2.toUByte())) { ubyteArrayOf(2u, 3u).filterNot { it > 2u } }
expect(listOf()) { ushortArrayOf().filterNot { it > 2 } } expect(listOf()) { ushortArrayOf().filterNot { it > 2u } }
expect(listOf(1u)) { uintArrayOf(1).filterNot { it > 2 } } expect(listOf(1u)) { uintArrayOf(1u).filterNot { it > 2u } }
expect(listOf(2uL)) { ulongArrayOf(2, 3).filterNot { it > 2 } } expect(listOf(2uL)) { ulongArrayOf(2u, 3u).filterNot { it > 2uL } }
} }
@Test @Test