Add tests for DataView.prototype.setInt16

This commit is contained in:
Leonardo Balter 2016-05-16 12:21:44 -04:00 committed by Mike Pennisi
parent 138f8b1fdb
commit a9b65bdf2d
20 changed files with 784 additions and 12 deletions

View 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.setint16
es6id: 24.2.4.16
description: >
Throws a RangeError if numberIndex getIndex
info: |
24.2.4.16 DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )
1. Let v be the this value.
2. If littleEndian is not present, let littleEndian be false.
3. Return ? SetViewValue(v, byteOffset, littleEndian, "Int16", 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: [DataView.prototype.getInt16]
---*/
var buffer = new ArrayBuffer(12);
var sample = new DataView(buffer, 0);
assert.throws(RangeError, function() {
sample.setInt16();
}, "no args");
assert.sameValue(sample.getInt16(0), 0, "no args - no value was set");
assert.throws(RangeError, function() {
sample.setInt16(undefined, 39);
}, "undefined");
assert.sameValue(sample.getInt16(0), 0, "undefined - no value was set");
assert.throws(RangeError, function() {
sample.setInt16(1.1, 39);
}, "floating number");
assert.sameValue(sample.getInt16(0), 0, "floating number - no value was set");
assert.throws(RangeError, function() {
sample.setInt16(0.1, 39);
}, "0.1");
assert.sameValue(sample.getInt16(0), 0, "0.1 - no value was set");
assert.throws(RangeError, function() {
sample.setInt16(NaN, 39);
}, "NaN");
assert.sameValue(sample.getInt16(0), 0, "NaN - no value was set");
assert.throws(RangeError, function() {
sample.setInt16(-0.1, 39);
}, "-0.1");
assert.sameValue(sample.getInt16(0), 0, "-0.1 - no value was set");
assert.throws(RangeError, function() {
sample.setInt16(-1.1, 39);
}, "-1.1");
assert.sameValue(sample.getInt16(0), 0, "-1.1 - no value was set");

View 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.setint16
es6id: 24.2.4.16
description: >
Throws a RangeError if getIndex < 0
info: |
24.2.4.16 DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )
1. Let v be the this value.
2. If littleEndian is not present, let littleEndian be false.
3. Return ? SetViewValue(v, byteOffset, littleEndian, "Int16", 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: [DataView.prototype.getInt16]
---*/
var buffer = new ArrayBuffer(12);
var sample = new DataView(buffer, 0);
assert.throws(RangeError, function() {
sample.setInt16(-1, 39);
}, "-1");
assert.sameValue(sample.getInt16(0), 0, "-1 - no value was set");
assert.throws(RangeError, function() {
sample.setInt16(-Infinity, 39);
}, "-Infinity");
assert.sameValue(sample.getInt16(0), 0, "-Infinity - no value was set");

View 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.setint16
es6id: 24.2.4.16
description: >
Detached buffer is checked after checking If numberIndex getIndex or
getIndex < 0
info: |
24.2.4.16 DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )
1. Let v be the this value.
2. If littleEndian is not present, let littleEndian be false.
3. Return ? SetViewValue(v, byteOffset, littleEndian, "Int16", 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.setInt16(1.1, 0);
});
assert.throws(RangeError, function() {
sample.setInt16(-1, 0);
});

View 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.setint16
es6id: 24.2.4.16
description: >
Detached buffer is checked after ToNumber(value)
info: |
24.2.4.16 DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )
1. Let v be the this value.
2. If littleEndian is not present, let littleEndian be false.
3. Return ? SetViewValue(v, byteOffset, littleEndian, "Int16", 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.setInt16(0, v);
});

View File

@ -0,0 +1,40 @@
// 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.setint16
es6id: 24.2.4.16
description: >
Detached buffer is checked before out of range byteOffset's value
info: |
24.2.4.16 DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )
1. Let v be the this value.
2. If littleEndian is not present, let littleEndian be false.
3. Return ? SetViewValue(v, byteOffset, littleEndian, "Int16", 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.setInt16(Infinity, 0);
}, "Infinity");
assert.throws(TypeError, function() {
sample.setInt16(13, 0);
}, "13");

View File

@ -0,0 +1,31 @@
// 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.setint16
es6id: 24.2.4.16
description: >
Throws a TypeError if buffer is detached
info: |
24.2.4.16 DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )
1. Let v be the this value.
2. If littleEndian is not present, let littleEndian be false.
3. Return ? SetViewValue(v, byteOffset, littleEndian, "Int16", 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.setInt16(0, 0);
});

