diff options
Diffstat (limited to 'examples/scala-js/test-suite/src/test/scala/scala/scalajs/testsuite/typedarray/DataViewTest.scala')
-rw-r--r-- | examples/scala-js/test-suite/src/test/scala/scala/scalajs/testsuite/typedarray/DataViewTest.scala | 275 |
1 files changed, 275 insertions, 0 deletions
diff --git a/examples/scala-js/test-suite/src/test/scala/scala/scalajs/testsuite/typedarray/DataViewTest.scala b/examples/scala-js/test-suite/src/test/scala/scala/scalajs/testsuite/typedarray/DataViewTest.scala new file mode 100644 index 0000000..76c5639 --- /dev/null +++ b/examples/scala-js/test-suite/src/test/scala/scala/scalajs/testsuite/typedarray/DataViewTest.scala @@ -0,0 +1,275 @@ +/* __ *\ +** ________ ___ / / ___ __ ____ Scala.js Test Suite ** +** / __/ __// _ | / / / _ | __ / // __/ (c) 2013, LAMP/EPFL ** +** __\ \/ /__/ __ |/ /__/ __ |/_// /_\ \ http://scala-js.org/ ** +** /____/\___/_/ |_/____/_/ | |__/ /____/ ** +** |/____/ ** +\* */ +package scala.scalajs.testsuite.typedarray + +import org.scalajs.jasminetest.JasmineTest + +import scala.scalajs.js.typedarray._ + +object DataViewTest extends JasmineTest { + + when("typedarray"). + describe("DataView") { + + it("should provide an ArrayBuffer only constructor") { + val buf = new ArrayBuffer(10) + val view = new DataView(buf) + expect(view.isInstanceOf[DataView]).toBeTruthy + expect(view.byteLength).toBe(10) + expect(view.byteOffset).toBe(0) + expect(view.getInt8(0)).toBe(0) + } + + it("should provide an ArrayBuffer and offset constructor") { + val buf = new ArrayBuffer(10) + val view = new DataView(buf, 2) + expect(view.isInstanceOf[DataView]).toBeTruthy + expect(view.byteLength).toBe(8) + expect(view.byteOffset).toBe(2) + expect(view.getInt8(0)).toBe(0) + } + + it("should provide an ArrayBuffer, offset and length constructor") { + val buf = new ArrayBuffer(10) + val view = new DataView(buf, 3, 2) + expect(view.isInstanceOf[DataView]).toBeTruthy + expect(view.byteLength).toBe(2) + expect(view.byteOffset).toBe(3) + expect(view.getInt8(0)).toBe(0) + } + + it("should provide `getInt8`") { + val view = new DataView(new ArrayBuffer(4)) + + view.setInt8(0, 1) + view.setInt8(1, 127) + view.setInt8(3, -50) + + expect(view.getInt8(0)).toBe(1) + expect(view.getInt8(1)).toBe(127) + expect(view.getInt8(2)).toBe(0) + expect(view.getInt8(3)).toBe(-50) + } + + it("should provide `getUint8`") { + val view = new DataView(new ArrayBuffer(4)) + + view.setInt8(0, 1) + view.setInt8(1, -127) + + expect(view.getUint8(0)).toBe(1) + expect(view.getUint8(1)).toBe(129) + expect(view.getUint8(2)).toBe(0) + } + + it("should provide `getInt16`") { + val view = new DataView(new ArrayBuffer(4)) + + view.setUint8(0, 0x01) + view.setUint8(1, 0xFF) + view.setUint8(2, 0xB3) + view.setUint8(3, 0x30) + + expect(view.getInt16(0)).toBe(0x01FF) + expect(view.getInt16(0, true)).toBe(-255) + expect(view.getInt16(1)).toBe(-77) + expect(view.getInt16(2, true)).toBe(0x30B3) + } + + it("should provide `getUint16`") { + val view = new DataView(new ArrayBuffer(4)) + + view.setUint8(0, 0x01) + view.setUint8(1, 0xFF) + view.setUint8(2, 0xB3) + view.setUint8(3, 0x30) + + expect(view.getUint16(0)).toBe(0x01FF) + expect(view.getUint16(0, true)).toBe(0xFF01) + expect(view.getUint16(1)).toBe(0xFFB3) + expect(view.getUint16(2, true)).toBe(0x30B3) + } + + it("should provide `getInt32`") { + val view = new DataView(new ArrayBuffer(5)) + + view.setUint8(0, 0x01) + view.setUint8(1, 0xFF) + view.setUint8(2, 0xB3) + view.setUint8(3, 0x30) + view.setUint8(4, 0x1A) + + expect(view.getInt32(0)).toBe(0x01FFB330) + expect(view.getInt32(0, true)).toBe(0x30B3FF01) + expect(view.getInt32(1)).toBe(0xFFB3301A) // is negative since Int + expect(view.getInt32(1, true)).toBe(0x1A30B3FF) + } + + it("should provide `getUint32`") { + val view = new DataView(new ArrayBuffer(5)) + + view.setUint8(0, 0x01) + view.setUint8(1, 0xFF) + view.setUint8(2, 0xB3) + view.setUint8(3, 0x30) + view.setUint8(4, 0x1A) + + expect(view.getUint32(0)).toBe(0x01FFB330) + expect(view.getUint32(0, true)).toBe(0x30B3FF01) + expect(view.getUint32(1)).toBe(0xFFB3301AL.toDouble) + expect(view.getUint32(1, true)).toBe(0x1A30B3FF) + } + + it("should provide `getFloat32`") { + val view = new DataView(new ArrayBuffer(5)) + + view.setFloat32(0, 0.1f) + + expect(view.getFloat32(0)).toBeCloseTo(0.1, 7) + expect(view.getFloat32(1)).not.toBeCloseTo(0.1, 7) + expect(view.getFloat32(0, true)).not.toBeCloseTo(0.1, 7) + expect(view.getFloat32(1, true)).not.toBeCloseTo(0.1, 7) + } + + it("should provide `getFloat64`") { + val view = new DataView(new ArrayBuffer(9)) + + view.setFloat64(0, 0.5) + + expect(view.getFloat64(0)).toBe(0.5) + expect(view.getFloat64(1)).not.toBe(0.5) + expect(view.getFloat64(0, true)).not.toBe(0.5) + expect(view.getFloat64(1, true)).not.toBe(0.5) + } + + it("should provide `setInt8`") { + val view = new DataView(new ArrayBuffer(4)) + + view.setInt8(0, 1) + view.setInt8(1, 127) + view.setInt8(2, -20) + view.setInt8(3, -50) + + expect(view.getUint8(0)).toBe(0x01) + expect(view.getUint8(1)).toBe(0x7F) + expect(view.getUint8(2)).toBe(0xEC) + expect(view.getUint8(3)).toBe(0xCE) + } + + it("should provide `setUint8`") { + val view = new DataView(new ArrayBuffer(4)) + + view.setUint8(0, 0x01) + view.setUint8(1, 0xFC) + view.setUint8(2, 0x4D) + view.setUint8(3, 0x8C) + + expect(view.getInt8(0)).toBe(1) + expect(view.getInt8(1)).toBe(-4) + expect(view.getInt8(2)).toBe(0x4D) + expect(view.getInt8(3)).toBe(-116) + } + + it("should provide `setInt16`") { + val view = new DataView(new ArrayBuffer(4)) + + view.setInt16(0, 0x7F3B, true) + view.setInt16(2, -1) + + expect(view.getUint8(0)).toBe(0x3B) + expect(view.getUint8(1)).toBe(0x7F) + expect(view.getUint8(2)).toBe(0xFF) + expect(view.getUint8(3)).toBe(0xFF) + } + + it("should provide `setUint16`") { + val view = new DataView(new ArrayBuffer(4)) + + view.setUint16(0, 0x7F3B, true) + view.setUint16(2, 0xFCBA) + + expect(view.getUint8(0)).toBe(0x3B) + expect(view.getUint8(1)).toBe(0x7F) + expect(view.getUint8(2)).toBe(0xFC) + expect(view.getUint8(3)).toBe(0xBA) + + view.setUint16(1, 0x03BC) + + expect(view.getUint8(0)).toBe(0x3B) + expect(view.getUint8(1)).toBe(0x03) + expect(view.getUint8(2)).toBe(0xBC) + expect(view.getUint8(3)).toBe(0xBA) + } + + it("should provide `setInt32`") { + val view = new DataView(new ArrayBuffer(8)) + + view.setInt32(0, 0x7F3B8342, true) + view.setInt32(3, 0xFCBA1020) + + expect(view.getUint8(0)).toBe(0x42) + expect(view.getUint8(1)).toBe(0x83) + expect(view.getUint8(2)).toBe(0x3B) + expect(view.getUint8(3)).toBe(0xFC) + expect(view.getUint8(4)).toBe(0xBA) + expect(view.getUint8(5)).toBe(0x10) + expect(view.getUint8(6)).toBe(0x20) + expect(view.getUint8(7)).toBe(0x00) + } + + it("should provide `setUint32`") { + val view = new DataView(new ArrayBuffer(8)) + + view.setUint32(0, 0x7F3B8342, true) + view.setUint32(3, 0xFCBA1020L.toDouble) + + expect(view.getUint8(0)).toBe(0x42) + expect(view.getUint8(1)).toBe(0x83) + expect(view.getUint8(2)).toBe(0x3B) + expect(view.getUint8(3)).toBe(0xFC) + expect(view.getUint8(4)).toBe(0xBA) + expect(view.getUint8(5)).toBe(0x10) + expect(view.getUint8(6)).toBe(0x20) + expect(view.getUint8(7)).toBe(0x00) + } + + it("should provide `setFloat32`") { + val view = new DataView(new ArrayBuffer(5)) + + view.setFloat32(0, 0.1f) + view.setFloat32(1, 0.4f) + + expect(view.getFloat32(1)).toBeCloseTo(0.4, 7) + expect(view.getFloat32(0)).not.toBeCloseTo(0.1, 7) + + view.setFloat32(0, 0.1f, true) + view.setFloat32(1, 0.4f, true) + + expect(view.getFloat32(0, true)).not.toBeCloseTo(0.1, 7) + expect(view.getFloat32(1, true)).toBeCloseTo(0.4, 7) + } + + it("should provide `getFloat64`") { + val view = new DataView(new ArrayBuffer(9)) + + view.setFloat64(0, 0.5) + view.setFloat64(1, 0.6) + + expect(view.getFloat64(0)).not.toBe(0.5) + expect(view.getFloat64(1)).toBe(0.6) + + view.setFloat64(0, 0.5, true) + view.setFloat64(1, 0.6, true) + + expect(view.getFloat64(0, true)).not.toBe(0.5) + expect(view.getFloat64(1, true)).toBe(0.6) + } + + } + +} |