@@ -14,162 +14,158 @@ const ArrayCopyWithinHelper = (ta, ...rest) => {
14
14
Array . prototype . copyWithin . call ( ta , ...rest ) ;
15
15
} ;
16
16
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 ) ;
172
120
}
173
- }
174
121
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