View File

@ -4,7 +4,8 @@
/*--- /*---
esid: sec-dataview.prototype.setint16 esid: sec-dataview.prototype.setint16
description: > 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: > info: >
... ...
3. Return SetViewValue(v, byteOffset, littleEndian, "Int16", value). 3. Return SetViewValue(v, byteOffset, littleEndian, "Int16", value).
@ -18,11 +19,11 @@ info: >
... ...
---*/ ---*/
var dataView = new DataView(new ArrayBuffer(8)); var dataView = new DataView(new ArrayBuffer(8), 0);
var poisoned = { var poisoned = {
valueOf: function() { valueOf: function() {
$ERROR("valueOf called"); throw new Test262Error("valueOf called");
} }
}; };

View File

@ -0,0 +1,85 @@
// 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.setint16
es6id: 24.2.4.16
description: >
Throws a RangeError if getIndex + elementSize > viewSize
info: |
24.2.4.16 DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )
1. Let v be the this value.
2. If littleEndian is not present, let littleEndian be false.
3. Return ? SetViewValue(v, byteOffset, littleEndian, "Int16", 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: [DataView.prototype.getInt16]
---*/
var sample;
var buffer = new ArrayBuffer(12);
sample = new DataView(buffer, 0);
assert.throws(RangeError, function() {
sample.setInt16(Infinity, 39);
}, "getIndex == Infinity");
assert.throws(RangeError, function() {
sample.setInt16(13, 39);
}, "13 + 2 > 12");
assert.throws(RangeError, function() {
sample.setInt16(12, 39);
}, "12 + 2 > 12");
assert.throws(RangeError, function() {
sample.setInt16(11, 39);
}, "11 + 2 > 12");
sample = new DataView(buffer, 10);
assert.throws(RangeError, function() {
sample.setInt16(1, 39);
}, "1 + 2 > 2 (offset)");
sample = new DataView(buffer, 11);
assert.throws(RangeError, function() {
sample.setInt16(0, 39);
}, "0 + 2 > 1 (offset)");
sample = new DataView(buffer, 0, 2);
assert.throws(RangeError, function() {
sample.setInt16(1, 39);
}, "1 + 2 > 2 (length)");
sample = new DataView(buffer, 0, 1);
assert.throws(RangeError, function() {
sample.setInt16(0, 39);
}, "0 + 2 > 1 (length)");
sample = new DataView(buffer, 4, 2);
assert.throws(RangeError, function() {
sample.setInt16(1, 39);
}, "1 + 2 > 2 (offset+length)");
sample = new DataView(buffer, 4, 1);
assert.throws(RangeError, function() {
sample.setInt16(0, 39);
}, "0 + 2 > 1 (offset+length)");
sample = new DataView(buffer, 0);
assert.sameValue(sample.getInt16(0), 0, "[0] no value was set");
assert.sameValue(sample.getInt16(2), 0, "[1] no value was set");
assert.sameValue(sample.getInt16(4), 0, "[2] no value was set");
assert.sameValue(sample.getInt16(6), 0, "[3] no value was set");
assert.sameValue(sample.getInt16(8), 0, "[4] no value was set");
assert.sameValue(sample.getInt16(10), 0, "[5] no value was set");

View File

@ -17,7 +17,7 @@ info: >
... ...
---*/ ---*/
var dataView = new DataView(new ArrayBuffer(8)); var dataView = new DataView(new ArrayBuffer(8), 0);
dataView.setInt16(+0, 1); dataView.setInt16(+0, 1);
assert.sameValue(dataView.getInt16(0), 1, "setInt16(+0, 1)"); assert.sameValue(dataView.getInt16(0), 1, "setInt16(+0, 1)");

View 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.setint16
es6id: 24.2.4.16
description: >
Set value as undefined (cast to 0) when value argument is not present
info: |
24.2.4.16 DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )
1. Let v be the this value.
2. If littleEndian is not present, let littleEndian be false.
3. Return ? SetViewValue(v, byteOffset, littleEndian, "Int16", 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: [DataView.prototype.getInt16]
---*/
var buffer = new ArrayBuffer(8);
var sample = new DataView(buffer, 0);
sample.setInt16(0, 42);
var result = sample.setInt16(0);
assert.sameValue(sample.getInt16(0), 0);
assert.sameValue(result, undefined);

View File

@ -22,28 +22,26 @@ info: >
... ...
---*/ ---*/
var dataView = new DataView(new ArrayBuffer(8)); var dataView = new DataView(new ArrayBuffer(8), 0);
function DummyError() { }
var poisoned = { var poisoned = {
valueOf: function() { valueOf: function() {
throw new DummyError(); throw new Test262Error();
} }
}; };
assert.throws(DummyError, function() { assert.throws(Test262Error, function() {
dataView.setInt16(Infinity, poisoned); dataView.setInt16(Infinity, poisoned);
}, "setInt16(Infinity, poisoned)"); }, "setInt16(Infinity, poisoned)");
assert.throws(DummyError, function() { assert.throws(Test262Error, function() {
dataView.setInt16(100, poisoned); dataView.setInt16(100, poisoned);
}, "setInt16(100, poisoned)"); }, "setInt16(100, poisoned)");
assert.throws(DummyError, function() { assert.throws(Test262Error, function() {
dataView.setInt16('Infinity', poisoned); dataView.setInt16('Infinity', poisoned);
}, "setInt16('Infinity', poisoned)"); }, "setInt16('Infinity', poisoned)");
assert.throws(DummyError, function() { assert.throws(Test262Error, function() {
dataView.setInt16('100', poisoned); dataView.setInt16('100', poisoned);
}, "setInt16('100', poisoned)"); }, "setInt16('100', poisoned)");

View File

@ -0,0 +1,31 @@
// 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.setint16
es6id: 24.2.4.16
description: >
Return abrupt from ToNumber(symbol byteOffset)
info: |
24.2.4.16 DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )
1. Let v be the this value.
2. If littleEndian is not present, let littleEndian be false.
3. Return ? SetViewValue(v, byteOffset, littleEndian, "Int16", 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.setInt16(s, 1);
});

