Skip to content

Commit

Permalink
[test262] Add staging tests for isSubsetOf set method
Browse files Browse the repository at this point in the history
This CL adds three tests to staging directory of test262.

Bug: v8:13556
Change-Id: Id6e468a0fa29528350a10c94e9dd19c2835788e8
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5055866
Reviewed-by: Liviu Rau <liviurau@chromium.org>
Commit-Queue: Liviu Rau <liviurau@google.com>
Cr-Commit-Position: refs/heads/main@{#91139}
  • Loading branch information
rmahdav authored and test262-pr-bot committed Nov 27, 2023
1 parent 2060494 commit 467a0fe
Show file tree
Hide file tree
Showing 3 changed files with 78 additions and 0 deletions.
24 changes: 24 additions & 0 deletions test/staging/set-is-subset-on-set-like.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
// Copyright (C) 2023 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
description: Test isSubsetOf set method on a set like with equal size.
features: [set-methods]
---*/

const SetLike = {
arr: [42, 44, 45],
size: 3,
keys() {
return this.arr[Symbol.iterator]();
},
has(key) {
return this.arr.indexOf(key) != -1;
}
};

const firstSet = new Set();
firstSet.add(42);
firstSet.add(43);
firstSet.add(45);

assert.sameValue(firstSet.isSubsetOf(SetLike), false);
25 changes: 25 additions & 0 deletions test/staging/set-is-subset-table-receiver-cleared.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
// Copyright (C) 2023 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
description: Test isSubsetOf set method receiver is cleared.
features: [set-methods]
---*/

const firstSet = new Set();
firstSet.add(42);
firstSet.add(43);

const otherSet = new Set();
otherSet.add(42);
otherSet.add(43);
otherSet.add(47);

Object.defineProperty(otherSet, 'size', {
get: function() {
firstSet.clear();
return 3;
},

});

assert.sameValue(firstSet.isSubsetOf(otherSet), true);
29 changes: 29 additions & 0 deletions test/staging/set-is-subset-table-transition.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
// Copyright (C) 2023 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
description: Test isSubsetOf set method after table transition in receiver.
features: [set-methods]
---*/

const firstSet = new Set();
firstSet.add(42);
firstSet.add(43);
firstSet.add(44);

const setLike = {
size: 5,
keys() {
return [1, 2, 3, 4, 5].keys();
},
has(key) {
if (key == 42) {
// Cause a table transition in the receiver.
firstSet.clear();
}
// Return true so we keep iterating the transitioned receiver.
return true;
}
};

assert.sameValue(firstSet.isSubsetOf(setLike), true);
assert.sameValue(firstSet.size, 0);

0 comments on commit 467a0fe

Please sign in to comment.