Skip to content

Commit 33826f0

Browse files
committed
Addressed relevant review comment from .at method tests.
#4070 (comment)
1 parent 61b8654 commit 33826f0

File tree

2 files changed

+317
-325
lines changed

2 files changed

+317
-325
lines changed

test/built-ins/Array/prototype/copyWithin/resizable-buffer.js

+153-157
Original file line numberDiff line numberDiff line change
@@ -14,162 +14,158 @@ const ArrayCopyWithinHelper = (ta, ...rest) => {
1414
Array.prototype.copyWithin.call(ta, ...rest);
1515
};
1616

17-
function TestCopyWithin() {
18-
for (let ctor of ctors) {
19-
const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT);
20-
const fixedLength = new ctor(rab, 0, 4);
21-
const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2);
22-
const lengthTracking = new ctor(rab, 0);
23-
const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT);
24-
25-
// Write some data into the array.
26-
const taWrite = new ctor(rab);
27-
for (let i = 0; i < 4; ++i) {
28-
WriteToTypedArray(taWrite, i, i);
29-
}
30-
31-
// Orig. array: [0, 1, 2, 3]
32-
// [0, 1, 2, 3] << fixedLength
33-
// [2, 3] << fixedLengthWithOffset
34-
// [0, 1, 2, 3, ...] << lengthTracking
35-
// [2, 3, ...] << lengthTrackingWithOffset
36-
37-
ArrayCopyWithinHelper(fixedLength, 0, 2);
38-
assert.compareArray(ToNumbers(fixedLength), [
39-
2,
40-
3,
41-
2,
42-
3
43-
]);
44-
for (let i = 0; i < 4; ++i) {
45-
WriteToTypedArray(taWrite, i, i);
46-
}
47-
ArrayCopyWithinHelper(fixedLengthWithOffset, 0, 1);
48-
assert.compareArray(ToNumbers(fixedLengthWithOffset), [
49-
3,
50-
3
51-
]);
52-
for (let i = 0; i < 4; ++i) {
53-
WriteToTypedArray(taWrite, i, i);
54-
}
55-
ArrayCopyWithinHelper(lengthTracking, 0, 2);
56-
assert.compareArray(ToNumbers(lengthTracking), [
57-
2,
58-
3,
59-
2,
60-
3
61-
]);
62-
ArrayCopyWithinHelper(lengthTrackingWithOffset, 0, 1);
63-
assert.compareArray(ToNumbers(lengthTrackingWithOffset), [
64-
3,
65-
3
66-
]);
67-
68-
// Shrink so that fixed length TAs go out of bounds.
69-
rab.resize(3 * ctor.BYTES_PER_ELEMENT);
70-
for (let i = 0; i < 3; ++i) {
71-
WriteToTypedArray(taWrite, i, i);
72-
}
73-
74-
// Orig. array: [0, 1, 2]
75-
// [0, 1, 2, ...] << lengthTracking
76-
// [2, ...] << lengthTrackingWithOffset
77-
78-
ArrayCopyWithinHelper(fixedLength, 0, 1);
79-
ArrayCopyWithinHelper(fixedLengthWithOffset, 0, 1);
80-
// We'll check below that these were no-op.
81-
82-
assert.compareArray(ToNumbers(lengthTracking), [
83-
0,
84-
1,
85-
2
86-
]);
87-
ArrayCopyWithinHelper(lengthTracking, 0, 1);
88-
assert.compareArray(ToNumbers(lengthTracking), [
89-
1,
90-
2,
91-
2
92-
]);
93-
ArrayCopyWithinHelper(lengthTrackingWithOffset, 0, 1);
94-
assert.compareArray(ToNumbers(lengthTrackingWithOffset), [2]);
95-
96-
// Shrink so that the TAs with offset go out of bounds.
97-
rab.resize(1 * ctor.BYTES_PER_ELEMENT);
98-
WriteToTypedArray(taWrite, 0, 0);
99-
ArrayCopyWithinHelper(fixedLength, 0, 1, 1);
100-
ArrayCopyWithinHelper(fixedLengthWithOffset, 0, 1, 1);
101-
ArrayCopyWithinHelper(lengthTrackingWithOffset, 0, 1, 1);
102-
103-
assert.compareArray(ToNumbers(lengthTracking), [0]);
104-
ArrayCopyWithinHelper(lengthTracking, 0, 0, 1);
105-
assert.compareArray(ToNumbers(lengthTracking), [0]);
106-
107-
// Shrink to zero.
108-
rab.resize(0);
109-
ArrayCopyWithinHelper(fixedLength, 0, 1, 1);
110-
ArrayCopyWithinHelper(fixedLengthWithOffset, 0, 1, 1);
111-
ArrayCopyWithinHelper(lengthTrackingWithOffset, 0, 1, 1);
112-
113-
assert.compareArray(ToNumbers(lengthTracking), []);
114-
ArrayCopyWithinHelper(lengthTracking, 0, 0, 1);
115-
assert.compareArray(ToNumbers(lengthTracking), []);
116-
117-
// Grow so that all TAs are back in-bounds.
118-
rab.resize(6 * ctor.BYTES_PER_ELEMENT);
119-
for (let i = 0; i < 6; ++i) {
120-
WriteToTypedArray(taWrite, i, i);
121-
}
122-
123-
// Orig. array: [0, 1, 2, 3, 4, 5]
124-
// [0, 1, 2, 3] << fixedLength
125-
// [2, 3] << fixedLengthWithOffset
126-
// [0, 1, 2, 3, 4, 5, ...] << lengthTracking
127-
// [2, 3, 4, 5, ...] << lengthTrackingWithOffset
128-
129-
ArrayCopyWithinHelper(fixedLength, 0, 2);
130-
assert.compareArray(ToNumbers(fixedLength), [
131-
2,
132-
3,
133-
2,
134-
3
135-
]);
136-
for (let i = 0; i < 6; ++i) {
137-
WriteToTypedArray(taWrite, i, i);
138-
}
139-
ArrayCopyWithinHelper(fixedLengthWithOffset, 0, 1);
140-
assert.compareArray(ToNumbers(fixedLengthWithOffset), [
141-
3,
142-
3
143-
]);
144-
for (let i = 0; i < 6; ++i) {
145-
WriteToTypedArray(taWrite, i, i);
146-
}
147-
148-
// [0, 1, 2, 3, 4, 5, ...] << lengthTracking
149-
// target ^ ^ start
150-
ArrayCopyWithinHelper(lengthTracking, 0, 2);
151-
assert.compareArray(ToNumbers(lengthTracking), [
152-
2,
153-
3,
154-
4,
155-
5,
156-
4,
157-
5
158-
]);
159-
for (let i = 0; i < 6; ++i) {
160-
WriteToTypedArray(taWrite, i, i);
161-
}
162-
163-
// [2, 3, 4, 5, ...] << lengthTrackingWithOffset
164-
// target ^ ^ start
165-
ArrayCopyWithinHelper(lengthTrackingWithOffset, 0, 1);
166-
assert.compareArray(ToNumbers(lengthTrackingWithOffset), [
167-
3,
168-
4,
169-
5,
170-
5
171-
]);
17+
for (let ctor of ctors) {
18+
const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT);
19+
const fixedLength = new ctor(rab, 0, 4);
20+
const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2);
21+
const lengthTracking = new ctor(rab, 0);
22+
const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT);
23+
24+
// Write some data into the array.
25+
const taWrite = new ctor(rab);
26+
for (let i = 0; i < 4; ++i) {
27+
WriteToTypedArray(taWrite, i, i);
28+
}
29+
30+
// Orig. array: [0, 1, 2, 3]
31+
// [0, 1, 2, 3] << fixedLength
32+
// [2, 3] << fixedLengthWithOffset
33+
// [0, 1, 2, 3, ...] << lengthTracking
34+
// [2, 3, ...] << lengthTrackingWithOffset
35+
36+
ArrayCopyWithinHelper(fixedLength, 0, 2);
37+
assert.compareArray(ToNumbers(fixedLength), [
38+
2,
39+
3,
40+
2,
41+
3
42+
]);
43+
for (let i = 0; i < 4; ++i) {
44+
WriteToTypedArray(taWrite, i, i);
45+
}
46+
ArrayCopyWithinHelper(fixedLengthWithOffset, 0, 1);
47+
assert.compareArray(ToNumbers(fixedLengthWithOffset), [
48+
3,
49+
3
50+
]);
51+
for (let i = 0; i < 4; ++i) {
52+
WriteToTypedArray(taWrite, i, i);
53+
}
54+
ArrayCopyWithinHelper(lengthTracking, 0, 2);
55+
assert.compareArray(ToNumbers(lengthTracking), [
56+
2,
57+
3,
58+
2,
59+
3
60+
]);
61+
ArrayCopyWithinHelper(lengthTrackingWithOffset, 0, 1);
62+
assert.compareArray(ToNumbers(lengthTrackingWithOffset), [
63+
3,
64+
3
65+
]);
66+
67+
// Shrink so that fixed length TAs go out of bounds.
68+
rab.resize(3 * ctor.BYTES_PER_ELEMENT);
69+
for (let i = 0; i < 3; ++i) {
70+
WriteToTypedArray(taWrite, i, i);
71+
}
72+
73+
// Orig. array: [0, 1, 2]
74+
// [0, 1, 2, ...] << lengthTracking
75+
// [2, ...] << lengthTrackingWithOffset
76+
77+
ArrayCopyWithinHelper(fixedLength, 0, 1);
78+
ArrayCopyWithinHelper(fixedLengthWithOffset, 0, 1);
79+
// We'll check below that these were no-op.
80+
81+
assert.compareArray(ToNumbers(lengthTracking), [
82+
0,
83+
1,
84+
2
85+
]);
86+
ArrayCopyWithinHelper(lengthTracking, 0, 1);
87+
assert.compareArray(ToNumbers(lengthTracking), [
88+
1,
89+
2,
90+
2
91+
]);
92+
ArrayCopyWithinHelper(lengthTrackingWithOffset, 0, 1);
93+
assert.compareArray(ToNumbers(lengthTrackingWithOffset), [2]);
94+
95+
// Shrink so that the TAs with offset go out of bounds.
96+
rab.resize(1 * ctor.BYTES_PER_ELEMENT);
97+
WriteToTypedArray(taWrite, 0, 0);
98+
ArrayCopyWithinHelper(fixedLength, 0, 1, 1);
99+
ArrayCopyWithinHelper(fixedLengthWithOffset, 0, 1, 1);
100+
ArrayCopyWithinHelper(lengthTrackingWithOffset, 0, 1, 1);
101+
102+
assert.compareArray(ToNumbers(lengthTracking), [0]);
103+
ArrayCopyWithinHelper(lengthTracking, 0, 0, 1);
104+
assert.compareArray(ToNumbers(lengthTracking), [0]);
105+
106+
// Shrink to zero.
107+
rab.resize(0);
108+
ArrayCopyWithinHelper(fixedLength, 0, 1, 1);
109+
ArrayCopyWithinHelper(fixedLengthWithOffset, 0, 1, 1);
110+
ArrayCopyWithinHelper(lengthTrackingWithOffset, 0, 1, 1);
111+
112+
assert.compareArray(ToNumbers(lengthTracking), []);
113+
ArrayCopyWithinHelper(lengthTracking, 0, 0, 1);
114+
assert.compareArray(ToNumbers(lengthTracking), []);
115+
116+
// Grow so that all TAs are back in-bounds.
117+
rab.resize(6 * ctor.BYTES_PER_ELEMENT);
118+
for (let i = 0; i < 6; ++i) {
119+
WriteToTypedArray(taWrite, i, i);
172120
}
173-
}
174121

