diff options
Diffstat (limited to 'okio/src/jvmTest/kotlin/okio/OkioKotlinTest.kt')
-rw-r--r-- | okio/src/jvmTest/kotlin/okio/OkioKotlinTest.kt | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/okio/src/jvmTest/kotlin/okio/OkioKotlinTest.kt b/okio/src/jvmTest/kotlin/okio/OkioKotlinTest.kt new file mode 100644 index 00000000..58c6bcad --- /dev/null +++ b/okio/src/jvmTest/kotlin/okio/OkioKotlinTest.kt @@ -0,0 +1,126 @@ +/* + * Copyright (C) 2018 Square, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package okio + +import org.assertj.core.api.Assertions.assertThat +import org.junit.Ignore +import org.junit.Rule +import org.junit.Test +import org.junit.rules.TemporaryFolder +import java.io.ByteArrayInputStream +import java.io.ByteArrayOutputStream +import java.io.File +import java.net.Socket +import java.nio.file.StandardOpenOption +import java.nio.file.StandardOpenOption.APPEND + +class OkioKotlinTest { + @get:Rule val temp = TemporaryFolder() + + @Test fun outputStreamSink() { + val baos = ByteArrayOutputStream() + val sink = baos.sink() + sink.write(Buffer().writeUtf8("a"), 1L) + assertThat(baos.toByteArray()).isEqualTo(byteArrayOf(0x61)) + } + + @Test fun inputStreamSource() { + val bais = ByteArrayInputStream(byteArrayOf(0x61)) + val source = bais.source() + val buffer = Buffer() + source.read(buffer, 1) + assertThat(buffer.readUtf8()).isEqualTo("a") + } + + @Test fun fileSink() { + val file = temp.newFile() + val sink = file.sink() + sink.write(Buffer().writeUtf8("a"), 1L) + assertThat(file.readText()).isEqualTo("a") + } + + @Test fun fileAppendingSink() { + val file = temp.newFile() + file.writeText("a") + val sink = file.sink(append = true) + sink.write(Buffer().writeUtf8("b"), 1L) + sink.close() + assertThat(file.readText()).isEqualTo("ab") + } + + @Test fun fileSource() { + val file = temp.newFile() + file.writeText("a") + val source = file.source() + val buffer = Buffer() + source.read(buffer, 1L) + assertThat(buffer.readUtf8()).isEqualTo("a") + } + + @Test fun pathSink() { + val file = temp.newFile() + val sink = file.toPath().sink() + sink.write(Buffer().writeUtf8("a"), 1L) + assertThat(file.readText()).isEqualTo("a") + } + + @Test fun pathSinkWithOptions() { + val file = temp.newFile() + file.writeText("a") + val sink = file.toPath().sink(APPEND) + sink.write(Buffer().writeUtf8("b"), 1L) + assertThat(file.readText()).isEqualTo("ab") + } + + @Test fun pathSource() { + val file = temp.newFile() + file.writeText("a") + val source = file.toPath().source() + val buffer = Buffer() + source.read(buffer, 1L) + assertThat(buffer.readUtf8()).isEqualTo("a") + } + + @Ignore("Not sure how to test this") + @Test fun pathSourceWithOptions() { + val folder = temp.newFolder() + val file = File(folder, "new.txt") + file.toPath().source(StandardOpenOption.CREATE_NEW) + // This still throws NoSuchFileException... + } + + @Test fun socketSink() { + val baos = ByteArrayOutputStream() + val socket = object : Socket() { + override fun getOutputStream() = baos + } + val sink = socket.sink() + sink.write(Buffer().writeUtf8("a"), 1L) + assertThat(baos.toByteArray()).isEqualTo(byteArrayOf(0x61)) + } + + @Test fun socketSource() { + val bais = ByteArrayInputStream(byteArrayOf(0x61)) + val socket = object : Socket() { + override fun getInputStream() = bais + } + val source = socket.source() + val buffer = Buffer() + source.read(buffer, 1L) + assertThat(buffer.readUtf8()).isEqualTo("a") + } +} |