package com.bitgrind.gwt.nextgen.testapp.client;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.core.client.JsArrayNumber;
import com.google.gwt.dom.client.Document;
import com.google.gwt.nextgen.typedarrays.client.ArrayBuffer;
import com.google.gwt.nextgen.typedarrays.client.Float32Array;
import com.google.gwt.nextgen.typedarrays.client.Float64Array;
import com.google.gwt.nextgen.typedarrays.client.Int16Array;
import com.google.gwt.nextgen.typedarrays.client.Int32Array;
import com.google.gwt.nextgen.typedarrays.client.Int8Array;
import com.google.gwt.nextgen.typedarrays.client.TypedArray;
import com.google.gwt.nextgen.typedarrays.client.Uint16Array;
import com.google.gwt.nextgen.typedarrays.client.Uint32Array;
import com.google.gwt.nextgen.typedarrays.client.Uint8Array;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Element;
public class TestApp implements EntryPoint {
static void assertEquals(double a, double b) {
String method = new Exception().fillInStackTrace().getStackTrace()[1].getMethodName();
Element div = DOM.createDiv();
if (a == b) {
div.setInnerHTML(method + ": <b>PASS</b>");
div.getStyle().setColor("green");
} else {
div.setInnerHTML(method + ": <b>FAIL</b> (expected: " + a + ", got: " + b + ")");
div.getStyle().setColor("red");
}
Document.get().getBody().appendChild(div);
}
@Override
public void onModuleLoad() {
testArrayBuffer();
testInt16Array();
testInt32Array();
testInt8Array();
testUint16Array();
testUint32Array();
testUint8Array();
testFloat32Array();
//testFoat64Array();
}
public JsArrayNumber createArrayOf25() {
JsArrayNumber jsArray25 = JavaScriptObject.createArray().cast();
for (int i=0; i<25; i++) {
jsArray25.set(i, i);
}
return jsArray25;
}
public void testArrayBuffer() {
ArrayBuffer buffer = ArrayBuffer.create(100);
assertEquals(100, buffer.getByteLength());
}
public void testTypedArray(int size, int bytesPerElement, TypedArray typed) {
assertEquals(size, typed.getLength());
assertEquals(bytesPerElement * size, typed.getBuffer().getByteLength());
assertEquals(bytesPerElement * size, typed.getByteLength());
}
public void testInt8Array() {
Int8Array buffer = Int8Array.create(100);
assertEquals(100, buffer.getLength());
assertEquals(Int8Array.BYTES_PER_ELEMENT * 100, buffer.getByteLength());
assertEquals(Int8Array.BYTES_PER_ELEMENT * 100, buffer.getBuffer().getByteLength());
JsArrayNumber jsArray25 = createArrayOf25();
buffer.set(jsArray25);
for (int i=0; i<25; i++) {
assertEquals(i, buffer.get(i));
}
buffer.set(jsArray25, 12);
for (int i=0; i<12; i++) {
assertEquals(i, buffer.get(i));
}
for (int i=0; i<13; i++) {
assertEquals(i, buffer.get(i+12));
}
}
public void testUint8Array() {
Uint8Array buffer = Uint8Array.create(100);
assertEquals(100, buffer.getLength());
assertEquals(Uint8Array.BYTES_PER_ELEMENT * 100, buffer.getByteLength());
assertEquals(Uint8Array.BYTES_PER_ELEMENT * 100, buffer.getBuffer().getByteLength());
JsArrayNumber jsArray25 = createArrayOf25();
buffer.set(jsArray25);
for (int i=0; i<25; i++) {
assertEquals(i, buffer.get(i));
}
buffer.set(jsArray25, 12);
for (int i=0; i<12; i++) {
assertEquals(i, buffer.get(i));
}
for (int i=0; i<13; i++) {
assertEquals(i, buffer.get(i+12));
}
}
public void testInt16Array() {
Int16Array buffer = Int16Array.create(100);
assertEquals(100, buffer.getLength());
assertEquals(Int16Array.BYTES_PER_ELEMENT * 100, buffer.getByteLength());
assertEquals(Int16Array.BYTES_PER_ELEMENT * 100, buffer.getBuffer().getByteLength());
JsArrayNumber jsArray25 = createArrayOf25();
buffer.set(jsArray25);
for (int i=0; i<25; i++) {
assertEquals(i, buffer.get(i));
}
buffer.set(jsArray25, 12);
for (int i=0; i<12; i++) {
assertEquals(i, buffer.get(i));
}
for (int i=0; i<13; i++) {
assertEquals(i, buffer.get(i+12));
}
}
public void testUint16Array() {
Uint16Array buffer = Uint16Array.create(100);
assertEquals(100, buffer.getLength());
assertEquals(Uint16Array.BYTES_PER_ELEMENT * 100, buffer.getByteLength());
assertEquals(Uint16Array.BYTES_PER_ELEMENT * 100, buffer.getBuffer().getByteLength());
JsArrayNumber jsArray25 = createArrayOf25();
buffer.set(jsArray25);
for (int i=0; i<25; i++) {
assertEquals(i, buffer.get(i));
}
buffer.set(jsArray25, 12);
for (int i=0; i<12; i++) {
assertEquals(i, buffer.get(i));
}
for (int i=0; i<13; i++) {
assertEquals(i, buffer.get(i+12));
}
}
public void testInt32Array() {
Int32Array buffer = Int32Array.create(100);
assertEquals(100, buffer.getLength());
assertEquals(Int32Array.BYTES_PER_ELEMENT * 100, buffer.getByteLength());
assertEquals(Int32Array.BYTES_PER_ELEMENT * 100, buffer.getBuffer().getByteLength());
JsArrayNumber jsArray25 = createArrayOf25();
buffer.set(jsArray25);
for (int i=0; i<25; i++) {
assertEquals(i, buffer.get(i));
}
buffer.set(jsArray25, 12);
for (int i=0; i<12; i++) {
assertEquals(i, buffer.get(i));
}
for (int i=0; i<13; i++) {
assertEquals(i, buffer.get(i+12));
}
}
public void testUint32Array() {
Uint32Array buffer = Uint32Array.create(100);
assertEquals(100, buffer.getLength());
assertEquals(Uint32Array.BYTES_PER_ELEMENT * 100, buffer.getByteLength());
assertEquals(Uint32Array.BYTES_PER_ELEMENT * 100, buffer.getBuffer().getByteLength());
JsArrayNumber jsArray25 = createArrayOf25();
buffer.set(jsArray25);
for (int i=0; i<25; i++) {
assertEquals(i, buffer.get(i));
}
buffer.set(jsArray25, 12);
for (int i=0; i<12; i++) {
assertEquals(i, buffer.get(i));
}
for (int i=0; i<13; i++) {
assertEquals(i, buffer.get(i+12));
}
}
public void testFloat32Array() {
Float32Array buffer = Float32Array.create(100);
assertEquals(100, buffer.getLength());
assertEquals(Float32Array.BYTES_PER_ELEMENT * 100, buffer.getByteLength());
assertEquals(Float32Array.BYTES_PER_ELEMENT * 100, buffer.getBuffer().getByteLength());
JsArrayNumber jsArray25 = createArrayOf25();
buffer.set(jsArray25);
for (int i=0; i<25; i++) {
assertEquals(i, buffer.get(i));
}
buffer.set(jsArray25, 12);
for (int i=0; i<12; i++) {
assertEquals(i, buffer.get(i));
}
for (int i=0; i<13; i++) {
assertEquals(i, buffer.get(i+12));
}
}
public void testFoat64Array() {
Float64Array buffer = Float64Array.create(100);
assertEquals(100, buffer.getLength());
assertEquals(Float64Array.BYTES_PER_ELEMENT * 100, buffer.getByteLength());
assertEquals(Float64Array.BYTES_PER_ELEMENT * 100, buffer.getBuffer().getByteLength());
JsArrayNumber jsArray25 = createArrayOf25();
buffer.set(jsArray25);
for (int i=0; i<25; i++) {
assertEquals(i, buffer.get(i));
}
buffer.set(jsArray25, 12);
for (int i=0; i<12; i++) {
assertEquals(i, buffer.get(i));
}
for (int i=0; i<13; i++) {
assertEquals(i, buffer.get(i+12));
}
}
}