| /* |
| * Copyright 2016-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. |
| */ |
| |
| package kotlinx.coroutines.experimental.io |
| |
| import kotlinx.coroutines.experimental.* |
| import org.junit.Test |
| import java.util.* |
| import kotlin.test.assertEquals |
| import kotlin.test.assertFalse |
| import kotlin.test.assertTrue |
| |
| class ContentByteBufferTest : TestBase() { |
| @Test |
| fun testEmptyContent() = runBlocking { |
| val ch = ByteReadChannel(ByteArray(0)) |
| assertEquals(0, ch.availableForRead) |
| assertEquals(-1, ch.readAvailable(ByteBuffer.allocate(100))) |
| assertTrue { ch.isClosedForRead } |
| } |
| |
| @Test |
| fun testSingleByteContent() = runBlocking { |
| val ch = ByteReadChannel(byteArrayOf(1)) |
| assertEquals(1, ch.availableForRead) |
| assertFalse { ch.isClosedForRead } |
| assertEquals(1, ch.readAvailable(ByteBuffer.allocate(100))) |
| assertEquals(0, ch.availableForRead) |
| assertTrue { ch.isClosedForRead } |
| } |
| |
| @Test |
| fun testSingleByteContent2() = runBlocking { |
| val ch = ByteReadChannel(byteArrayOf(0x34)) |
| assertEquals(1, ch.availableForRead) |
| assertFalse { ch.isClosedForRead } |
| assertEquals(0x34, ch.readByte()) |
| assertEquals(0, ch.availableForRead) |
| assertTrue { ch.isClosedForRead } |
| } |
| |
| @Test |
| fun testMultipleByteContent2() = runBlocking { |
| val arr = ByteArray(16) |
| Random().nextBytes(arr) |
| val ch = ByteReadChannel(arr) |
| assertEquals(16, ch.availableForRead) |
| assertFalse { ch.isClosedForRead } |
| ch.readByte() |
| ch.readShort() |
| ch.readInt() |
| ch.readLong() |
| ch.readByte() |
| assertTrue { ch.isClosedForRead } |
| } |
| } |