From 904d90d0d6f9a7f6c2da24348960a6d51ff28dc1 Mon Sep 17 00:00:00 2001 From: Robin Templeton <robin@igalia.com> Date: Thu, 31 May 2018 14:57:34 -0400 Subject: [PATCH] Add Object.prototype.toString tests for BigInt. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reported by André Bargull in <https://bugzilla.mozilla.org/show_bug.cgi?id=1464758>. --- .../toString/symbol-tag-non-str-bigint.js | 44 +++++++++++++++++++ .../toString/symbol-tag-override-bigint.js | 19 ++++++++ 2 files changed, 63 insertions(+) create mode 100644 test/built-ins/Object/prototype/toString/symbol-tag-non-str-bigint.js create mode 100644 test/built-ins/Object/prototype/toString/symbol-tag-override-bigint.js diff --git a/test/built-ins/Object/prototype/toString/symbol-tag-non-str-bigint.js b/test/built-ins/Object/prototype/toString/symbol-tag-non-str-bigint.js new file mode 100644 index 0000000000..6617f74fbb --- /dev/null +++ b/test/built-ins/Object/prototype/toString/symbol-tag-non-str-bigint.js @@ -0,0 +1,44 @@ +// Copyright (C) 2018 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object.prototype.tostring +description: Non-string values of `@@toStringTag` property are ignored +info: | + 14. Else, let builtinTag be "Object". + 15. Let tag be ? Get(O, @@toStringTag). + 16. If Type(tag) is not String, let tag be builtinTag. + 17. Return the string-concatenation of "[object ", tag, and "]". +features: [BigInt, Symbol.toStringTag] +---*/ + +let custom1 = BigInt(0); +let custom2 = Object(BigInt(0)); + +Object.defineProperty(BigInt.prototype, Symbol.toStringTag, {value: undefined}); +assert.sameValue(Object.prototype.toString.call(custom1), '[object Object]'); +assert.sameValue(Object.prototype.toString.call(custom2), '[object Object]'); + +Object.defineProperty(BigInt.prototype, Symbol.toStringTag, {value: null}); +assert.sameValue(Object.prototype.toString.call(custom1), '[object Object]'); +assert.sameValue(Object.prototype.toString.call(custom2), '[object Object]'); + +Object.defineProperty(BigInt.prototype, Symbol.toStringTag, {value: Symbol.toStringTag}); +assert.sameValue(Object.prototype.toString.call(custom1), '[object Object]'); +assert.sameValue(Object.prototype.toString.call(custom2), '[object Object]'); + +Object.defineProperty(BigInt.prototype, Symbol.toStringTag, {value: 86}); +assert.sameValue(Object.prototype.toString.call(custom1), '[object Object]'); +assert.sameValue(Object.prototype.toString.call(custom2), '[object Object]'); + +Object.defineProperty(BigInt.prototype, Symbol.toStringTag, {value: new String('test262')}); +assert.sameValue(Object.prototype.toString.call(custom1), '[object Object]'); +assert.sameValue(Object.prototype.toString.call(custom2), '[object Object]'); + +Object.defineProperty(BigInt.prototype, Symbol.toStringTag, {value: {}}); +assert.sameValue(Object.prototype.toString.call(custom1), '[object Object]'); +assert.sameValue(Object.prototype.toString.call(custom2), '[object Object]'); + +Object.defineProperty(BigInt.prototype, Symbol.toStringTag, {value: _ => 'str'}); +assert.sameValue(Object.prototype.toString.call(custom1), '[object Object]'); +assert.sameValue(Object.prototype.toString.call(custom2), '[object Object]'); diff --git a/test/built-ins/Object/prototype/toString/symbol-tag-override-bigint.js b/test/built-ins/Object/prototype/toString/symbol-tag-override-bigint.js new file mode 100644 index 0000000000..54027d4873 --- /dev/null +++ b/test/built-ins/Object/prototype/toString/symbol-tag-override-bigint.js @@ -0,0 +1,19 @@ +// Copyright (C) 2018 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object.prototype.tostring +description: String values of `@@toStringTag` property override built-in tags +info: | + 15. Let tag be ? Get(O, @@toStringTag). + 16. If Type(tag) is not String, let tag be builtinTag. + 17. Return the string-concatenation of "[object ", tag, and "]". +features: [BigInt, Symbol.toStringTag] +---*/ + +let custom1 = BigInt(0); +let custom2 = Object(BigInt(0)); + +Object.defineProperty(BigInt.prototype, Symbol.toStringTag, {value: 'test262'}); +assert.sameValue(Object.prototype.toString.call(custom1), '[object test262]'); +assert.sameValue(Object.prototype.toString.call(custom2), '[object test262]'); -- GitLab