175-
TestCopyWithin();
122+
// Orig. array: [0, 1, 2, 3, 4, 5]
123+
// [0, 1, 2, 3] << fixedLength
124+
// [2, 3] << fixedLengthWithOffset
125+
// [0, 1, 2, 3, 4, 5, ...] << lengthTracking
126+
// [2, 3, 4, 5, ...] << lengthTrackingWithOffset
127+
128+
ArrayCopyWithinHelper(fixedLength, 0, 2);
129+
assert.compareArray(ToNumbers(fixedLength), [
130+
2,
131+
3,
132+
2,
133+
3
134+
]);
135+
for (let i = 0; i < 6; ++i) {
136+
WriteToTypedArray(taWrite, i, i);
137+
}
138+
ArrayCopyWithinHelper(fixedLengthWithOffset, 0, 1);
139+
assert.compareArray(ToNumbers(fixedLengthWithOffset), [
140+
3,
141+
3
142+
]);
143+
for (let i = 0; i < 6; ++i) {
144+
WriteToTypedArray(taWrite, i, i);
145+
}
146+
147+
// [0, 1, 2, 3, 4, 5, ...] << lengthTracking
148+
// target ^ ^ start
149+
ArrayCopyWithinHelper(lengthTracking, 0, 2);
150+
assert.compareArray(ToNumbers(lengthTracking), [
151+
2,
152+
3,
153+
4,
154+
5,
155+
4,
156+
5
157+
]);
158+
for (let i = 0; i < 6; ++i) {
159+
WriteToTypedArray(taWrite, i, i);
160+
}
161+
162+
// [2, 3, 4, 5, ...] << lengthTrackingWithOffset
163+
// target ^ ^ start
164+
ArrayCopyWithinHelper(lengthTrackingWithOffset, 0, 1);
165+
assert.compareArray(ToNumbers(lengthTrackingWithOffset), [
166+
3,
167+
4,
168+
5,
169+
5
170+
]);
171+
}

0 commit comments

Comments
 (0)