Files

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)
}
}
}