mirror of https://github.com/tc39/test262.git
Add tests for accessors increasing length
This commit is contained in:
parent
b7da7c75ce
commit
7733d900b2
|
@ -0,0 +1,49 @@
|
||||||
|
// Copyright (C) 2021 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
|
||||||
|
/*---
|
||||||
|
esid: sec-array.prototype.sort
|
||||||
|
description: >
|
||||||
|
Previously implementation-defined aspects of Array.prototype.sort.
|
||||||
|
info: |
|
||||||
|
Historically, many aspects of Array.prototype.sort remained
|
||||||
|
implementation-defined. https://github.com/tc39/ecma262/pull/1585
|
||||||
|
described some behaviors more precisely, reducing the amount of cases
|
||||||
|
that result in an implementation-defined sort order.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
const array = [undefined, 'c', /*hole*/, 'b', undefined, /*hole*/, 'a', 'd'];
|
||||||
|
|
||||||
|
Object.defineProperty(array, '2', {
|
||||||
|
get() {
|
||||||
|
array.length = array.length + 2;
|
||||||
|
return this.foo;
|
||||||
|
},
|
||||||
|
set(v) {
|
||||||
|
this.foo = v;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
array.sort();
|
||||||
|
|
||||||
|
assert.sameValue(array[0], 'a');
|
||||||
|
assert.sameValue(array[1], 'b');
|
||||||
|
assert.sameValue(array[3], 'd');
|
||||||
|
assert.sameValue(array[4], undefined);
|
||||||
|
assert.sameValue(array[5], undefined);
|
||||||
|
assert.sameValue(array[6], undefined);
|
||||||
|
assert.sameValue('7' in array, false);
|
||||||
|
assert.sameValue(array.hasOwnProperty('7'), false);
|
||||||
|
assert.sameValue('8' in array, false);
|
||||||
|
assert.sameValue(array.hasOwnProperty('8'), false);
|
||||||
|
assert.sameValue('9' in array, false);
|
||||||
|
assert.sameValue(array.hasOwnProperty('9'), false);
|
||||||
|
assert.sameValue(array.length, 10);
|
||||||
|
assert.sameValue(array.foo, 'c');
|
||||||
|
|
||||||
|
assert.sameValue(array[2], 'c');
|
||||||
|
assert.sameValue('10' in array, false);
|
||||||
|
assert.sameValue(array.hasOwnProperty('10'), false);
|
||||||
|
assert.sameValue('11' in array, false);
|
||||||
|
assert.sameValue(array.hasOwnProperty('11'), false);
|
||||||
|
assert.sameValue(array.length, 12);
|
|
@ -0,0 +1,43 @@
|
||||||
|
// Copyright (C) 2021 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
|
||||||
|
/*---
|
||||||
|
esid: sec-array.prototype.sort
|
||||||
|
description: >
|
||||||
|
Previously implementation-defined aspects of Array.prototype.sort.
|
||||||
|
info: |
|
||||||
|
Historically, many aspects of Array.prototype.sort remained
|
||||||
|
implementation-defined. https://github.com/tc39/ecma262/pull/1585
|
||||||
|
described some behaviors more precisely, reducing the amount of cases
|
||||||
|
that result in an implementation-defined sort order.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
const array = [undefined, 'c', /*hole*/, 'b', undefined, /*hole*/, 'a', 'd'];
|
||||||
|
|
||||||
|
Object.defineProperty(array, '2', {
|
||||||
|
get() {
|
||||||
|
return this.foo;
|
||||||
|
},
|
||||||
|
set(v) {
|
||||||
|
array.length = array.length + 2;
|
||||||
|
this.foo = v;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
array.sort();
|
||||||
|
|
||||||
|
assert.sameValue(array[0], 'a');
|
||||||
|
assert.sameValue(array[1], 'b');
|
||||||
|
assert.sameValue(array[2], 'c');
|
||||||
|
assert.sameValue(array[3], 'd');
|
||||||
|
assert.sameValue(array[4], undefined);
|
||||||
|
assert.sameValue(array[5], undefined);
|
||||||
|
assert.sameValue(array[6], undefined);
|
||||||
|
assert.sameValue('7' in array, false);
|
||||||
|
assert.sameValue(array.hasOwnProperty('7'), false);
|
||||||
|
assert.sameValue('8' in array, false);
|
||||||
|
assert.sameValue(array.hasOwnProperty('8'), false);
|
||||||
|
assert.sameValue('9' in array, false);
|
||||||
|
assert.sameValue(array.hasOwnProperty('9'), false);
|
||||||
|
assert.sameValue(array.length, 10);
|
||||||
|
assert.sameValue(array.foo, 'c');
|
Loading…
Reference in New Issue