summaryrefslogtreecommitdiff
path: root/examples/scala-js/test-suite/src/test/scala/scala/scalajs/testsuite/javalib/StreamsTest.scala
diff options
context:
space:
mode:
Diffstat (limited to 'examples/scala-js/test-suite/src/test/scala/scala/scalajs/testsuite/javalib/StreamsTest.scala')
-rw-r--r--examples/scala-js/test-suite/src/test/scala/scala/scalajs/testsuite/javalib/StreamsTest.scala308
1 files changed, 0 insertions, 308 deletions
diff --git a/examples/scala-js/test-suite/src/test/scala/scala/scalajs/testsuite/javalib/StreamsTest.scala b/examples/scala-js/test-suite/src/test/scala/scala/scalajs/testsuite/javalib/StreamsTest.scala
deleted file mode 100644
index 6975614..0000000
--- a/examples/scala-js/test-suite/src/test/scala/scala/scalajs/testsuite/javalib/StreamsTest.scala
+++ /dev/null
@@ -1,308 +0,0 @@
-/* __ *\
-** ________ ___ / / ___ __ ____ Scala.js Test Suite **
-** / __/ __// _ | / / / _ | __ / // __/ (c) 2013, LAMP/EPFL **
-** __\ \/ /__/ __ |/ /__/ __ |/_// /_\ \ http://scala-js.org/ **
-** /____/\___/_/ |_/____/_/ | |__/ /____/ **
-** |/____/ **
-\* */
-package scala.scalajs.testsuite.javalib
-
-import java.io._
-
-import scala.language.implicitConversions
-
-import scala.scalajs.js
-
-import org.scalajs.jasminetest.JasmineTest
-
-/** Tests for our implementation of java.io._ stream classes */
-object StreamsTest extends JasmineTest with CommonStreamsTests {
-
- // Need to define this again, otherwise conversion on function
- // triggers for Seqs
- override implicit def traversable2array[T](
- a: TraversableOnce[T]): js.Array[T] = super.traversable2array(a)
-
- describe("java.io.InputStream") {
-
- class DummyInputStream(val length: Int) extends InputStream {
- private var i: Int = 0
- def read(): Int = if (i < length) { i += 1; i } else -1
- }
-
- it("should provide a default implementation of `read` to an array") {
- val stream = new DummyInputStream(200)
-
- val buf = new Array[Byte](50)
-
- // Should read first 50 bytes (next: 51)
- expect(stream.read(buf)).toBe(50)
- expect(buf).toEqual((1 to 50))
-
- // Should read another 20 (next: 71)
- expect(stream.read(buf, 10, 20)).toBe(20)
- expect(buf).toEqual((1 to 10) ++ (51 to 70) ++ (31 to 50))
-
- // Test some Exception conditions
- expect(() => stream.read(null, 0, 10)).toThrow
- expect(() => stream.read(buf, -1, 10)).toThrow
- expect(() => stream.read(buf, 0, -1)).toThrow
- expect(() => stream.read(buf, 10, 100)).toThrow
- // Buffer should be unmodified
- expect(buf).toEqual((1 to 10) ++ (51 to 70) ++ (31 to 50))
-
- // Should read nothing (next: 71)
- expect(stream.read(buf, 10, 0)).toBe(0)
- expect(buf).toEqual((1 to 10) ++ (51 to 70) ++ (31 to 50))
-
- // Skip 40 bytes (next: 111)
- expect(stream.skip(40)).toBe(40)
-
- // Read 50 bytes, should wrap (next: 161)
- expect(stream.read(buf)).toBe(50)
- expect(buf).toEqual((111 to 127) ++ (-128 to -96))
-
- // Read 45 bytes, should read 40 (next: EOF)
- expect(stream.read(buf, 5, 45)).toBe(40)
- expect(buf).toEqual((111 to 115) ++ (-95 to -56) ++ (-100 to -96))
-
- // Read 50 bytes, should read nothing
- expect(stream.read(buf)).toBe(-1)
- expect(stream.read(buf, 0, 0)).toBe(0)
- expect(buf).toEqual((111 to 115) ++ (-95 to -56) ++ (-100 to -96))
- }
-
- it("should provide a default implementation of `skip`") {
- val stream = new DummyInputStream(10)
-
- expect(stream.skip(5)).toBe(5)
- expect(stream.read()).toBe(6)
- expect(stream.skip(1)).toBe(1)
- expect(stream.read()).toBe(8)
- expect(stream.skip(-5)).toBe(0)
- expect(stream.read()).toBe(9)
- expect(stream.skip(0)).toBe(0)
- expect(stream.read()).toBe(10)
- expect(stream.skip(10)).toBe(0)
- }
-
- }
-
- describe("java.io.ByteArrayInputStream") {
- byteArrayInputStreamLikeTests(seq =>
- new ByteArrayInputStream(seq.map(_.toByte).toArray))
- }
-
- describe("java.io.ByteArrayOutputStream") {
-
- it("should support simple write(x: Int)") {
- val out = new ByteArrayOutputStream()
-
- for (i <- 0 to 9)
- out.write(i)
-
- expect(out.toByteArray).toEqual(js.Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9))
- }
-
- it("should support simple write(x: Array[Byte])") {
- val out = new ByteArrayOutputStream()
- val arr = Array[Byte](0, 1, 2, 3, 4, 5)
-
- out.write(arr, 1, 4)
- out.write(arr)
-
- expect(out.toByteArray).toEqual(js.Array(1, 2, 3, 4, 0, 1, 2, 3, 4, 5))
- }
-
- it("should support write(x: Array[Byte]) with buffer resize") {
- val out = new ByteArrayOutputStream(16)
- val arr = Array[Byte](0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
-
- out.write(arr)
- out.write(arr)
-
- expect(out.toByteArray).toEqual(arr ++ arr)
- }
-
- it("should support toString (with UTF8)") {
- val buf = Array[Byte](72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100,
- 46, -29, -127, -109, -29, -126, -109, -29, -127, -85, -29, -127, -95,
- -29, -127, -81, -26, -105, -91, -26, -100, -84, -24, -86, -98, -29,
- -126, -110, -24, -86, -83, -29, -126, -127, -29, -127, -66, -29, -127,
- -103, -29, -127, -117, -29, -128, -126)
-
- val out = new ByteArrayOutputStream()
- out.write(buf)
-
- expect(out.toString).toEqual("Hello World.こんにちは日本語を読めますか。")
- }
-
- it("should support reset()") {
- val out = new ByteArrayOutputStream()
- for (i <- 0 to 9) out.write(i)
- out.reset()
- for (i <- 0 to 9) out.write(i)
-
- expect(out.toByteArray).toEqual(js.Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9))
- }
-
- }
-
-}
-
-/** tests also used by typedarray.ArrayBufferInputStreamTests */
-trait CommonStreamsTests extends JasmineTest {
-
- implicit def traversable2array[T](a: TraversableOnce[T]): js.Array[T] = {
- import js.JSConverters._
- a.toJSArray
- }
-
- implicit def array2array[T](a: Array[T]): js.Array[T] = {
- import js.JSConverters._
- a.toJSArray
- }
-
- def byteArrayInputStreamLikeTests(mkStream: Seq[Int] => InputStream): Unit = {
- val length = 50
- def newStream = mkStream(1 to length)
-
- it("should provide `read()`") {
- val stream = newStream
-
- for (i <- 1 to length)
- expect(stream.read()).toBe(i)
-
- for (_ <- 1 to 5)
- expect(stream.read()).toBe(-1)
- }
-
- it("should provide `read(buf)`") {
- val stream = newStream
- val buf = new Array[Byte](10)
-
- expect(stream.read(buf)).toBe(10)
- expect(buf).toEqual(1 to 10)
-
- expect(stream.skip(35)).toBe(35)
-
- expect(stream.read(buf)).toBe(5)
- expect(buf).toEqual((46 to 50) ++ (6 to 10))
-
- expect(stream.read(buf)).toBe(-1)
- expect(stream.read()).toBe(-1)
- }
-
- it("should provide full-argument `read`") {
- val stream = newStream
- val buf = new Array[Byte](20)
-
- expect(stream.read(buf, 10, 5)).toBe(5)
- expect(buf).toEqual(Seq.fill(10)(0) ++ (1 to 5) ++ Seq.fill(5)(0))
-
- expect(stream.read(buf, 0, 20)).toBe(20)
- expect(buf).toEqual(6 to 25)
-
- expect(stream.read(buf, 10, 0)).toBe(0)
- expect(buf).toEqual(6 to 25)
-
- expect(() => stream.read(buf, -1, 0)).toThrow
- expect(() => stream.read(buf, 0, -1)).toThrow
- expect(() => stream.read(buf, 100, 0)).toThrow
- expect(() => stream.read(buf, 10, 100)).toThrow
- expect(buf).toEqual(6 to 25)
-
- expect(stream.skip(20)).toBe(20)
-
- expect(stream.read(buf, 0, 10)).toBe(5)
- expect(buf).toEqual((46 to 50) ++ (11 to 25))
-
- expect(stream.read(buf, 0, 10)).toBe(-1)
- expect(stream.read(buf, 0, 0)).toBe(0)
- expect(buf).toEqual((46 to 50) ++ (11 to 25))
-
- }
-
- it("should provide `available`") {
- val stream = newStream
-
- def mySkip(n: Int) = for (_ <- 1 to n) expect(stream.read()).not.toBe(-1)
- def check(n: Int) = expect(stream.available).toBe(n)
-
- check(50)
- mySkip(5)
- check(45)
- expect(stream.skip(10)).toBe(10)
- check(35)
- mySkip(30)
- check(5)
- expect(stream.skip(20)).toBe(5)
- check(0)
- }
-
- it("should provide `skip`") {
- val stream = newStream
-
- expect(stream.skip(7)).toBe(7)
-
- for (i <- 8 to 32)
- expect(stream.read()).toBe(i)
-
- expect(stream.skip(0)).toBe(0)
- expect(stream.read()).toBe(33)
- expect(stream.skip(-4)).toBe(0)
- expect(stream.read()).toBe(34)
-
- expect(stream.skip(30)).toBe(16)
- expect(stream.skip(30)).toBe(0)
- }
-
- it("should return true from `markSupported`") {
- expect(newStream.markSupported).toBe(true)
- }
-
- it("should provide no-op `close`") {
- val stream = newStream
-
- for (i <- 1 to length) {
- stream.close()
- expect(stream.read()).toBe(i)
- }
- }
-
- it("should provide `mark`/`reset`") {
- val stream = newStream
-
- def read(range: Range) = for (i <- range) expect(stream.read()).toBe(i)
-
- read(1 to 10)
- stream.reset() // mark must be 0 at creation
- read(1 to 5)
- stream.mark(length)
- read(6 to 22)
- stream.reset()
- read(6 to 20)
- stream.reset()
- read(6 to 25)
- stream.reset()
- expect(stream.skip(40)).toBe(40)
- stream.mark(length)
- read(46 to 50)
- stream.reset()
- read(46 to 50)
- stream.mark(length)
- expect(stream.read()).toBe(-1)
- stream.reset()
- expect(stream.read()).toBe(-1)
- }
-
- it("should return positive integers when calling read") {
- val stream = mkStream(Seq(-1, -2, -3))
- expect(stream.read()).toBe(255)
- expect(stream.read()).toBe(254)
- expect(stream.read()).toBe(253)
- expect(stream.read()).toBe(-1)
- }
- }
-
-}