@@ -8,6 +8,7 @@ package aws.smithy.kotlin.runtime.content
88import aws.smithy.kotlin.runtime.testing.RandomTempFile
99import kotlinx.coroutines.test.runTest
1010import java.io.ByteArrayOutputStream
11+ import java.io.InputStream
1112import java.io.OutputStream
1213import java.nio.file.Files
1314import kotlin.test.*
@@ -159,7 +160,7 @@ class ByteStreamJVMTest {
159160 binaryData.inputStream().use { inputStream ->
160161 val byteStream = inputStream.asByteStream()
161162 assertNull(byteStream.contentLength)
162- assertTrue (byteStream.isOneShot)
163+ assertFalse (byteStream.isOneShot)
163164
164165 val output = byteStream.toByteArray()
165166 assertContentEquals(binaryData, output)
@@ -169,6 +170,23 @@ class ByteStreamJVMTest {
169170 @Test
170171 fun testInputStreamAsByteStreamWithLength () = runTest {
171172 binaryData.inputStream().use { inputStream ->
173+ val byteStream = inputStream.asByteStream(binaryData.size.toLong())
174+ assertEquals(binaryData.size.toLong(), byteStream.contentLength)
175+ assertFalse(byteStream.isOneShot)
176+
177+ val output = byteStream.toByteArray()
178+ assertContentEquals(binaryData, output)
179+ }
180+ }
181+
182+ @Test
183+ fun testOneShotInputStream () = runTest {
184+ class NonReplayableInputStream (val delegate : InputStream ) : InputStream() {
185+ override fun read (): Int = delegate.read()
186+ override fun markSupported (): Boolean = false
187+ }
188+
189+ NonReplayableInputStream (binaryData.inputStream()).use { inputStream ->
172190 val byteStream = inputStream.asByteStream(binaryData.size.toLong())
173191 assertEquals(binaryData.size.toLong(), byteStream.contentLength)
174192 assertTrue(byteStream.isOneShot)
0 commit comments