Fix UArray.containsAll(Collection<Any?>)

This commit is contained in:
Abduqodiri Qurbonzoda
2019-02-20 04:10:02 +03:00
committed by Ilya Gorbunov
parent 60e83383ad
commit c1b523ddef
6 changed files with 29 additions and 5 deletions
+4 -1
View File
@@ -353,7 +353,10 @@ class UnsignedArrayGenerator(val type: UnsignedType, out: PrintWriter) : BuiltIn
override fun contains(element: $elementType): Boolean = storage.contains(element.to$storageElementType())
override fun containsAll(elements: Collection<$elementType>): Boolean = elements.all { storage.contains(it.to$storageElementType()) }
override fun containsAll(elements: Collection<$elementType>): Boolean {
if ((elements as Collection<Any?>).any { it as? $elementType == null }) return false
return elements.all { storage.contains(it.to$storageElementType()) }
}
override fun isEmpty(): Boolean = this.storage.size == 0"""
)
@@ -6,10 +6,19 @@
@file:Suppress("SIGNED_CONSTANT_CONVERTED_TO_UNSIGNED")
package test.collections
import test.collections.behaviors.collectionBehavior
import kotlin.test.*
class UnsignedArraysTest {
@Test
fun collectionBehavior() {
compare(listOf<UByte>(), ubyteArrayOf()) { this.collectionBehavior() }
compare(listOf<UShort>(1), ushortArrayOf(1)) { this.collectionBehavior() }
compare(listOf<UInt>(1, 2), uintArrayOf(1u, 2u)) { this.collectionBehavior() }
compare(listOf<ULong>(1, 2, 3), ulongArrayOf(1u, 2u, 3u)) { this.collectionBehavior() }
}
@Test
fun ubyteArrayInit() {
val zeroArray = UByteArray(42)
@@ -39,7 +39,10 @@ internal constructor(@PublishedApi internal val storage: ByteArray) : Collection
override fun contains(element: UByte): Boolean = storage.contains(element.toByte())
override fun containsAll(elements: Collection<UByte>): Boolean = elements.all { storage.contains(it.toByte()) }
override fun containsAll(elements: Collection<UByte>): Boolean {
if ((elements as Collection<Any?>).any { it as? UByte == null }) return false
return elements.all { storage.contains(it.toByte()) }
}
override fun isEmpty(): Boolean = this.storage.size == 0
}
@@ -39,7 +39,10 @@ internal constructor(@PublishedApi internal val storage: IntArray) : Collection<
override fun contains(element: UInt): Boolean = storage.contains(element.toInt())
override fun containsAll(elements: Collection<UInt>): Boolean = elements.all { storage.contains(it.toInt()) }
override fun containsAll(elements: Collection<UInt>): Boolean {
if ((elements as Collection<Any?>).any { it as? UInt == null }) return false
return elements.all { storage.contains(it.toInt()) }
}
override fun isEmpty(): Boolean = this.storage.size == 0
}
@@ -39,7 +39,10 @@ internal constructor(@PublishedApi internal val storage: LongArray) : Collection
override fun contains(element: ULong): Boolean = storage.contains(element.toLong())
override fun containsAll(elements: Collection<ULong>): Boolean = elements.all { storage.contains(it.toLong()) }
override fun containsAll(elements: Collection<ULong>): Boolean {
if ((elements as Collection<Any?>).any { it as? ULong == null }) return false
return elements.all { storage.contains(it.toLong()) }
}
override fun isEmpty(): Boolean = this.storage.size == 0
}
@@ -39,7 +39,10 @@ internal constructor(@PublishedApi internal val storage: ShortArray) : Collectio
override fun contains(element: UShort): Boolean = storage.contains(element.toShort())
override fun containsAll(elements: Collection<UShort>): Boolean = elements.all { storage.contains(it.toShort()) }
override fun containsAll(elements: Collection<UShort>): Boolean {
if ((elements as Collection<Any?>).any { it as? UShort == null }) return false
return elements.all { storage.contains(it.toShort()) }
}
override fun isEmpty(): Boolean = this.storage.size == 0
}