[test262] Add staging tests for isSubsetOf set method

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}
This commit is contained in:
Rezvan Mahdavi Hezaveh 2023-11-23 05:23:25 -08:00 committed by test262-pr-bot
parent 2060494f28
commit 467a0fe68f
3 changed files with 78 additions and 0 deletions

View File

@ -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);

View File

@ -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);

View File

@ -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);