On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+PASS testSlice
+test inheritance hierarchy of typed array views
+PASS ArrayBufferView does not have [NoInterfaceObject] extended attribute and should be defined
+PASS new Int8Array(1) instanceof ArrayBufferView is true
+PASS new Uint8Array(1) instanceof ArrayBufferView is true
+PASS new Uint8ClampedArray(1) instanceof ArrayBufferView is true
+PASS new Int16Array(1) instanceof ArrayBufferView is true
+PASS new Uint16Array(1) instanceof ArrayBufferView is true
+PASS new Int32Array(1) instanceof ArrayBufferView is true
+PASS new Uint32Array(1) instanceof ArrayBufferView is true
+PASS new Float32Array(1) instanceof ArrayBufferView is true
+PASS new Float64Array(1) instanceof ArrayBufferView is true
+PASS new DataView(new ArrayBuffer(8)) instanceof ArrayBufferView is true
+PASS new ArrayBufferView() threw TypeError
+PASS new Uint8ClampedArray(1) instanceof Uint8Array is true
PASS test Float32Array SetAndGetPos10ToNeg10
PASS test Float32Array ConstructWithArrayOfSignedValues
PASS test Float32Array ConstructWithTypedArrayOfSignedValues
}
try {
+ running('testSlice');
var buffer = new ArrayBuffer(32);
var array = new Int8Array(buffer);
for (var i = 0; i < 32; ++i)
test("buffer.slice(-20, -8)", 12, 12);
test("buffer.slice(-40, 16)", 0, 16);
test("buffer.slice(-40, 40)", 0, 32);
+ pass();
} catch (e) {
fail(e);
}
var expectedResults;
if (unsigned) {
- sourceData = [0.6, 10.6];
+ sourceData = [0.6, 10.6, 0.2, 10.2, 10.5, 11.5];
if (type === Uint8ClampedArray) {
- expectedResults = [1, 11];
+ expectedResults = [1, 11, 0, 10, 10, 12];
} else {
- expectedResults = [0, 10];
+ expectedResults = [0, 10, 0, 10, 10, 11];
}
} else {
sourceData = [0.6, 10.6, -0.6, -10.6];
}
}
+function shouldThrowTypeError(func, text) {
+ var ok = false;
+ try {
+ func();
+ } catch (e) {
+ if (e instanceof TypeError) {
+ ok = true;
+ }
+ }
+ if (ok) {
+ testPassed(text + " threw TypeError");
+ } else {
+ testFailed(text + " should throw TypeError");
+ }
+}
+
function testConstructionWithOutOfRangeValues(type, name) {
shouldThrowIndexSizeErr(function() {
var buffer = new ArrayBuffer(4);
}
}
+function testInheritanceHierarchy() {
+ debug('test inheritance hierarchy of typed array views');
+
+ try {
+ var foo = ArrayBufferView;
+ testPassed('ArrayBufferView does not have [NoInterfaceObject] extended attribute and should be defined');
+
+ shouldBe('new Int8Array(1) instanceof ArrayBufferView', 'true');
+ shouldBe('new Uint8Array(1) instanceof ArrayBufferView', 'true');
+ shouldBe('new Uint8ClampedArray(1) instanceof ArrayBufferView', 'true');
+ shouldBe('new Int16Array(1) instanceof ArrayBufferView', 'true');
+ shouldBe('new Uint16Array(1) instanceof ArrayBufferView', 'true');
+ shouldBe('new Int32Array(1) instanceof ArrayBufferView', 'true');
+ shouldBe('new Uint32Array(1) instanceof ArrayBufferView', 'true');
+ shouldBe('new Float32Array(1) instanceof ArrayBufferView', 'true');
+ shouldBe('new Float64Array(1) instanceof ArrayBufferView', 'true');
+ shouldBe('new DataView(new ArrayBuffer(8)) instanceof ArrayBufferView', 'true');
+
+ shouldThrowTypeError(function() { new ArrayBufferView() }, "new ArrayBufferView()");
+ } catch (e) {
+ testFailed('ArrayBufferView does not have [NoInterfaceObject] extended attribute but was not defined');
+ }
+
+ // There is currently only one kind of view that inherits from another
+ shouldBe('new Uint8ClampedArray(1) instanceof Uint8Array', 'true');
+}
+
+
//
// Test driver
//
allPassed = true;
testSlice();
+ testInheritanceHierarchy();
// The "name" attribute is a concession to browsers which don't
// implement the "name" property on function objects