diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /js/src/jit-test/tests/basic/assign-reuse-propmap.js | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'js/src/jit-test/tests/basic/assign-reuse-propmap.js')
-rw-r--r-- | js/src/jit-test/tests/basic/assign-reuse-propmap.js | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/basic/assign-reuse-propmap.js b/js/src/jit-test/tests/basic/assign-reuse-propmap.js new file mode 100644 index 0000000000..e78bddd20e --- /dev/null +++ b/js/src/jit-test/tests/basic/assign-reuse-propmap.js @@ -0,0 +1,41 @@ +function testBasic() { + var o1 = {x: 1}; + var o2 = {a: 1, b: 2, c: 3, x: 4, y: 5, z: 6}; + for (var i = 0; i < 4; i++) { + var to1 = Object.assign({}, o1); + assertEq(JSON.stringify(to1), '{"x":1}'); + var to2 = Object.assign({}, o2); + assertEq(JSON.stringify(to2), '{"a":1,"b":2,"c":3,"x":4,"y":5,"z":6}'); + } +} +testBasic(); + +// Target object's proto must not be changed by assign. +function testProto() { + var from = {}; + from.a = 1; + from.b = 2; + from.c = 3; + for (var i = 0; i < 5; i++) { + var to = Object.assign(Object.create(null), from); + assertEq(JSON.stringify(to), '{"a":1,"b":2,"c":3}'); + assertEq(Object.getPrototypeOf(to), null); + } +} +testProto(); + +// Target object's realm must not be changed by assign. +function testRealm() { + var global = newGlobal({sameCompartmentAs: this}); + var from = global.evaluate("({})"); + from.a = 1; + from.b = 2; + from.c = 3; + for (var i = 0; i < 5; i++) { + var to = Object.assign({}, from); + assertEq(JSON.stringify(to), '{"a":1,"b":2,"c":3}'); + assertEq(objectGlobal(to), this); + assertEq(Object.getPrototypeOf(to), Object.prototype); + } +} +testRealm(); |