105 lines
3.1 KiB
Kotlin
105 lines
3.1 KiB
Kotlin
/*
|
|
* Copyright 2010-2023 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.
|
|
*/
|
|
|
|
package test.collections
|
|
|
|
import kotlin.test.*
|
|
import kotlinx.cinterop.*
|
|
|
|
class ImmutableBlobTest {
|
|
@Test fun iterator() {
|
|
val blob = immutableBlobOf(1, 2, 3)
|
|
val actual = buildList {
|
|
for (b in blob) {
|
|
add(b)
|
|
}
|
|
}
|
|
assertContentEquals(listOf<Byte>(1, 2, 3), actual)
|
|
}
|
|
|
|
@Test fun toByteArray() {
|
|
val blob = immutableBlobOf(1, 2, 3)
|
|
val actual = blob.toByteArray()
|
|
assertContentEquals(byteArrayOf(1, 2, 3), actual)
|
|
}
|
|
|
|
@Test fun toByteArraySlice() {
|
|
val blob = immutableBlobOf(0, 0)
|
|
val arr = blob.toByteArray(0, 1)
|
|
assertEquals(1, arr.size)
|
|
assertEquals(0, arr[0])
|
|
assertFailsWith<IndexOutOfBoundsException> {
|
|
blob.toByteArray(-1, 1)
|
|
}
|
|
assertFailsWith<IndexOutOfBoundsException> {
|
|
blob.toByteArray(0, -1)
|
|
}
|
|
assertFailsWith<IndexOutOfBoundsException> {
|
|
blob.toByteArray(0, 10)
|
|
}
|
|
assertFailsWith<IndexOutOfBoundsException> {
|
|
blob.toByteArray(10, 11)
|
|
}
|
|
assertFailsWith<IndexOutOfBoundsException> {
|
|
blob.toByteArray(10, 1)
|
|
}
|
|
}
|
|
|
|
@Test fun toUByteArraySlice() {
|
|
val blob = immutableBlobOf(0, 0)
|
|
val arr = blob.toUByteArray(0, 1)
|
|
assertEquals(1, arr.size)
|
|
assertEquals(0U, arr[0])
|
|
assertFailsWith<IndexOutOfBoundsException> {
|
|
blob.toUByteArray(-1, 1)
|
|
}
|
|
assertFailsWith<IndexOutOfBoundsException> {
|
|
blob.toUByteArray(0, -1)
|
|
}
|
|
assertFailsWith<IndexOutOfBoundsException> {
|
|
blob.toUByteArray(0, 10)
|
|
}
|
|
assertFailsWith<IndexOutOfBoundsException> {
|
|
blob.toUByteArray(10, 11)
|
|
}
|
|
assertFailsWith<IndexOutOfBoundsException> {
|
|
blob.toUByteArray(10, 1)
|
|
}
|
|
}
|
|
|
|
@Test fun asCPointer() {
|
|
val blob = immutableBlobOf(0, 0)
|
|
assertEquals(0, blob.asCPointer(0).pointed.value)
|
|
assertFailsWith<IndexOutOfBoundsException> {
|
|
blob.asCPointer(10)
|
|
}
|
|
assertFailsWith<IndexOutOfBoundsException> {
|
|
blob.asCPointer(-1)
|
|
}
|
|
assertFailsWith<IndexOutOfBoundsException> {
|
|
blob.asCPointer(Int.MAX_VALUE)
|
|
}
|
|
assertFailsWith<IndexOutOfBoundsException> {
|
|
blob.asCPointer(Int.MIN_VALUE)
|
|
}
|
|
}
|
|
|
|
@Test fun asUCPointer() {
|
|
val blob = immutableBlobOf(0, 0)
|
|
assertEquals(0U, blob.asUCPointer(0).pointed.value)
|
|
assertFailsWith<IndexOutOfBoundsException> {
|
|
blob.asUCPointer(10)
|
|
}
|
|
assertFailsWith<IndexOutOfBoundsException> {
|
|
blob.asUCPointer(-1)
|
|
}
|
|
assertFailsWith<IndexOutOfBoundsException> {
|
|
blob.asUCPointer(Int.MAX_VALUE)
|
|
}
|
|
assertFailsWith<IndexOutOfBoundsException> {
|
|
blob.asUCPointer(Int.MIN_VALUE)
|
|
}
|
|
}
|
|
} |