View File

@ -0,0 +1,44 @@
// 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.setint16
es6id: 24.2.4.16
description: >
Return abrupt from ToNumber(byteOffset)
info: |
24.2.4.16 DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )
1. Let v be the this value.
2. If littleEndian is not present, let littleEndian be false.
3. Return ? SetViewValue(v, byteOffset, littleEndian, "Int16", 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.setInt16(bo1, 1);
}, "valueOf");
assert.throws(Test262Error, function() {
sample.setInt16(bo2, 1);
}, "toString");

View File

@ -0,0 +1,31 @@
// 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.setint16
es6id: 24.2.4.16
description: >
Return abrupt from ToNumber(symbol value)
info: |
24.2.4.16 DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )
1. Let v be the this value.
2. If littleEndian is not present, let littleEndian be false.
3. Return ? SetViewValue(v, byteOffset, littleEndian, "Int16", 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.setInt16(0, s);
});

View File

@ -0,0 +1,44 @@
// 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.setint16
es6id: 24.2.4.16
description: >
Return abrupt from ToNumber(value)
info: |
24.2.4.16 DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )
1. Let v be the this value.
2. If littleEndian is not present, let littleEndian be false.
3. Return ? SetViewValue(v, byteOffset, littleEndian, "Int16", 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.setInt16(0, bo1);
}, "valueOf");
assert.throws(Test262Error, function() {
sample.setInt16(0, bo2);
}, "toString");

View File

