mirror of https://github.com/tc39/test262.git
Add tests for DataView.prototype.setUint8
This commit is contained in:
parent
88f427b4b9
commit
ab494e1e32
62
test/built-ins/DataView/prototype/setUint8/byteoffset-is-different-integer-throws.js
vendored
Normal file
62
test/built-ins/DataView/prototype/setUint8/byteoffset-is-different-integer-throws.js
vendored
Normal file
|
@ -0,0 +1,62 @@
|
|||
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
esid: sec-dataview.prototype.setuint8
|
||||
es6id: 24.2.4.18
|
||||
description: >
|
||||
Throws a RangeError if numberIndex ≠ getIndex
|
||||
info: |
|
||||
24.2.4.18 DataView.prototype.setUint8 ( byteOffset, value )
|
||||
|
||||
1. Let v be the this value.
|
||||
2. Return ? SetViewValue(v, byteOffset, true, "Uint8", value).
|
||||
|
||||
24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
|
||||
|
||||
...
|
||||
4. Let numberIndex be ? ToNumber(requestIndex).
|
||||
5. Let getIndex be ToInteger(numberIndex).
|
||||
6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
|
||||
...
|
||||
features: [Uint8Array]
|
||||
---*/
|
||||
|
||||
var buffer = new ArrayBuffer(12);
|
||||
var sample = new DataView(buffer, 0);
|
||||
var typedArray = new Uint8Array(buffer, 0);
|
||||
|
||||
assert.throws(RangeError, function() {
|
||||
sample.setUint8();
|
||||
}, "no args");
|
||||
assert.sameValue(typedArray[0], 0, "no args - no value was set");
|
||||
|
||||
assert.throws(RangeError, function() {
|
||||
sample.setUint8(undefined, 39);
|
||||
}, "undefined");
|
||||
assert.sameValue(typedArray[0], 0, "undefined - no value was set");
|
||||
|
||||
assert.throws(RangeError, function() {
|
||||
sample.setUint8(1.1, 39);
|
||||
}, "floating number");
|
||||
assert.sameValue(typedArray[0], 0, "floating number - no value was set");
|
||||
|
||||
assert.throws(RangeError, function() {
|
||||
sample.setUint8(0.1, 39);
|
||||
}, "0.1");
|
||||
assert.sameValue(typedArray[0], 0, "0.1 - no value was set");
|
||||
|
||||
assert.throws(RangeError, function() {
|
||||
sample.setUint8(NaN, 39);
|
||||
}, "NaN");
|
||||
assert.sameValue(typedArray[0], 0, "NaN - no value was set");
|
||||
|
||||
assert.throws(RangeError, function() {
|
||||
sample.setUint8(-0.1, 39);
|
||||
}, "-0.1");
|
||||
assert.sameValue(typedArray[0], 0, "-0.1 - no value was set");
|
||||
|
||||
assert.throws(RangeError, function() {
|
||||
sample.setUint8(-1.1, 39);
|
||||
}, "-1.1");
|
||||
assert.sameValue(typedArray[0], 0, "-1.1 - no value was set");
|
|
@ -0,0 +1,37 @@
|
|||
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
esid: sec-dataview.prototype.setuint8
|
||||
es6id: 24.2.4.18
|
||||
description: >
|
||||
Throws a RangeError if getIndex < 0
|
||||
info: |
|
||||
24.2.4.18 DataView.prototype.setUint8 ( byteOffset, value )
|
||||
|
||||
1. Let v be the this value.
|
||||
2. Return ? SetViewValue(v, byteOffset, true, "Uint8", value).
|
||||
|
||||
24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
|
||||
|
||||
...
|
||||
4. Let numberIndex be ? ToNumber(requestIndex).
|
||||
5. Let getIndex be ToInteger(numberIndex).
|
||||
6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
|
||||
...
|
||||
features: [Uint8Array]
|
||||
---*/
|
||||
|
||||
var buffer = new ArrayBuffer(2);
|
||||
var sample = new DataView(buffer, 0);
|
||||
var typedArray = new Uint8Array(buffer, 0);
|
||||
|
||||
assert.throws(RangeError, function() {
|
||||
sample.setUint8(-1, 39);
|
||||
}, "-1");
|
||||
assert.sameValue(typedArray[0], 0, "-1 - no value was set");
|
||||
|
||||
assert.throws(RangeError, function() {
|
||||
sample.setUint8(-Infinity, 39);
|
||||
}, "-Infinity");
|
||||
assert.sameValue(typedArray[0], 0, "-Infinity - no value was set");
|
37
test/built-ins/DataView/prototype/setUint8/detached-buffer-after-integer-byteoffset.js
vendored
Normal file
37
test/built-ins/DataView/prototype/setUint8/detached-buffer-after-integer-byteoffset.js
vendored
Normal file
|
@ -0,0 +1,37 @@
|
|||
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
esid: sec-dataview.prototype.setuint8
|
||||
es6id: 24.2.4.18
|
||||
description: >
|
||||
Detached buffer is checked after checking If numberIndex ≠ getIndex or
|
||||
getIndex < 0
|
||||
info: |
|
||||
24.2.4.18 DataView.prototype.setUint8 ( byteOffset, value )
|
||||
|
||||
1. Let v be the this value.
|
||||
2. Return ? SetViewValue(v, byteOffset, true, "Uint8", value).
|
||||
|
||||
24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
|
||||
|
||||
...
|
||||
6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
|
||||
...
|
||||
9. Let buffer be the value of view's [[ViewedArrayBuffer]] internal slot.
|
||||
10. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
|
||||
...
|
||||
includes: [detachArrayBuffer.js]
|
||||
---*/
|
||||
|
||||
var buffer = new ArrayBuffer(12);
|
||||
var sample = new DataView(buffer, 0);
|
||||
|
||||
$DETACHBUFFER(buffer);
|
||||
assert.throws(RangeError, function() {
|
||||
sample.setUint8(1.1, 0);
|
||||
});
|
||||
|
||||
assert.throws(RangeError, function() {
|
||||
sample.setUint8(-1, 0);
|
||||
});
|
38
test/built-ins/DataView/prototype/setUint8/detached-buffer-after-number-value.js
vendored
Normal file
38
test/built-ins/DataView/prototype/setUint8/detached-buffer-after-number-value.js
vendored
Normal file
|
@ -0,0 +1,38 @@
|
|||
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
esid: sec-dataview.prototype.setuint8
|
||||
es6id: 24.2.4.18
|
||||
description: >
|
||||
Detached buffer is checked after ToNumber(value)
|
||||
info: |
|
||||
24.2.4.18 DataView.prototype.setUint8 ( byteOffset, value )
|
||||
|
||||
1. Let v be the this value.
|
||||
2. Return ? SetViewValue(v, byteOffset, true, "Uint8", value).
|
||||
|
||||
24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
|
||||
|
||||
...
|
||||
7. Let numberValue be ? ToNumber(value).
|
||||
...
|
||||
9. Let buffer be the value of view's [[ViewedArrayBuffer]] internal slot.
|
||||
10. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
|
||||
...
|
||||
includes: [detachArrayBuffer.js]
|
||||
---*/
|
||||
|
||||
var buffer = new ArrayBuffer(8);
|
||||
var sample = new DataView(buffer, 0);
|
||||
|
||||
var v = {
|
||||
valueOf: function() {
|
||||
throw new Test262Error();
|
||||
}
|
||||
};
|
||||
|
||||
$DETACHBUFFER(buffer);
|
||||
assert.throws(Test262Error, function() {
|
||||
sample.setUint8(0, v);
|
||||
});
|
39
test/built-ins/DataView/prototype/setUint8/detached-buffer-before-outofrange-byteoffset.js
vendored
Normal file
39
test/built-ins/DataView/prototype/setUint8/detached-buffer-before-outofrange-byteoffset.js
vendored
Normal file
|
@ -0,0 +1,39 @@
|
|||
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
esid: sec-dataview.prototype.setuint8
|
||||
es6id: 24.2.4.18
|
||||
description: >
|
||||
Detached buffer is checked before out of range byteOffset's value
|
||||
info: |
|
||||
24.2.4.18 DataView.prototype.setUint8 ( byteOffset, value )
|
||||
|
||||
1. Let v be the this value.
|
||||
2. Return ? SetViewValue(v, byteOffset, true, "Uint8", value).
|
||||
|
||||
24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
|
||||
|
||||
...
|
||||
9. Let buffer be the value of view's [[ViewedArrayBuffer]] internal slot.
|
||||
10. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
|
||||
...
|
||||
14. If getIndex + elementSize > viewSize, throw a RangeError exception.
|
||||
...
|
||||
includes: [detachArrayBuffer.js]
|
||||
---*/
|
||||
|
||||
var sample;
|
||||
var buffer = new ArrayBuffer(12);
|
||||
|
||||
sample = new DataView(buffer, 0);
|
||||
|
||||
$DETACHBUFFER(buffer);
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
sample.setUint8(Infinity, 0);
|
||||
}, "Infinity");
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
sample.setUint8(13, 0);
|
||||
}, "13");
|
|
@ -0,0 +1,30 @@
|
|||
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
esid: sec-dataview.prototype.setuint8
|
||||
es6id: 24.2.4.18
|
||||
description: >
|
||||
Throws a TypeError if buffer is detached
|
||||
info: |
|
||||
24.2.4.18 DataView.prototype.setUint8 ( byteOffset, value )
|
||||
|
||||
1. Let v be the this value.
|
||||
2. Return ? SetViewValue(v, byteOffset, true, "Uint8", value).
|
||||
|
||||
24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
|
||||
|
||||
...
|
||||
9. Let buffer be the value of view's [[ViewedArrayBuffer]] internal slot.
|
||||
10. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
|
||||
...
|
||||
includes: [detachArrayBuffer.js]
|
||||
---*/
|
||||
|
||||
var buffer = new ArrayBuffer(1);
|
||||
var sample = new DataView(buffer, 0);
|
||||
|
||||
$DETACHBUFFER(buffer);
|
||||
assert.throws(TypeError, function() {
|
||||
sample.setUint8(0, 0);
|
||||
});
|
|
@ -4,7 +4,8 @@
|
|||
/*---
|
||||
esid: sec-dataview.prototype.setuint8
|
||||
description: >
|
||||
Throws a RangeError if the index is negative or non-integral number.
|
||||
RangeError exception for negative or non-integral index is thrown before
|
||||
the value conversion.
|
||||
info: >
|
||||
...
|
||||
3. Return SetViewValue(v, byteOffset, littleEndian, "Uint8", value).
|
||||
|
@ -18,11 +19,11 @@ info: >
|
|||
...
|
||||
---*/
|
||||
|
||||
var dataView = new DataView(new ArrayBuffer(8));
|
||||
var dataView = new DataView(new ArrayBuffer(8), 0);
|
||||
|
||||
var poisoned = {
|
||||
valueOf: function() {
|
||||
$ERROR("valueOf called");
|
||||
throw new Test262Error("valueOf called");
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -0,0 +1,63 @@
|
|||
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
esid: sec-dataview.prototype.setuint8
|
||||
es6id: 24.2.4.18
|
||||
description: >
|
||||
Throws a RangeError if getIndex + elementSize > viewSize
|
||||
info: |
|
||||
24.2.4.18 DataView.prototype.setUint8 ( byteOffset, value )
|
||||
|
||||
1. Let v be the this value.
|
||||
2. Return ? SetViewValue(v, byteOffset, true, "Uint8", value).
|
||||
|
||||
24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
|
||||
|
||||
...
|
||||
11. Let viewOffset be the value of view's [[ByteOffset]] internal slot.
|
||||
12. Let viewSize be the value of view's [[ByteLength]] internal slot.
|
||||
13. Let elementSize be the Number value of the Element Size value specified in
|
||||
Table 50 for Element Type type.
|
||||
14. If getIndex + elementSize > viewSize, throw a RangeError exception.
|
||||
...
|
||||
features: [Uint8Array]
|
||||
---*/
|
||||
|
||||
var sample;
|
||||
var buffer = new ArrayBuffer(4);
|
||||
var typedArray = new Uint8Array(buffer, 0);
|
||||
|
||||
sample = new DataView(buffer, 0);
|
||||
|
||||
assert.throws(RangeError, function() {
|
||||
sample.setUint8(Infinity, 39);
|
||||
}, "getIndex == Infinity");
|
||||
|
||||
assert.throws(RangeError, function() {
|
||||
sample.setUint8(5, 39);
|
||||
}, "5 + 1 > 4");
|
||||
|
||||
assert.throws(RangeError, function() {
|
||||
sample.setUint8(4, 39);
|
||||
}, "4 + 1 > 4");
|
||||
|
||||
sample = new DataView(buffer, 3);
|
||||
assert.throws(RangeError, function() {
|
||||
sample.setUint8(1, 39);
|
||||
}, "1 + 1 > 1 (offset)");
|
||||
|
||||
sample = new DataView(buffer, 0, 1);
|
||||
assert.throws(RangeError, function() {
|
||||
sample.setUint8(1, 39);
|
||||
}, "1 + 1 > 1 (length)");
|
||||
|
||||
sample = new DataView(buffer, 2, 1);
|
||||
assert.throws(RangeError, function() {
|
||||
sample.setUint8(1, 39);
|
||||
}, "1 + 1 > 1 (offset+length)");
|
||||
|
||||
assert.sameValue(typedArray[0], 0, "[0] no value was set");
|
||||
assert.sameValue(typedArray[1], 0, "[1] no value was set");
|
||||
assert.sameValue(typedArray[2], 0, "[2] no value was set");
|
||||
assert.sameValue(typedArray[3], 0, "[3] no value was set");
|
|
@ -15,30 +15,33 @@ info: >
|
|||
4. Let getIndex be ToInteger(numberIndex).
|
||||
5. ReturnIfAbrupt(getIndex).
|
||||
...
|
||||
features: [Uint8Array]
|
||||
---*/
|
||||
|
||||
var dataView = new DataView(new ArrayBuffer(8));
|
||||
var buffer = new ArrayBuffer(2);
|
||||
var dataView = new DataView(buffer, 0);
|
||||
var typedArray = new Uint8Array(buffer, 0);
|
||||
|
||||
dataView.setUint8(+0, 1);
|
||||
assert.sameValue(dataView.getUint8(0), 1, "setUint8(+0, 1)");
|
||||
assert.sameValue(typedArray[0], 1, "setUint8(+0, 1)");
|
||||
|
||||
dataView.setUint8(-0, 2);
|
||||
assert.sameValue(dataView.getUint8(0), 2, "setUint8(-0, 2)");
|
||||
assert.sameValue(typedArray[0], 2, "setUint8(-0, 2)");
|
||||
|
||||
dataView.setUint8(1, 3);
|
||||
assert.sameValue(dataView.getUint8(1), 3, "setUint8(1, 3)");
|
||||
assert.sameValue(typedArray[1], 3, "setUint8(1, 3)");
|
||||
|
||||
dataView.setUint8(null, 4);
|
||||
assert.sameValue(dataView.getUint8(0), 4, "setUint8(null, 4)");
|
||||
assert.sameValue(typedArray[0], 4, "setUint8(null, 4)");
|
||||
|
||||
dataView.setUint8(false, 5);
|
||||
assert.sameValue(dataView.getUint8(0), 5, "setUint8(false, 5)");
|
||||
assert.sameValue(typedArray[0], 5, "setUint8(false, 5)");
|
||||
|
||||
dataView.setUint8(true, 6);
|
||||
assert.sameValue(dataView.getUint8(1), 6, "setUint8(true, 6)");
|
||||
assert.sameValue(typedArray[1], 6, "setUint8(true, 6)");
|
||||
|
||||
dataView.setUint8("", 7);
|
||||
assert.sameValue(dataView.getUint8(0), 7, "setUint8('', 7)");
|
||||
assert.sameValue(typedArray[0], 7, "setUint8('', 7)");
|
||||
|
||||
// Math.pow(2, 31) = 2147483648
|
||||
assert.throws(RangeError, function() {
|
||||
|
@ -56,4 +59,4 @@ var obj = {
|
|||
}
|
||||
};
|
||||
dataView.setUint8(obj, 10);
|
||||
assert.sameValue(dataView.getUint8(1), 10, "setUint8(obj, 10)");
|
||||
assert.sameValue(typedArray[1], 10, "setUint8(obj, 10)");
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
esid: sec-dataview.prototype.setuint8
|
||||
es6id: 24.2.4.18
|
||||
description: >
|
||||
Set value as undefined (cast to 0) when value argument is not present
|
||||
info: |
|
||||
24.2.4.18 DataView.prototype.setUint8 ( byteOffset, value )
|
||||
|
||||
1. Let v be the this value.
|
||||
2. Return ? SetViewValue(v, byteOffset, true, "Uint8", value).
|
||||
|
||||
24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
|
||||
|
||||
...
|
||||
15. Let bufferIndex be getIndex + viewOffset.
|
||||
16. Return SetValueInBuffer(buffer, bufferIndex, type, numberValue, isLittleEndian).
|
||||
|
||||
24.1.1.6 SetValueInBuffer ( arrayBuffer, byteIndex, type, value [ , isLittleEndian ] )
|
||||
|
||||
...
|
||||
11. Store the individual bytes of rawBytes into block, in order, starting at
|
||||
block[byteIndex].
|
||||
12. Return NormalCompletion(undefined).
|
||||
features: [Uint8Array]
|
||||
---*/
|
||||
|
||||
var buffer = new ArrayBuffer(1);
|
||||
var sample = new DataView(buffer, 0);
|
||||
var typedArray = new Uint8Array(buffer, 0);
|
||||
|
||||
sample.setUint8(0, 42);
|
||||
|
||||
var result = sample.setUint8(0);
|
||||
|
||||
assert.sameValue(typedArray[0], 0);
|
||||
assert.sameValue(result, undefined);
|
|
@ -22,28 +22,26 @@ info: >
|
|||
...
|
||||
---*/
|
||||
|
||||
var dataView = new DataView(new ArrayBuffer(8));
|
||||
|
||||
function DummyError() { }
|
||||
var dataView = new DataView(new ArrayBuffer(8), 0);
|
||||
|
||||
var poisoned = {
|
||||
valueOf: function() {
|
||||
throw new DummyError();
|
||||
throw new Test262Error();
|
||||
}
|
||||
};
|
||||
|
||||
assert.throws(DummyError, function() {
|
||||
assert.throws(Test262Error, function() {
|
||||
dataView.setUint8(Infinity, poisoned);
|
||||
}, "setUint8(Infinity, poisoned)");
|
||||
|
||||
assert.throws(DummyError, function() {
|
||||
assert.throws(Test262Error, function() {
|
||||
dataView.setUint8(100, poisoned);
|
||||
}, "setUint8(100, poisoned)");
|
||||
|
||||
assert.throws(DummyError, function() {
|
||||
assert.throws(Test262Error, function() {
|
||||
dataView.setUint8('Infinity', poisoned);
|
||||
}, "setUint8('Infinity', poisoned)");
|
||||
|
||||
assert.throws(DummyError, function() {
|
||||
assert.throws(Test262Error, function() {
|
||||
dataView.setUint8('100', poisoned);
|
||||
}, "setUint8('100', poisoned)");
|
||||
|
|
30
test/built-ins/DataView/prototype/setUint8/return-abrupt-from-tonumber-byteoffset-symbol.js
vendored
Normal file
30
test/built-ins/DataView/prototype/setUint8/return-abrupt-from-tonumber-byteoffset-symbol.js
vendored
Normal file
|
@ -0,0 +1,30 @@
|
|||
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
esid: sec-dataview.prototype.setuint8
|
||||
es6id: 24.2.4.18
|
||||
description: >
|
||||
Return abrupt from ToNumber(symbol byteOffset)
|
||||
info: |
|
||||
24.2.4.18 DataView.prototype.setUint8 ( byteOffset, value )
|
||||
|
||||
1. Let v be the this value.
|
||||
2. Return ? SetViewValue(v, byteOffset, true, "Uint8", value).
|
||||
|
||||
24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
|
||||
|
||||
...
|
||||
4. Let numberIndex be ? ToNumber(requestIndex).
|
||||
...
|
||||
features: [Symbol]
|
||||
---*/
|
||||
|
||||
var buffer = new ArrayBuffer(1);
|
||||
var sample = new DataView(buffer, 0);
|
||||
|
||||
var s = Symbol("1");
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
sample.setUint8(s, 1);
|
||||
});
|
43
test/built-ins/DataView/prototype/setUint8/return-abrupt-from-tonumber-byteoffset.js
vendored
Normal file
43
test/built-ins/DataView/prototype/setUint8/return-abrupt-from-tonumber-byteoffset.js
vendored
Normal file
|
@ -0,0 +1,43 @@
|
|||
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
esid: sec-dataview.prototype.setuint8
|
||||
es6id: 24.2.4.18
|
||||
description: >
|
||||
Return abrupt from ToNumber(byteOffset)
|
||||
info: |
|
||||
24.2.4.18 DataView.prototype.setUint8 ( byteOffset, value )
|
||||
|
||||
1. Let v be the this value.
|
||||
2. Return ? SetViewValue(v, byteOffset, true, "Uint8", value).
|
||||
|
||||
24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
|
||||
|
||||
...
|
||||
4. Let numberIndex be ? ToNumber(requestIndex).
|
||||
...
|
||||
---*/
|
||||
|
||||
var buffer = new ArrayBuffer(1);
|
||||
var sample = new DataView(buffer, 0);
|
||||
|
||||
var bo1 = {
|
||||
valueOf: function() {
|
||||
throw new Test262Error();
|
||||
}
|
||||
};
|
||||
|
||||
var bo2 = {
|
||||
toString: function() {
|
||||
throw new Test262Error();
|
||||
}
|
||||
};
|
||||
|
||||
assert.throws(Test262Error, function() {
|
||||
sample.setUint8(bo1, 1);
|
||||
}, "valueOf");
|
||||
|
||||
assert.throws(Test262Error, function() {
|
||||
sample.setUint8(bo2, 1);
|
||||
}, "toString");
|
30
test/built-ins/DataView/prototype/setUint8/return-abrupt-from-tonumber-value-symbol.js
vendored
Normal file
30
test/built-ins/DataView/prototype/setUint8/return-abrupt-from-tonumber-value-symbol.js
vendored
Normal file
|
@ -0,0 +1,30 @@
|
|||
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
esid: sec-dataview.prototype.setuint8
|
||||
es6id: 24.2.4.18
|
||||
description: >
|
||||
Return abrupt from ToNumber(symbol value)
|
||||
info: |
|
||||
24.2.4.18 DataView.prototype.setUint8 ( byteOffset, value )
|
||||
|
||||
1. Let v be the this value.
|
||||
2. Return ? SetViewValue(v, byteOffset, true, "Uint8", value).
|
||||
|
||||
24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
|
||||
|
||||
...
|
||||
7. Let numberValue be ? ToNumber(value).
|
||||
...
|
||||
features: [Symbol]
|
||||
---*/
|
||||
|
||||
var buffer = new ArrayBuffer(8);
|
||||
var sample = new DataView(buffer, 0);
|
||||
|
||||
var s = Symbol("1");
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
sample.setUint8(0, s);
|
||||
});
|
43
test/built-ins/DataView/prototype/setUint8/return-abrupt-from-tonumber-value.js
vendored
Normal file
43
test/built-ins/DataView/prototype/setUint8/return-abrupt-from-tonumber-value.js
vendored
Normal file
|
@ -0,0 +1,43 @@
|
|||
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
esid: sec-dataview.prototype.setuint8
|
||||
es6id: 24.2.4.18
|
||||
description: >
|
||||
Return abrupt from ToNumber(value)
|
||||
info: |
|
||||
24.2.4.18 DataView.prototype.setUint8 ( byteOffset, value )
|
||||
|
||||
1. Let v be the this value.
|
||||
2. Return ? SetViewValue(v, byteOffset, true, "Uint8", value).
|
||||
|
||||
24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
|
||||
|
||||
...
|
||||
7. Let numberValue be ? ToNumber(value).
|
||||
...
|
||||
---*/
|
||||
|
||||
var buffer = new ArrayBuffer(8);
|
||||
var sample = new DataView(buffer, 0);
|
||||
|
||||
var bo1 = {
|
||||
valueOf: function() {
|
||||
throw new Test262Error();
|
||||
}
|
||||
};
|
||||
|
||||
var bo2 = {
|
||||
toString: function() {
|
||||
throw new Test262Error();
|
||||
}
|
||||
};
|
||||
|
||||
assert.throws(Test262Error, function() {
|
||||
sample.setUint8(0, bo1);
|
||||
}, "valueOf");
|
||||
|
||||
assert.throws(Test262Error, function() {
|
||||
sample.setUint8(0, bo2);
|
||||
}, "toString");
|
|
@ -0,0 +1,53 @@
|
|||
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
esid: sec-dataview.prototype.setuint8
|
||||
es6id: 24.2.4.18
|
||||
description: >
|
||||
Set values and return undefined
|
||||
info: |
|
||||
24.2.4.18 DataView.prototype.setUint8 ( byteOffset, value )
|
||||
|
||||
1. Let v be the this value.
|
||||
2. Return ? SetViewValue(v, byteOffset, true, "Uint8", value).
|
||||
|
||||
24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
|
||||
|
||||
...
|
||||
15. Let bufferIndex be getIndex + viewOffset.
|
||||
16. Return SetValueInBuffer(buffer, bufferIndex, type, numberValue, isLittleEndian).
|
||||
|
||||
24.1.1.6 SetValueInBuffer ( arrayBuffer, byteIndex, type, value [ , isLittleEndian ] )
|
||||
|
||||
...
|
||||
11. Store the individual bytes of rawBytes into block, in order, starting at
|
||||
block[byteIndex].
|
||||
12. Return NormalCompletion(undefined).
|
||||
features: [Uint8Array]
|
||||
includes: [byteConversionValues.js]
|
||||
---*/
|
||||
|
||||
var buffer = new ArrayBuffer(1);
|
||||
var sample = new DataView(buffer, 0);
|
||||
var typedArray = new Uint8Array(buffer, 0);
|
||||
|
||||
var values = byteConversionValues.values;
|
||||
var expectedValues = byteConversionValues.expected.Uint8;
|
||||
|
||||
values.forEach(function(value, i) {
|
||||
var expected = expectedValues[i];
|
||||
|
||||
var result = sample.setUint8(0, value);
|
||||
|
||||
assert.sameValue(
|
||||
typedArray[0],
|
||||
expected,
|
||||
"value: " + value
|
||||
);
|
||||
assert.sameValue(
|
||||
result,
|
||||
undefined,
|
||||
"return is undefined, value: " + value
|
||||
);
|
||||
});
|
|
@ -0,0 +1,42 @@
|
|||
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
esid: sec-dataview.prototype.setuint8
|
||||
es6id: 24.2.4.18
|
||||
description: >
|
||||
Throws a TypeError if this does not have a [[DataView]] internal slot
|
||||
info: |
|
||||
24.2.4.18 DataView.prototype.setUint8 ( byteOffset, value )
|
||||
|
||||
1. Let v be the this value.
|
||||
2. Return ? SetViewValue(v, byteOffset, true, "Uint8", value).
|
||||
|
||||
24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
|
||||
|
||||
1. If Type(view) is not Object, throw a TypeError exception.
|
||||
2. If view does not have a [[DataView]] internal slot, throw a TypeError
|
||||
exception.
|
||||
...
|
||||
features: [Int8Array]
|
||||
---*/
|
||||
|
||||
var setUint8 = DataView.prototype.setUint8;
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
setUint8.call({});
|
||||
}, "{}");
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
setUint8.call([]);
|
||||
}, "[]");
|
||||
|
||||
var ab = new ArrayBuffer(1);
|
||||
assert.throws(TypeError, function() {
|
||||
setUint8.call(ab);
|
||||
}, "ArrayBuffer");
|
||||
|
||||
var ta = new Int8Array();
|
||||
assert.throws(TypeError, function() {
|
||||
setUint8.call(ta);
|
||||
}, "TypedArray");
|
|
@ -0,0 +1,50 @@
|
|||
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
esid: sec-dataview.prototype.setuint8
|
||||
es6id: 24.2.4.18
|
||||
description: Throws a TypeError if this is not Object
|
||||
info: |
|
||||
24.2.4.18 DataView.prototype.setUint8 ( byteOffset, value )
|
||||
|
||||
1. Let v be the this value.
|
||||
2. Return ? SetViewValue(v, byteOffset, true, "Uint8", value).
|
||||
|
||||
24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
|
||||
|
||||
1. If Type(view) is not Object, throw a TypeError exception.
|
||||
...
|
||||
features: [Symbol]
|
||||
---*/
|
||||
|
||||
var setUint8 = DataView.prototype.setUint8;
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
setUint8.call(undefined);
|
||||
}, "undefined");
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
setUint8.call(null);
|
||||
}, "null");
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
setUint8.call(1);
|
||||
}, "1");
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
setUint8.call("string");
|
||||
}, "string");
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
setUint8.call(true);
|
||||
}, "true");
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
setUint8.call(false);
|
||||
}, "false");
|
||||
|
||||
var s = Symbol("1");
|
||||
assert.throws(TypeError, function() {
|
||||
setUint8.call(s);
|
||||
}, "symbol");
|
Loading…
Reference in New Issue