diff options
Diffstat (limited to 'test/built-ins/TypedArray/prototype/every/BigInt/callbackfn-set-value-during-interaction.js')
-rw-r--r-- | test/built-ins/TypedArray/prototype/every/BigInt/callbackfn-set-value-during-interaction.js | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/test/built-ins/TypedArray/prototype/every/BigInt/callbackfn-set-value-during-interaction.js b/test/built-ins/TypedArray/prototype/every/BigInt/callbackfn-set-value-during-interaction.js new file mode 100644 index 000000000..8949bb2f1 --- /dev/null +++ b/test/built-ins/TypedArray/prototype/every/BigInt/callbackfn-set-value-during-interaction.js @@ -0,0 +1,58 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-%typedarray%.prototype.every +description: > + Integer indexed values changed during iteration +info: | + 22.2.3.7 %TypedArray%.prototype.every ( callbackfn [ , thisArg ] ) + + %TypedArray%.prototype.every is a distinct function that implements the same + algorithm as Array.prototype.every as defined in 22.1.3.5 except that the this + object's [[ArrayLength]] internal slot is accessed in place of performing a + [[Get]] of "length". + + 22.1.3.5 Array.prototype.every ( callbackfn [ , thisArg ] ) + + ... + 6. Repeat, while k < len + .. + c. If kPresent is true, then + i. Let kValue be ? Get(O, Pk). + ii. Let testResult be ToBoolean(? Call(callbackfn, T, « kValue, k, O »)). + ... +includes: [testBigIntTypedArray.js] +features: [BigInt, Reflect.set, TypedArray] +---*/ + +testWithBigIntTypedArrayConstructors(function(TA) { + var sample = new TA(convertToBigInt([42, 43, 44])); + var newVal = 0; + + sample.every(function(val, i) { + if (i > 0) { + assert.sameValue( + sample[i - 1], convertToBigInt(newVal - 1), + "get the changed value during the loop" + ); + assert.sameValue( + Reflect.set(sample, 0, convertToBigInt(7)), + true, + "re-set a value for sample[0]" + ); + } + assert.sameValue( + Reflect.set(sample, i, convertToBigInt(newVal)), + true, + "set value during iteration" + ); + + newVal++; + + return true; + }); + + assert.sameValue(sample[0], convertToBigInt(7), "changed values after iteration [0] == 7"); + assert.sameValue(sample[1], convertToBigInt(1), "changed values after iteration [1] == 1"); + assert.sameValue(sample[2], convertToBigInt(2), "changed values after iteration [2] == 2"); +}); |