summaryrefslogtreecommitdiff
path: root/examples/scala-js/test-suite/src/test/scala/scala/scalajs/testsuite/typedarray/DataViewTest.scala
diff options
context:
space:
mode:
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.scala275
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)
+ }
+
+ }
+
+}