(entriesHelper, keysHelper, valuesHelper, valuesFromEntries, valuesFromValues, oobThrows)
| 2064 | })(); |
| 2065 | |
| 2066 | function EntriesKeysValues(entriesHelper, keysHelper, valuesHelper, |
| 2067 | valuesFromEntries, valuesFromValues, oobThrows) { |
| 2068 | for (let ctor of ctors) { |
| 2069 | const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, |
| 2070 | 8 * ctor.BYTES_PER_ELEMENT); |
| 2071 | const fixedLength = new ctor(rab, 0, 4); |
| 2072 | const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); |
| 2073 | const lengthTracking = new ctor(rab, 0); |
| 2074 | const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); |
| 2075 | |
| 2076 | // Write some data into the array. |
| 2077 | const taWrite = new ctor(rab); |
| 2078 | for (let i = 0; i < 4; ++i) { |
| 2079 | WriteToTypedArray(taWrite, i, 2 * i); |
| 2080 | } |
| 2081 | |
| 2082 | // Orig. array: [0, 2, 4, 6] |
| 2083 | // [0, 2, 4, 6] << fixedLength |
| 2084 | // [4, 6] << fixedLengthWithOffset |
| 2085 | // [0, 2, 4, 6, ...] << lengthTracking |
| 2086 | // [4, 6, ...] << lengthTrackingWithOffset |
| 2087 | |
| 2088 | assertEquals([0, 2, 4, 6], valuesFromEntries(fixedLength)); |
| 2089 | assertEquals([0, 2, 4, 6], valuesFromValues(fixedLength)); |
| 2090 | assertEquals([0, 1, 2, 3], Array.from(keysHelper(fixedLength))); |
| 2091 | |
| 2092 | assertEquals([4, 6], valuesFromEntries(fixedLengthWithOffset)); |
| 2093 | assertEquals([4, 6], valuesFromValues(fixedLengthWithOffset)); |
| 2094 | assertEquals([0, 1], Array.from(keysHelper(fixedLengthWithOffset))); |
| 2095 | |
| 2096 | assertEquals([0, 2, 4, 6], valuesFromEntries(lengthTracking)); |
| 2097 | assertEquals([0, 2, 4, 6], valuesFromValues(lengthTracking)); |
| 2098 | assertEquals([0, 1, 2, 3], Array.from(keysHelper(lengthTracking))); |
| 2099 | |
| 2100 | assertEquals([4, 6], valuesFromEntries(lengthTrackingWithOffset)); |
| 2101 | assertEquals([4, 6], valuesFromValues(lengthTrackingWithOffset)); |
| 2102 | assertEquals([0, 1], Array.from(keysHelper(lengthTrackingWithOffset))); |
| 2103 | |
| 2104 | // Shrink so that fixed length TAs go out of bounds. |
| 2105 | rab.resize(3 * ctor.BYTES_PER_ELEMENT); |
| 2106 | |
| 2107 | // Orig. array: [0, 2, 4] |
| 2108 | // [0, 2, 4, ...] << lengthTracking |
| 2109 | // [4, ...] << lengthTrackingWithOffset |
| 2110 | |
| 2111 | // TypedArray.prototype.{entries, keys, values} throw right away when |
| 2112 | // called. Array.prototype.{entries, keys, values} don't throw, but when |
| 2113 | // we try to iterate the returned ArrayIterator, that throws. |
| 2114 | if (oobThrows) { |
| 2115 | assertThrows(() => { entriesHelper(fixedLength); }); |
| 2116 | assertThrows(() => { valuesHelper(fixedLength); }); |
| 2117 | assertThrows(() => { keysHelper(fixedLength); }); |
| 2118 | |
| 2119 | assertThrows(() => { entriesHelper(fixedLengthWithOffset); }); |
| 2120 | assertThrows(() => { valuesHelper(fixedLengthWithOffset); }); |
| 2121 | assertThrows(() => { keysHelper(fixedLengthWithOffset); }); |
| 2122 | } else { |
| 2123 | entriesHelper(fixedLength); |
no test coverage detected
searching dependent graphs…