diff options
Diffstat (limited to 'js/src/tests/test262/built-ins/Set/prototype/difference/receiver-not-set.js')
-rw-r--r-- | js/src/tests/test262/built-ins/Set/prototype/difference/receiver-not-set.js | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/js/src/tests/test262/built-ins/Set/prototype/difference/receiver-not-set.js b/js/src/tests/test262/built-ins/Set/prototype/difference/receiver-not-set.js new file mode 100644 index 0000000000..83e66706af --- /dev/null +++ b/js/src/tests/test262/built-ins/Set/prototype/difference/receiver-not-set.js @@ -0,0 +1,47 @@ +// |reftest| skip -- set-methods is not supported +// Copyright (C) 2023 Anthony Frehner and Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-set.prototype.difference +description: Set.prototype.difference throws when receiver is not a Set +features: [set-methods] +---*/ + +class MySetLike { + constructor() { + this.size = 2; + this.has = () => {}; + this.keys = function* keys() { + yield 2; + yield 3; + }; + } +} + +const s1 = new MySetLike(); +const s2 = new Set(); +assert.throws( + TypeError, + () => { + Set.prototype.difference.call(s1, s2); + }, + "Set-like class" +); + +const s3 = { + size: 2, + has: () => {}, + keys: function* keys() { + yield 2; + yield 3; + }, +}; +assert.throws( + TypeError, + () => { + Set.prototype.difference.call(s3, s2); + }, + "Set-like object" +); + +reportCompare(0, 0); |