Skip to content

Commit

Permalink
Improve tests for BigInt.prototype.valueOf (#1256)
Browse files Browse the repository at this point in the history
* Improve tests for BigInt.prototype.valueOf

* fixup! Improve tests for BigInt.prototype.valueOf

* fixup! Improve tests for BigInt.prototype.valueOf

* fixup! Improve tests for BigInt.prototype.valueOf
  • Loading branch information
leobalter authored and rwaldron committed Oct 3, 2017
1 parent ba891c7 commit 9737a5f
Show file tree
Hide file tree
Showing 6 changed files with 111 additions and 51 deletions.
16 changes: 0 additions & 16 deletions harness/typeCoercion.js
Original file line number Diff line number Diff line change
Expand Up @@ -407,19 +407,3 @@ function testNotCoercibleToBigInt(test) {
testStringValue("0xg");
testStringValue("1n");
}

function testCoercibleToBigIntThisValue(value, test) {
test(value);
test(Object(value));
}

function testNotCoercibleToBigIntThisValue(test) {
test(undefined);
test(null);
test(true);
test(false);
test("");
test(Symbol(""));
test(0);
test({});
}
18 changes: 18 additions & 0 deletions test/built-ins/BigInt/prototype/valueOf/return.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
// Copyright (C) 2017 Robin Templeton. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
esid: sec-bigint.prototype.valueof
description: >
BigInt.prototype.valueOf returns the primitive BigInt value.
info: |
BigInt.prototype.valueOf ( )
Return ? thisBigIntValue(this value).
features: [BigInt]
---*/

var valueOf = BigInt.prototype.valueOf;

assert.sameValue(valueOf.call(0n), 0n, "0n");
assert.sameValue(valueOf.call(Object(0n)), 0n, "Object(0n)");
17 changes: 0 additions & 17 deletions test/built-ins/BigInt/prototype/valueOf/this-value-err.js

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
// Copyright (C) 2017 Robin Templeton. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
esid: sec-bigint.prototype.valueof
description: >
Throws a TypeError if this is an Object without a [[BigIntData]] internal.
info: |
BigInt.prototype.valueOf ( )
1. Return ? thisBigIntValue(this value).
The abstract operation thisBigIntValue(value) performs the following steps:
1. If Type(value) is BigInt, return value.
2. If Type(value) is Object and value has a [[BigIntData]] internal slot, then
...
3. Throw a TypeError exception.
features: [BigInt]
---*/

var valueOf = BigInt.prototype.valueOf;

assert.throws(TypeError, function() {
valueOf.call({});
}, "{}");

assert.throws(TypeError, function() {
valueOf.call(Object(1));
}, "Object(1)");
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
// Copyright (C) 2017 Robin Templeton. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
esid: sec-bigint.prototype.valueof
description: >
Throws a TypeError if this is not a BigInt neither an Object.
info: |
BigInt.prototype.valueOf ( )
1. Return ? thisBigIntValue(this value).
The abstract operation thisBigIntValue(value) performs the following steps:
1. If Type(value) is BigInt, return value.
2. If Type(value) is Object and value has a [[BigIntData]] internal slot, then
...
3. Throw a TypeError exception.
features: [BigInt, Symbol]
---*/

var valueOf = BigInt.prototype.valueOf;

assert.throws(TypeError, function() {
valueOf.call(undefined);
}, "undefined");

assert.throws(TypeError, function() {
valueOf.call(null);
}, "null");

assert.throws(TypeError, function() {
valueOf.call(false);
}, "false");

assert.throws(TypeError, function() {
valueOf.call(true);
}, "true");

assert.throws(TypeError, function() {
valueOf.call("");
}, "the empty string");

assert.throws(TypeError, function() {
valueOf.call("1n");
}, "string");

assert.throws(TypeError, function() {
valueOf.call(0);
}, "number (0)");

assert.throws(TypeError, function() {
valueOf.call(1);
}, "number (1)");

assert.throws(TypeError, function() {
valueOf.call(NaN);
}, "NaN");

var s = Symbol();
assert.throws(TypeError, function() {
valueOf.call(s);
}, "symbol");
18 changes: 0 additions & 18 deletions test/built-ins/BigInt/prototype/valueOf/this-value.js

This file was deleted.

0 comments on commit 9737a5f

Please sign in to comment.