@ -0,0 +1,58 @@
// 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.setint16
es6id: 24.2.4.16
description: >
Set values on the little endian order
info: |
24.2.4.16 DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )
1. Let v be the this value.
2. If littleEndian is not present, let littleEndian be false.
3. Return ? SetViewValue(v, byteOffset, littleEndian, "Int16", 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: [DataView.prototype.getInt16]
---*/
var buffer = new ArrayBuffer(8);
var sample = new DataView(buffer, 0);
var result;
result = sample.setInt16(0, -1870724872, true);
assert.sameValue(result, undefined, "returns undefined #1");
assert.sameValue(sample.getInt16(0), -2048);
result = sample.setInt16(0, -134185072, true);
assert.sameValue(result, undefined, "returns undefined #2");
assert.sameValue(sample.getInt16(0), -28545);
result = sample.setInt16(0, 1870724872, true);
assert.sameValue(result, undefined, "returns undefined #3");
assert.sameValue(sample.getInt16(0), 2303);
result = sample.setInt16(0, 150962287, true);
assert.sameValue(result, undefined, "returns undefined #4");
assert.sameValue(sample.getInt16(0), 28544);
result = sample.setInt16(0, 4160782224, true);
assert.sameValue(result, undefined, "returns undefined #5");
assert.sameValue(sample.getInt16(0), -28545);
result = sample.setInt16(0, 2424242424, true);
assert.sameValue(result, undefined, "returns undefined #6");
assert.sameValue(sample.getInt16(0), -2048);

View File

@ -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.setint16
es6id: 24.2.4.16
description: >
Set values and return undefined
info: |
24.2.4.16 DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )
1. Let v be the this value.
2. If littleEndian is not present, let littleEndian be false.
3. Return ? SetViewValue(v, byteOffset, littleEndian, "Int16", 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: [DataView.prototype.getInt16]
includes: [byteConversionValues.js]
---*/
var buffer = new ArrayBuffer(8);
var sample = new DataView(buffer, 0);
var values = byteConversionValues.values;
var expectedValues = byteConversionValues.expected.Int16;
values.forEach(function(value, i) {
var expected = expectedValues[i];
var result = sample.setInt16(0, value, false);
assert.sameValue(
sample.getInt16(0),
expected,
"value: " + value
);
assert.sameValue(
result,
undefined,
"return is undefined, value: " + value
);
});

View 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.setint16
es6id: 24.2.4.16
description: >
Throws a TypeError if this does not have a [[DataView]] internal slot
info: |
24.2.4.16 DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )
1. Let v be the this value.
2. If littleEndian is not present, let littleEndian be false.
3. Return ? SetViewValue(v, byteOffset, littleEndian, "Int16", 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 setInt16 = DataView.prototype.setInt16;
assert.throws(TypeError, function() {
setInt16.call({});
}, "{}");
assert.throws(TypeError, function() {
setInt16.call([]);
}, "[]");
var ab = new ArrayBuffer(1);
assert.throws(TypeError, function() {
setInt16.call(ab);
}, "ArrayBuffer");
var ta = new Int8Array();
assert.throws(TypeError, function() {
setInt16.call(ta);
}, "TypedArray");

View File

@ -0,0 +1,51 @@
// 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.setint16
es6id: 24.2.4.16
description: Throws a TypeError if this is not Object
info: |
24.2.4.16 DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )
1. Let v be the this value.
2. If littleEndian is not present, let littleEndian be false.
3. Return ? SetViewValue(v, byteOffset, littleEndian, "Int16", 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 setInt16 = DataView.prototype.setInt16;
assert.throws(TypeError, function() {
setInt16.call(undefined);
}, "undefined");
assert.throws(TypeError, function() {
setInt16.call(null);
}, "null");
assert.throws(TypeError, function() {
setInt16.call(1);
}, "1");
assert.throws(TypeError, function() {
setInt16.call("string");
}, "string");
assert.throws(TypeError, function() {
setInt16.call(true);
}, "true");
assert.throws(TypeError, function() {
setInt16.call(false);
}, "false");
var s = Symbol("1");
assert.throws(TypeError, function() {
setInt16.call(s);
}, "symbol");

View File

@ -0,0 +1,47 @@
// 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.setint16
es6id: 24.2.4.16
description: >
Boolean littleEndian argument coerced in ToBoolean
info: |
24.2.4.16 DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )
1. Let v be the this value.
2. If littleEndian is not present, let littleEndian be false.
3. Return ? SetViewValue(v, byteOffset, littleEndian, "Int16", 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).
features: [DataView.prototype.getInt16, Symbol]
---*/
var buffer = new ArrayBuffer(8);
var sample = new DataView(buffer, 0);
// False
sample.setInt16(0, 1);
assert.sameValue(sample.getInt16(0), 1, "no arg");
sample.setInt16(0, 2, undefined);
assert.sameValue(sample.getInt16(0), 2, "undefined");
sample.setInt16(0, 3, null);
assert.sameValue(sample.getInt16(0), 3, "null");
sample.setInt16(0, 4, 0);
assert.sameValue(sample.getInt16(0), 4, "0");
sample.setInt16(0, 5, "");
assert.sameValue(sample.getInt16(0), 5, "the empty string");
// True
sample.setInt16(0, 1536, {});
assert.sameValue(sample.getInt16(0), 6, "{}");
sample.setInt16(0, 1792, Symbol("1"));
assert.sameValue(sample.getInt16(0), 7, "symbol");
sample.setInt16(0, 2048, 1);
assert.sameValue(sample.getInt16(0), 8, "1");
sample.setInt16(0, 2304, "string");
assert.sameValue(sample.getInt16(0), 9, "string");