Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(57)

Side by Side Diff: runtime/tests/vm/dart/byte_array_optimized_test.dart

Issue 2759973004: Fix observatory tests broken by running dartfmt. Temporarily reverted formatting for evaluate_activ… (Closed)
Patch Set: Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « runtime/observatory/tests/ui/log.dart ('k') | runtime/tests/vm/dart/byte_array_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 // VMOptions=--optimization_counter_threshold=10 --no-background-compilation 4 // VMOptions=--optimization_counter_threshold=10 --no-background-compilation
5 5
6 // Library tag to be able to run in html test framework. 6 // Library tag to be able to run in html test framework.
7 library byte_array_test; 7 library byte_array_test;
8 8
9 import "package:expect/expect.dart"; 9 import "package:expect/expect.dart";
10 import 'dart:typed_data'; 10 import 'dart:typed_data';
11 11
12 // This test exercises optimized [] and []= operators 12 // This test exercises optimized [] and []= operators
13 // on byte array views. 13 // on byte array views.
14 class OptimizedByteArrayTest { 14 class OptimizedByteArrayTest {
15 static testInt8ListImpl(Int8List array) { 15 static testInt8ListImpl(Int8List array) {
16 Expect.isTrue(array is List<int>); 16 Expect.isTrue(array is List<int>);
17 Expect.equals(10, array.length); 17 Expect.equals(10, array.length);
18 Expect.equals(1, array.elementSizeInBytes); 18 Expect.equals(1, array.elementSizeInBytes);
19 Expect.equals(10, array.lengthInBytes); 19 Expect.equals(10, array.lengthInBytes);
20 Expect.listEquals([0, 0, 0, 0, 0, 20 Expect.listEquals([0, 0, 0, 0, 0, 0, 0, 0, 0, 0], array);
21 0, 0, 0, 0, 0], 21 Expect.throws(() {
22 array); 22 array[-1] = 0;
23 Expect.throws(() { array[-1] = 0; }, 23 }, (e) {
24 (e) { return e is RangeError; }); 24 return e is RangeError;
25 Expect.throws(() { return array[-1]; }, 25 });
26 (e) { return e is RangeError; }); 26 Expect.throws(() {
27 Expect.throws(() { array[10]; }, 27 return array[-1];
28 (e) { return e is RangeError; }); 28 }, (e) {
29 Expect.throws(() { array[10] = 0; }, 29 return e is RangeError;
30 (e) { return e is RangeError; }); 30 });
31 Expect.throws(() { array.add(0); }, 31 Expect.throws(() {
32 (e) { return e is UnsupportedError; }); 32 array[10];
33 Expect.throws(() { array.addAll([0]); }, 33 }, (e) {
34 (e) { return e is UnsupportedError; }); 34 return e is RangeError;
35 Expect.throws(() { array.clear(); }, 35 });
36 (e) { return e is UnsupportedError; }); 36 Expect.throws(() {
37 Expect.throws(() { array.length = 0; }, 37 array[10] = 0;
38 (e) { return e is UnsupportedError; }); 38 }, (e) {
39 Expect.throws(() { array.removeLast(); }, 39 return e is RangeError;
40 (e) { return e is UnsupportedError; }); 40 });
41 Expect.throws(() { array.removeRange(0, array.length - 1); }, 41 Expect.throws(() {
42 (e) { return e is UnsupportedError; }); 42 array.add(0);
43 }, (e) {
44 return e is UnsupportedError;
45 });
46 Expect.throws(() {
47 array.addAll([0]);
48 }, (e) {
49 return e is UnsupportedError;
50 });
51 Expect.throws(() {
52 array.clear();
53 }, (e) {
54 return e is UnsupportedError;
55 });
56 Expect.throws(() {
57 array.length = 0;
58 }, (e) {
59 return e is UnsupportedError;
60 });
61 Expect.throws(() {
62 array.removeLast();
63 }, (e) {
64 return e is UnsupportedError;
65 });
66 Expect.throws(() {
67 array.removeRange(0, array.length - 1);
68 }, (e) {
69 return e is UnsupportedError;
70 });
43 for (int i = 0; i < array.length; ++i) { 71 for (int i = 0; i < array.length; ++i) {
44 array[i] = 1 + i; 72 array[i] = 1 + i;
45 } 73 }
46 Expect.listEquals([1, 2, 3, 4, 5, 74 Expect.listEquals([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], array);
47 6, 7, 8, 9, 10],
48 array);
49 for (int i = 0; i < array.length; ++i) { 75 for (int i = 0; i < array.length; ++i) {
50 array[i] = 0x100 + i; 76 array[i] = 0x100 + i;
51 } 77 }
52 Expect.listEquals([0, 1, 2, 3, 4, 78 Expect.listEquals([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], array);
53 5, 6, 7, 8, 9],
54 array);
55 for (int i = 0; i < array.length; ++i) { 79 for (int i = 0; i < array.length; ++i) {
56 array[i] = -10 + i; 80 array[i] = -10 + i;
57 } 81 }
58 Expect.listEquals([-10, -9, -8, -7, -6, 82 Expect.listEquals([-10, -9, -8, -7, -6, -5, -4, -3, -2, -1], array);
59 -5, -4, -3, -2, -1],
60 array);
61 for (int i = 0; i < array.length; ++i) { 83 for (int i = 0; i < array.length; ++i) {
62 array[i] = 0x7F - i; 84 array[i] = 0x7F - i;
63 } 85 }
64 Expect.listEquals([127, 126, 125, 124, 123, 86 Expect
65 122, 121, 120, 119, 118], 87 .listEquals([127, 126, 125, 124, 123, 122, 121, 120, 119, 118], array);
66 array);
67 for (int i = 0; i < array.length; ++i) { 88 for (int i = 0; i < array.length; ++i) {
68 array[i] = -0x80 + i; 89 array[i] = -0x80 + i;
69 } 90 }
70 Expect.listEquals([-128, -127, -126, -125, -124, 91 Expect.listEquals(
71 -123, -122, -121, -120, -119], 92 [-128, -127, -126, -125, -124, -123, -122, -121, -120, -119], array);
72 array);
73 for (int i = 0; i < array.length; ++i) { 93 for (int i = 0; i < array.length; ++i) {
74 array[i] = i; 94 array[i] = i;
75 } 95 }
76 var copy = array.sublist(0, array.length); 96 var copy = array.sublist(0, array.length);
77 Expect.isFalse(identical(copy, array)); 97 Expect.isFalse(identical(copy, array));
78 Expect.isTrue(copy is Int8List); 98 Expect.isTrue(copy is Int8List);
79 Expect.equals(10, copy.length); 99 Expect.equals(10, copy.length);
80 Expect.listEquals(array, copy); 100 Expect.listEquals(array, copy);
81 var empty = array.sublist(array.length, array.length); 101 var empty = array.sublist(array.length, array.length);
82 Expect.equals(0, empty.length); 102 Expect.equals(0, empty.length);
83 var region = array.sublist(3, array.length - 3); 103 var region = array.sublist(3, array.length - 3);
84 Expect.isTrue(copy is Int8List); 104 Expect.isTrue(copy is Int8List);
85 Expect.equals(4, region.length); 105 Expect.equals(4, region.length);
86 Expect.listEquals([3, 4, 5, 6], region); 106 Expect.listEquals([3, 4, 5, 6], region);
87 array.setRange(3, 7, [-128, 0, 1, 127]); 107 array.setRange(3, 7, [-128, 0, 1, 127]);
88 Expect.listEquals([0, 1, 2, -128, 0, 1, 127, 7, 8, 9], 108 Expect.listEquals([0, 1, 2, -128, 0, 1, 127, 7, 8, 9], array);
89 array);
90 } 109 }
110
91 static testInt8List() { 111 static testInt8List() {
92 Expect.throws(() { new Int8List(-1); }, 112 Expect.throws(() {
93 (e) { return e is ArgumentError; }); 113 new Int8List(-1);
114 }, (e) {
115 return e is ArgumentError;
116 });
94 var array = new Int8List(10); 117 var array = new Int8List(10);
95 testInt8ListImpl(array); 118 testInt8ListImpl(array);
96 } 119 }
97 120
98 static testUint8ListImpl(Uint8List array) { 121 static testUint8ListImpl(Uint8List array) {
99 Expect.isTrue(array is List<int>); 122 Expect.isTrue(array is List<int>);
100 Expect.equals(10, array.length); 123 Expect.equals(10, array.length);
101 Expect.equals(1, array.elementSizeInBytes); 124 Expect.equals(1, array.elementSizeInBytes);
102 Expect.equals(10, array.lengthInBytes); 125 Expect.equals(10, array.lengthInBytes);
103 Expect.listEquals([0, 0, 0, 0, 0, 126 Expect.listEquals([0, 0, 0, 0, 0, 0, 0, 0, 0, 0], array);
104 0, 0, 0, 0, 0], 127 Expect.throws(() {
105 array); 128 array[-1] = 0;
106 Expect.throws(() { array[-1] = 0; }, 129 }, (e) {
107 (e) { return e is RangeError; }); 130 return e is RangeError;
108 Expect.throws(() { return array[-1]; }, 131 });
109 (e) { return e is RangeError; }); 132 Expect.throws(() {
110 Expect.throws(() { array[10]; }, 133 return array[-1];
111 (e) { return e is RangeError; }); 134 }, (e) {
112 Expect.throws(() { array[10] = 0; }, 135 return e is RangeError;
113 (e) { return e is RangeError; }); 136 });
114 Expect.throws(() { array.add(0); }, 137 Expect.throws(() {
115 (e) { return e is UnsupportedError; }); 138 array[10];
116 Expect.throws(() { array.addAll([0]); }, 139 }, (e) {
117 (e) { return e is UnsupportedError; }); 140 return e is RangeError;
118 Expect.throws(() { array.clear(); }, 141 });
119 (e) { return e is UnsupportedError; }); 142 Expect.throws(() {
120 Expect.throws(() { array.length = 0; }, 143 array[10] = 0;
121 (e) { return e is UnsupportedError; }); 144 }, (e) {
122 Expect.throws(() { array.removeLast(); }, 145 return e is RangeError;
123 (e) { return e is UnsupportedError; }); 146 });
124 Expect.throws(() { array.removeRange(0, array.length - 1); }, 147 Expect.throws(() {
125 (e) { return e is UnsupportedError; }); 148 array.add(0);
149 }, (e) {
150 return e is UnsupportedError;
151 });
152 Expect.throws(() {
153 array.addAll([0]);
154 }, (e) {
155 return e is UnsupportedError;
156 });
157 Expect.throws(() {
158 array.clear();
159 }, (e) {
160 return e is UnsupportedError;
161 });
162 Expect.throws(() {
163 array.length = 0;
164 }, (e) {
165 return e is UnsupportedError;
166 });
167 Expect.throws(() {
168 array.removeLast();
169 }, (e) {
170 return e is UnsupportedError;
171 });
172 Expect.throws(() {
173 array.removeRange(0, array.length - 1);
174 }, (e) {
175 return e is UnsupportedError;
176 });
126 for (int i = 0; i < array.length; ++i) { 177 for (int i = 0; i < array.length; ++i) {
127 array[i] = 1 + i; 178 array[i] = 1 + i;
128 } 179 }
129 Expect.listEquals([1, 2, 3, 4, 5, 180 Expect.listEquals([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], array);
130 6, 7, 8, 9, 10],
131 array);
132 for (int i = 0; i < array.length; ++i) { 181 for (int i = 0; i < array.length; ++i) {
133 array[i] = 0x100 + i; 182 array[i] = 0x100 + i;
134 } 183 }
135 Expect.listEquals([0, 1, 2, 3, 4, 184 Expect.listEquals([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], array);
136 5, 6, 7, 8, 9],
137 array);
138 for (int i = 0; i < array.length; ++i) { 185 for (int i = 0; i < array.length; ++i) {
139 array[i] = 0xFF - i; 186 array[i] = 0xFF - i;
140 } 187 }
141 Expect.listEquals([0xFF, 0xFE, 0xFD, 0xFC, 0xFB, 188 Expect.listEquals(
142 0xFA, 0xF9, 0xF8, 0xF7, 0xF6], 189 [0xFF, 0xFE, 0xFD, 0xFC, 0xFB, 0xFA, 0xF9, 0xF8, 0xF7, 0xF6], array);
143 array);
144 for (int i = 0; i < array.length; ++i) { 190 for (int i = 0; i < array.length; ++i) {
145 array[i] = i; 191 array[i] = i;
146 } 192 }
147 var copy = array.sublist(0, array.length); 193 var copy = array.sublist(0, array.length);
148 Expect.isFalse(identical(copy, array)); 194 Expect.isFalse(identical(copy, array));
149 Expect.isTrue(copy is Uint8List); 195 Expect.isTrue(copy is Uint8List);
150 Expect.equals(10, copy.length); 196 Expect.equals(10, copy.length);
151 Expect.listEquals(array, copy); 197 Expect.listEquals(array, copy);
152 var empty = array.sublist(array.length, array.length); 198 var empty = array.sublist(array.length, array.length);
153 Expect.equals(0, empty.length); 199 Expect.equals(0, empty.length);
154 var region = array.sublist(3, array.length - 3); 200 var region = array.sublist(3, array.length - 3);
155 Expect.isTrue(copy is Uint8List); 201 Expect.isTrue(copy is Uint8List);
156 Expect.equals(4, region.length); 202 Expect.equals(4, region.length);
157 Expect.listEquals([3, 4, 5, 6], region); 203 Expect.listEquals([3, 4, 5, 6], region);
158 array.setRange(3, 7, [257, 0, 1, 255]); 204 array.setRange(3, 7, [257, 0, 1, 255]);
159 Expect.listEquals([0, 1, 2, 1, 0, 1, 255, 7, 8, 9], 205 Expect.listEquals([0, 1, 2, 1, 0, 1, 255, 7, 8, 9], array);
160 array);
161 } 206 }
162 207
163 static testUint8List() { 208 static testUint8List() {
164 Expect.throws(() { new Uint8List(-1); }, 209 Expect.throws(() {
165 (e) { return e is ArgumentError; }); 210 new Uint8List(-1);
211 }, (e) {
212 return e is ArgumentError;
213 });
166 var array = new Uint8List(10); 214 var array = new Uint8List(10);
167 testUint8ListImpl(array); 215 testUint8ListImpl(array);
168 } 216 }
169 217
170 static testInt16ListImpl(Int16List array) { 218 static testInt16ListImpl(Int16List array) {
171 Expect.isTrue(array is List<int>); 219 Expect.isTrue(array is List<int>);
172 Expect.equals(10, array.length); 220 Expect.equals(10, array.length);
173 Expect.equals(2, array.elementSizeInBytes); 221 Expect.equals(2, array.elementSizeInBytes);
174 Expect.equals(20, array.lengthInBytes); 222 Expect.equals(20, array.lengthInBytes);
175 Expect.listEquals([0, 0, 0, 0, 0, 223 Expect.listEquals([0, 0, 0, 0, 0, 0, 0, 0, 0, 0], array);
176 0, 0, 0, 0, 0], 224 Expect.throws(() {
177 array); 225 array[-1] = 0;
178 Expect.throws(() { array[-1] = 0; }, 226 }, (e) {
179 (e) { return e is RangeError; }); 227 return e is RangeError;
180 Expect.throws(() { return array[-1]; }, 228 });
181 (e) { return e is RangeError; }); 229 Expect.throws(() {
182 Expect.throws(() { array[10]; }, 230 return array[-1];
183 (e) { return e is RangeError; }); 231 }, (e) {
184 Expect.throws(() { array[10] = 0; }, 232 return e is RangeError;
185 (e) { return e is RangeError; }); 233 });
186 Expect.throws(() { array.add(0); }, 234 Expect.throws(() {
187 (e) { return e is UnsupportedError; }); 235 array[10];
188 Expect.throws(() { array.addAll([0]); }, 236 }, (e) {
189 (e) { return e is UnsupportedError; }); 237 return e is RangeError;
190 Expect.throws(() { array.clear(); }, 238 });
191 (e) { return e is UnsupportedError; }); 239 Expect.throws(() {
192 Expect.throws(() { array.length = 0; }, 240 array[10] = 0;
193 (e) { return e is UnsupportedError; }); 241 }, (e) {
194 Expect.throws(() { array.removeLast(); }, 242 return e is RangeError;
195 (e) { return e is UnsupportedError; }); 243 });
196 Expect.throws(() { array.removeRange(0, array.length - 1); }, 244 Expect.throws(() {
197 (e) { return e is UnsupportedError; }); 245 array.add(0);
246 }, (e) {
247 return e is UnsupportedError;
248 });
249 Expect.throws(() {
250 array.addAll([0]);
251 }, (e) {
252 return e is UnsupportedError;
253 });
254 Expect.throws(() {
255 array.clear();
256 }, (e) {
257 return e is UnsupportedError;
258 });
259 Expect.throws(() {
260 array.length = 0;
261 }, (e) {
262 return e is UnsupportedError;
263 });
264 Expect.throws(() {
265 array.removeLast();
266 }, (e) {
267 return e is UnsupportedError;
268 });
269 Expect.throws(() {
270 array.removeRange(0, array.length - 1);
271 }, (e) {
272 return e is UnsupportedError;
273 });
198 for (int i = 0; i < array.length; ++i) { 274 for (int i = 0; i < array.length; ++i) {
199 array[i] = 1 + i; 275 array[i] = 1 + i;
200 } 276 }
201 Expect.listEquals([1, 2, 3, 4, 5, 277 Expect.listEquals([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], array);
202 6, 7, 8, 9, 10],
203 array);
204 for (int i = 0; i < array.length; ++i) { 278 for (int i = 0; i < array.length; ++i) {
205 array[i] = 0x10000 + i; 279 array[i] = 0x10000 + i;
206 } 280 }
207 Expect.listEquals([0, 1, 2, 3, 4, 281 Expect.listEquals([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], array);
208 5, 6, 7, 8, 9],
209 array);
210 for (int i = 0; i < array.length; ++i) { 282 for (int i = 0; i < array.length; ++i) {
211 array[i] = -10 + i; 283 array[i] = -10 + i;
212 } 284 }
213 Expect.listEquals([-10, -9, -8, -7, -6, 285 Expect.listEquals([-10, -9, -8, -7, -6, -5, -4, -3, -2, -1], array);
214 -5, -4, -3, -2, -1],
215 array);
216 for (int i = 0; i < array.length; ++i) { 286 for (int i = 0; i < array.length; ++i) {
217 array[i] = 0x7FFF - i; 287 array[i] = 0x7FFF - i;
218 } 288 }
219 Expect.listEquals([0x7FFF, 0x7FFE, 0x7FFD, 0x7FFC, 0x7FFB, 289 Expect.listEquals([
220 0x7FFA, 0x7FF9, 0x7FF8, 0x7FF7, 0x7FF6], 290 0x7FFF,
221 array); 291 0x7FFE,
292 0x7FFD,
293 0x7FFC,
294 0x7FFB,
295 0x7FFA,
296 0x7FF9,
297 0x7FF8,
298 0x7FF7,
299 0x7FF6
300 ], array);
222 for (int i = 0; i < array.length; ++i) { 301 for (int i = 0; i < array.length; ++i) {
223 array[i] = -0x8000 + i; 302 array[i] = -0x8000 + i;
224 } 303 }
225 Expect.listEquals([-0x8000, -0x7FFF, -0x7FFE, -0x7FFD, -0x7FFC, 304 Expect.listEquals([
226 -0x7FFB, -0x7FFA, -0x7FF9, -0x7FF8, -0x7FF7], 305 -0x8000,
227 array); 306 -0x7FFF,
307 -0x7FFE,
308 -0x7FFD,
309 -0x7FFC,
310 -0x7FFB,
311 -0x7FFA,
312 -0x7FF9,
313 -0x7FF8,
314 -0x7FF7
315 ], array);
228 for (int i = 0; i < array.length; ++i) { 316 for (int i = 0; i < array.length; ++i) {
229 array[i] = i; 317 array[i] = i;
230 } 318 }
231 var copy = array.sublist(0, array.length); 319 var copy = array.sublist(0, array.length);
232 Expect.isFalse(identical(copy, array)); 320 Expect.isFalse(identical(copy, array));
233 Expect.isTrue(copy is Int16List); 321 Expect.isTrue(copy is Int16List);
234 Expect.equals(10, copy.length); 322 Expect.equals(10, copy.length);
235 Expect.listEquals(array, copy); 323 Expect.listEquals(array, copy);
236 var empty = array.sublist(array.length, array.length); 324 var empty = array.sublist(array.length, array.length);
237 Expect.equals(0, empty.length); 325 Expect.equals(0, empty.length);
238 var region = array.sublist(3, array.length - 3); 326 var region = array.sublist(3, array.length - 3);
239 Expect.isTrue(copy is Int16List); 327 Expect.isTrue(copy is Int16List);
240 Expect.equals(4, region.length); 328 Expect.equals(4, region.length);
241 Expect.listEquals([3, 4, 5, 6], region); 329 Expect.listEquals([3, 4, 5, 6], region);
242 array.setRange(3, 7, [-32768, 0, 1, 32767]); 330 array.setRange(3, 7, [-32768, 0, 1, 32767]);
243 Expect.listEquals([0, 1, 2, -32768, 0, 1, 32767, 7, 8, 9], 331 Expect.listEquals([0, 1, 2, -32768, 0, 1, 32767, 7, 8, 9], array);
244 array);
245 } 332 }
246 333
247 static testInt16List() { 334 static testInt16List() {
248 Expect.throws(() { new Int16List(-1); }, 335 Expect.throws(() {
249 (e) { return e is ArgumentError; }); 336 new Int16List(-1);
337 }, (e) {
338 return e is ArgumentError;
339 });
250 var array = new Int16List(10); 340 var array = new Int16List(10);
251 testInt16ListImpl(array); 341 testInt16ListImpl(array);
252 } 342 }
253 343
254 static testUint16ListImpl(Uint16List array) { 344 static testUint16ListImpl(Uint16List array) {
255 Expect.isTrue(array is List<int>); 345 Expect.isTrue(array is List<int>);
256 Expect.equals(10, array.length); 346 Expect.equals(10, array.length);
257 Expect.equals(2, array.elementSizeInBytes); 347 Expect.equals(2, array.elementSizeInBytes);
258 Expect.equals(20, array.lengthInBytes); 348 Expect.equals(20, array.lengthInBytes);
259 Expect.listEquals([0, 0, 0, 0, 0, 349 Expect.listEquals([0, 0, 0, 0, 0, 0, 0, 0, 0, 0], array);
260 0, 0, 0, 0, 0], 350 Expect.throws(() {
261 array); 351 array[-1] = 0;
262 Expect.throws(() { array[-1] = 0; }, 352 }, (e) {
263 (e) { return e is RangeError; }); 353 return e is RangeError;
264 Expect.throws(() { return array[-1]; }, 354 });
265 (e) { return e is RangeError; }); 355 Expect.throws(() {
266 Expect.throws(() { array[10]; }, 356 return array[-1];
267 (e) { return e is RangeError; }); 357 }, (e) {
268 Expect.throws(() { array[10] = 0; }, 358 return e is RangeError;
269 (e) { return e is RangeError; }); 359 });
270 Expect.throws(() { array.add(0); }, 360 Expect.throws(() {
271 (e) { return e is UnsupportedError; }); 361 array[10];
272 Expect.throws(() { array.addAll([0]); }, 362 }, (e) {
273 (e) { return e is UnsupportedError; }); 363 return e is RangeError;
274 Expect.throws(() { array.clear(); }, 364 });
275 (e) { return e is UnsupportedError; }); 365 Expect.throws(() {
276 Expect.throws(() { array.length = 0; }, 366 array[10] = 0;
277 (e) { return e is UnsupportedError; }); 367 }, (e) {
278 Expect.throws(() { array.removeLast(); }, 368 return e is RangeError;
279 (e) { return e is UnsupportedError; }); 369 });
280 Expect.throws(() { array.removeRange(0, array.length - 1); }, 370 Expect.throws(() {
281 (e) { return e is UnsupportedError; }); 371 array.add(0);
372 }, (e) {
373 return e is UnsupportedError;
374 });
375 Expect.throws(() {
376 array.addAll([0]);
377 }, (e) {
378 return e is UnsupportedError;
379 });
380 Expect.throws(() {
381 array.clear();
382 }, (e) {
383 return e is UnsupportedError;
384 });
385 Expect.throws(() {
386 array.length = 0;
387 }, (e) {
388 return e is UnsupportedError;
389 });
390 Expect.throws(() {
391 array.removeLast();
392 }, (e) {
393 return e is UnsupportedError;
394 });
395 Expect.throws(() {
396 array.removeRange(0, array.length - 1);
397 }, (e) {
398 return e is UnsupportedError;
399 });
282 for (int i = 0; i < array.length; ++i) { 400 for (int i = 0; i < array.length; ++i) {
283 array[i] = 1 + i; 401 array[i] = 1 + i;
284 } 402 }
285 Expect.listEquals([1, 2, 3, 4, 5, 403 Expect.listEquals([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], array);
286 6, 7, 8, 9, 10],
287 array);
288 for (int i = 0; i < array.length; ++i) { 404 for (int i = 0; i < array.length; ++i) {
289 array[i] = 0x10000 + i; 405 array[i] = 0x10000 + i;
290 } 406 }
291 Expect.listEquals([0, 1, 2, 3, 4, 407 Expect.listEquals([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], array);
292 5, 6, 7, 8, 9],
293 array);
294 for (int i = 0; i < array.length; ++i) { 408 for (int i = 0; i < array.length; ++i) {
295 array[i] = 0xFFFF - i; 409 array[i] = 0xFFFF - i;
296 } 410 }
297 Expect.listEquals([0xFFFF, 0xFFFE, 0xFFFD, 0xFFFC, 0xFFFB, 411 Expect.listEquals([
298 0xFFFA, 0xFFF9, 0xFFF8, 0xFFF7, 0xFFF6], 412 0xFFFF,
299 array); 413 0xFFFE,
414 0xFFFD,
415 0xFFFC,
416 0xFFFB,
417 0xFFFA,
418 0xFFF9,
419 0xFFF8,
420 0xFFF7,
421 0xFFF6
422 ], array);
300 for (int i = 0; i < array.length; ++i) { 423 for (int i = 0; i < array.length; ++i) {
301 array[i] = i; 424 array[i] = i;
302 } 425 }
303 var copy = array.sublist(0, array.length); 426 var copy = array.sublist(0, array.length);
304 Expect.isFalse(identical(copy, array)); 427 Expect.isFalse(identical(copy, array));
305 Expect.isTrue(copy is Uint16List); 428 Expect.isTrue(copy is Uint16List);
306 Expect.equals(10, copy.length); 429 Expect.equals(10, copy.length);
307 Expect.listEquals(array, copy); 430 Expect.listEquals(array, copy);
308 var empty = array.sublist(array.length, array.length); 431 var empty = array.sublist(array.length, array.length);
309 Expect.equals(0, empty.length); 432 Expect.equals(0, empty.length);
310 var region = array.sublist(3, array.length - 3); 433 var region = array.sublist(3, array.length - 3);
311 Expect.isTrue(copy is Uint16List); 434 Expect.isTrue(copy is Uint16List);
312 Expect.equals(4, region.length); 435 Expect.equals(4, region.length);
313 Expect.listEquals([3, 4, 5, 6], region); 436 Expect.listEquals([3, 4, 5, 6], region);
314 array.setRange(3, 7, [0x10001, 0, 1, 0xFFFF]); 437 array.setRange(3, 7, [0x10001, 0, 1, 0xFFFF]);
315 Expect.listEquals([0, 1, 2, 1, 0, 1, 0xFFFF, 7, 8, 9], 438 Expect.listEquals([0, 1, 2, 1, 0, 1, 0xFFFF, 7, 8, 9], array);
316 array);
317 } 439 }
318 440
319 static testUint16List() { 441 static testUint16List() {
320 Expect.throws(() { new Uint16List(-1); }, 442 Expect.throws(() {
321 (e) { return e is ArgumentError; }); 443 new Uint16List(-1);
444 }, (e) {
445 return e is ArgumentError;
446 });
322 var array = new Uint16List(10); 447 var array = new Uint16List(10);
323 testUint16ListImpl(array); 448 testUint16ListImpl(array);
324 } 449 }
325 450
326 static testInt32ListImpl(Int32List array) { 451 static testInt32ListImpl(Int32List array) {
327 Expect.isTrue(array is List<int>); 452 Expect.isTrue(array is List<int>);
328 Expect.equals(10, array.length); 453 Expect.equals(10, array.length);
329 Expect.equals(4, array.elementSizeInBytes); 454 Expect.equals(4, array.elementSizeInBytes);
330 Expect.equals(40, array.lengthInBytes); 455 Expect.equals(40, array.lengthInBytes);
331 Expect.listEquals([0, 0, 0, 0, 0, 456 Expect.listEquals([0, 0, 0, 0, 0, 0, 0, 0, 0, 0], array);
332 0, 0, 0, 0, 0], 457 Expect.throws(() {
333 array); 458 array[-1] = 0;
334 Expect.throws(() { array[-1] = 0; }, 459 }, (e) {
335 (e) { return e is RangeError; }); 460 return e is RangeError;
336 Expect.throws(() { return array[-1]; }, 461 });
337 (e) { return e is RangeError; }); 462 Expect.throws(() {
338 Expect.throws(() { array[10]; }, 463 return array[-1];
339 (e) { return e is RangeError; }); 464 }, (e) {
340 Expect.throws(() { array[10] = 0; }, 465 return e is RangeError;
341 (e) { return e is RangeError; }); 466 });
342 Expect.throws(() { array.add(0); }, 467 Expect.throws(() {
343 (e) { return e is UnsupportedError; }); 468 array[10];
344 Expect.throws(() { array.addAll([0]); }, 469 }, (e) {
345 (e) { return e is UnsupportedError; }); 470 return e is RangeError;
346 Expect.throws(() { array.clear(); }, 471 });
347 (e) { return e is UnsupportedError; }); 472 Expect.throws(() {
348 Expect.throws(() { array.length = 0; }, 473 array[10] = 0;
349 (e) { return e is UnsupportedError; }); 474 }, (e) {
350 Expect.throws(() { array.removeLast(); }, 475 return e is RangeError;
351 (e) { return e is UnsupportedError; }); 476 });
352 Expect.throws(() { array.removeRange(0, array.length - 1); }, 477 Expect.throws(() {
353 (e) { return e is UnsupportedError; }); 478 array.add(0);
479 }, (e) {
480 return e is UnsupportedError;
481 });
482 Expect.throws(() {
483 array.addAll([0]);
484 }, (e) {
485 return e is UnsupportedError;
486 });
487 Expect.throws(() {
488 array.clear();
489 }, (e) {
490 return e is UnsupportedError;
491 });
492 Expect.throws(() {
493 array.length = 0;
494 }, (e) {
495 return e is UnsupportedError;
496 });
497 Expect.throws(() {
498 array.removeLast();
499 }, (e) {
500 return e is UnsupportedError;
501 });
502 Expect.throws(() {
503 array.removeRange(0, array.length - 1);
504 }, (e) {
505 return e is UnsupportedError;
506 });
354 for (int i = 0; i < array.length; ++i) { 507 for (int i = 0; i < array.length; ++i) {
355 array[i] = 1 + i; 508 array[i] = 1 + i;
356 } 509 }
357 Expect.listEquals([1, 2, 3, 4, 5, 510 Expect.listEquals([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], array);
358 6, 7, 8, 9, 10],
359 array);
360 for (int i = 0; i < array.length; ++i) { 511 for (int i = 0; i < array.length; ++i) {
361 array[i] = 0x100000000 + i; 512 array[i] = 0x100000000 + i;
362 } 513 }
363 Expect.listEquals([0, 1, 2, 3, 4, 514 Expect.listEquals([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], array);
364 5, 6, 7, 8, 9],
365 array);
366 for (int i = 0; i < array.length; ++i) { 515 for (int i = 0; i < array.length; ++i) {
367 array[i] = -10 + i; 516 array[i] = -10 + i;
368 } 517 }
369 Expect.listEquals([-10, -9, -8, -7, -6, 518 Expect.listEquals([-10, -9, -8, -7, -6, -5, -4, -3, -2, -1], array);
370 -5, -4, -3, -2, -1],
371 array);
372 for (int i = 0; i < array.length; ++i) { 519 for (int i = 0; i < array.length; ++i) {
373 array[i] = 0x7FFFFFFF - i; 520 array[i] = 0x7FFFFFFF - i;
374 } 521 }
375 Expect.listEquals([0x7FFFFFFF, 0x7FFFFFFE, 522 Expect.listEquals([
376 0x7FFFFFFD, 0x7FFFFFFC, 523 0x7FFFFFFF,
377 0x7FFFFFFB, 0x7FFFFFFA, 524 0x7FFFFFFE,
378 0x7FFFFFF9, 0x7FFFFFF8, 525 0x7FFFFFFD,
379 0x7FFFFFF7, 0x7FFFFFF6], 526 0x7FFFFFFC,
380 array); 527 0x7FFFFFFB,
528 0x7FFFFFFA,
529 0x7FFFFFF9,
530 0x7FFFFFF8,
531 0x7FFFFFF7,
532 0x7FFFFFF6
533 ], array);
381 for (int i = 0; i < array.length; ++i) { 534 for (int i = 0; i < array.length; ++i) {
382 array[i] = -0x80000000 + i; 535 array[i] = -0x80000000 + i;
383 } 536 }
384 Expect.listEquals([-0x80000000, -0x7FFFFFFF, 537 Expect.listEquals([
385 -0x7FFFFFFE, -0x7FFFFFFD, 538 -0x80000000,
386 -0x7FFFFFFC, -0x7FFFFFFB, 539 -0x7FFFFFFF,
387 -0x7FFFFFFA, -0x7FFFFFF9, 540 -0x7FFFFFFE,
388 -0x7FFFFFF8, -0x7FFFFFF7], 541 -0x7FFFFFFD,
389 array); 542 -0x7FFFFFFC,
543 -0x7FFFFFFB,
544 -0x7FFFFFFA,
545 -0x7FFFFFF9,
546 -0x7FFFFFF8,
547 -0x7FFFFFF7
548 ], array);
390 for (int i = 0; i < array.length; ++i) { 549 for (int i = 0; i < array.length; ++i) {
391 array[i] = i; 550 array[i] = i;
392 } 551 }
393 var copy = array.sublist(0, array.length); 552 var copy = array.sublist(0, array.length);
394 Expect.isFalse(identical(copy, array)); 553 Expect.isFalse(identical(copy, array));
395 Expect.isTrue(copy is Int32List); 554 Expect.isTrue(copy is Int32List);
396 Expect.equals(10, copy.length); 555 Expect.equals(10, copy.length);
397 Expect.listEquals(array, copy); 556 Expect.listEquals(array, copy);
398 var empty = array.sublist(array.length, array.length); 557 var empty = array.sublist(array.length, array.length);
399 Expect.equals(0, empty.length); 558 Expect.equals(0, empty.length);
400 var region = array.sublist(3, array.length - 3); 559 var region = array.sublist(3, array.length - 3);
401 Expect.isTrue(copy is Int32List); 560 Expect.isTrue(copy is Int32List);
402 Expect.equals(4, region.length); 561 Expect.equals(4, region.length);
403 Expect.listEquals([3, 4, 5, 6], region); 562 Expect.listEquals([3, 4, 5, 6], region);
404 array.setRange(3, 7, [-0x80000000, 0, 1, 0x7FFFFFFF]); 563 array.setRange(3, 7, [-0x80000000, 0, 1, 0x7FFFFFFF]);
405 Expect.listEquals([0, 1, 2, -0x80000000, 0, 1, 0x7FFFFFFF, 7, 8, 9], 564 Expect.listEquals([0, 1, 2, -0x80000000, 0, 1, 0x7FFFFFFF, 7, 8, 9], array);
406 array);
407 } 565 }
408 566
409 static testInt32List() { 567 static testInt32List() {
410 Expect.throws(() { new Int32List(-1); }, 568 Expect.throws(() {
411 (e) { return e is ArgumentError; }); 569 new Int32List(-1);
570 }, (e) {
571 return e is ArgumentError;
572 });
412 var array = new Int32List(10); 573 var array = new Int32List(10);
413 testInt32ListImpl(array); 574 testInt32ListImpl(array);
414 } 575 }
415 576
416 static testUint32ListImpl(Uint32List array) { 577 static testUint32ListImpl(Uint32List array) {
417 Expect.isTrue(array is List<int>); 578 Expect.isTrue(array is List<int>);
418 Expect.equals(10, array.length); 579 Expect.equals(10, array.length);
419 Expect.equals(4, array.elementSizeInBytes); 580 Expect.equals(4, array.elementSizeInBytes);
420 Expect.equals(40, array.lengthInBytes); 581 Expect.equals(40, array.lengthInBytes);
421 Expect.listEquals([0, 0, 0, 0, 0, 582 Expect.listEquals([0, 0, 0, 0, 0, 0, 0, 0, 0, 0], array);
422 0, 0, 0, 0, 0], 583 Expect.throws(() {
423 array); 584 array[-1] = 0;
424 Expect.throws(() { array[-1] = 0; }, 585 }, (e) {
425 (e) { return e is RangeError; }); 586 return e is RangeError;
426 Expect.throws(() { return array[-1]; }, 587 });
427 (e) { return e is RangeError; }); 588 Expect.throws(() {
428 Expect.throws(() { array[10]; }, 589 return array[-1];
429 (e) { return e is RangeError; }); 590 }, (e) {
430 Expect.throws(() { array[10] = 0; }, 591 return e is RangeError;
431 (e) { return e is RangeError; }); 592 });
432 Expect.throws(() { array.add(0); }, 593 Expect.throws(() {
433 (e) { return e is UnsupportedError; }); 594 array[10];
434 Expect.throws(() { array.addAll([0]); }, 595 }, (e) {
435 (e) { return e is UnsupportedError; }); 596 return e is RangeError;
436 Expect.throws(() { array.clear(); }, 597 });
437 (e) { return e is UnsupportedError; }); 598 Expect.throws(() {
438 Expect.throws(() { array.length = 0; }, 599 array[10] = 0;
439 (e) { return e is UnsupportedError; }); 600 }, (e) {
440 Expect.throws(() { array.removeLast(); }, 601 return e is RangeError;
441 (e) { return e is UnsupportedError; }); 602 });
442 Expect.throws(() { array.removeRange(0, array.length - 1); }, 603 Expect.throws(() {
443 (e) { return e is UnsupportedError; }); 604 array.add(0);
605 }, (e) {
606 return e is UnsupportedError;
607 });
608 Expect.throws(() {
609 array.addAll([0]);
610 }, (e) {
611 return e is UnsupportedError;
612 });
613 Expect.throws(() {
614 array.clear();
615 }, (e) {
616 return e is UnsupportedError;
617 });
618 Expect.throws(() {
619 array.length = 0;
620 }, (e) {
621 return e is UnsupportedError;
622 });
623 Expect.throws(() {
624 array.removeLast();
625 }, (e) {
626 return e is UnsupportedError;
627 });
628 Expect.throws(() {
629 array.removeRange(0, array.length - 1);
630 }, (e) {
631 return e is UnsupportedError;
632 });
444 for (int i = 0; i < array.length; ++i) { 633 for (int i = 0; i < array.length; ++i) {
445 array[i] = 1 + i; 634 array[i] = 1 + i;
446 } 635 }
447 Expect.listEquals([1, 2, 3, 4, 5, 636 Expect.listEquals([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], array);
448 6, 7, 8, 9, 10],
449 array);
450 for (int i = 0; i < array.length; ++i) { 637 for (int i = 0; i < array.length; ++i) {
451 array[i] = 0x100000000 + i; 638 array[i] = 0x100000000 + i;
452 } 639 }
453 Expect.listEquals([0, 1, 2, 3, 4, 640 Expect.listEquals([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], array);
454 5, 6, 7, 8, 9],
455 array);
456 for (int i = 0; i < array.length; ++i) { 641 for (int i = 0; i < array.length; ++i) {
457 array[i] = 0xFFFFFFFF - i; 642 array[i] = 0xFFFFFFFF - i;
458 } 643 }
459 Expect.listEquals([0xFFFFFFFF, 0xFFFFFFFE, 644 Expect.listEquals([
460 0xFFFFFFFD, 0xFFFFFFFC, 645 0xFFFFFFFF,
461 0xFFFFFFFB, 0xFFFFFFFA, 646 0xFFFFFFFE,
462 0xFFFFFFF9, 0xFFFFFFF8, 647 0xFFFFFFFD,
463 0xFFFFFFF7, 0xFFFFFFF6], 648 0xFFFFFFFC,
464 array); 649 0xFFFFFFFB,
650 0xFFFFFFFA,
651 0xFFFFFFF9,
652 0xFFFFFFF8,
653 0xFFFFFFF7,
654 0xFFFFFFF6
655 ], array);
465 for (int i = 0; i < array.length; ++i) { 656 for (int i = 0; i < array.length; ++i) {
466 array[i] = i; 657 array[i] = i;
467 } 658 }
468 var copy = array.sublist(0, array.length); 659 var copy = array.sublist(0, array.length);
469 Expect.isFalse(identical(copy, array)); 660 Expect.isFalse(identical(copy, array));
470 Expect.isTrue(copy is Uint32List); 661 Expect.isTrue(copy is Uint32List);
471 Expect.equals(10, copy.length); 662 Expect.equals(10, copy.length);
472 Expect.listEquals(array, copy); 663 Expect.listEquals(array, copy);
473 var empty = array.sublist(array.length, array.length); 664 var empty = array.sublist(array.length, array.length);
474 Expect.equals(0, empty.length); 665 Expect.equals(0, empty.length);
475 var region = array.sublist(3, array.length - 3); 666 var region = array.sublist(3, array.length - 3);
476 Expect.isTrue(copy is Uint32List); 667 Expect.isTrue(copy is Uint32List);
477 Expect.equals(4, region.length); 668 Expect.equals(4, region.length);
478 Expect.listEquals([3, 4, 5, 6], region); 669 Expect.listEquals([3, 4, 5, 6], region);
479 array.setRange(3, 7, [0x100000001, 0, 1, 0xFFFFFFFF]); 670 array.setRange(3, 7, [0x100000001, 0, 1, 0xFFFFFFFF]);
480 Expect.listEquals([0, 1, 2, 1, 0, 1, 0xFFFFFFFF, 7, 8, 9], 671 Expect.listEquals([0, 1, 2, 1, 0, 1, 0xFFFFFFFF, 7, 8, 9], array);
481 array);
482 } 672 }
483 673
484 static testUint32List() { 674 static testUint32List() {
485 Expect.throws(() { new Uint32List(-1); }, 675 Expect.throws(() {
486 (e) { return e is ArgumentError; }); 676 new Uint32List(-1);
487 Expect.throws(() { new Uint32List(-1); }, 677 }, (e) {
488 (e) { return e is ArgumentError; }); 678 return e is ArgumentError;
679 });
680 Expect.throws(() {
681 new Uint32List(-1);
682 }, (e) {
683 return e is ArgumentError;
684 });
489 var array = new Uint32List(10); 685 var array = new Uint32List(10);
490 testUint32ListImpl(array); 686 testUint32ListImpl(array);
491
492 } 687 }
493 688
494 static testInt64ListImpl(Int64List array) { 689 static testInt64ListImpl(Int64List array) {
495 Expect.isTrue(array is List<int>); 690 Expect.isTrue(array is List<int>);
496 Expect.equals(10, array.length); 691 Expect.equals(10, array.length);
497 Expect.equals(8, array.elementSizeInBytes); 692 Expect.equals(8, array.elementSizeInBytes);
498 Expect.equals(80, array.lengthInBytes); 693 Expect.equals(80, array.lengthInBytes);
499 Expect.listEquals([0, 0, 0, 0, 0, 694 Expect.listEquals([0, 0, 0, 0, 0, 0, 0, 0, 0, 0], array);
500 0, 0, 0, 0, 0], 695 Expect.throws(() {
501 array); 696 array[-1] = 0;
502 Expect.throws(() { array[-1] = 0; }, 697 }, (e) {
503 (e) { return e is RangeError; }); 698 return e is RangeError;
504 Expect.throws(() { return array[-1]; }, 699 });
505 (e) { return e is RangeError; }); 700 Expect.throws(() {
506 Expect.throws(() { array[10]; }, 701 return array[-1];
507 (e) { return e is RangeError; }); 702 }, (e) {
508 Expect.throws(() { array[10] = 0; }, 703 return e is RangeError;
509 (e) { return e is RangeError; }); 704 });
510 Expect.throws(() { array.add(0); }, 705 Expect.throws(() {
511 (e) { return e is UnsupportedError; }); 706 array[10];
512 Expect.throws(() { array.addAll([0]); }, 707 }, (e) {
513 (e) { return e is UnsupportedError; }); 708 return e is RangeError;
514 Expect.throws(() { array.clear(); }, 709 });
515 (e) { return e is UnsupportedError; }); 710 Expect.throws(() {
516 Expect.throws(() { array.length = 0; }, 711 array[10] = 0;
517 (e) { return e is UnsupportedError; }); 712 }, (e) {
518 Expect.throws(() { array.removeLast(); }, 713 return e is RangeError;
519 (e) { return e is UnsupportedError; }); 714 });
520 Expect.throws(() { array.removeRange(0, array.length - 1); }, 715 Expect.throws(() {
521 (e) { return e is UnsupportedError; }); 716 array.add(0);
717 }, (e) {
718 return e is UnsupportedError;
719 });
720 Expect.throws(() {
721 array.addAll([0]);
722 }, (e) {
723 return e is UnsupportedError;
724 });
725 Expect.throws(() {
726 array.clear();
727 }, (e) {
728 return e is UnsupportedError;
729 });
730 Expect.throws(() {
731 array.length = 0;
732 }, (e) {
733 return e is UnsupportedError;
734 });
735 Expect.throws(() {
736 array.removeLast();
737 }, (e) {
738 return e is UnsupportedError;
739 });
740 Expect.throws(() {
741 array.removeRange(0, array.length - 1);
742 }, (e) {
743 return e is UnsupportedError;
744 });
522 for (int i = 0; i < array.length; ++i) { 745 for (int i = 0; i < array.length; ++i) {
523 array[i] = 1 + i; 746 array[i] = 1 + i;
524 } 747 }
525 Expect.listEquals([1, 2, 3, 4, 5, 748 Expect.listEquals([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], array);
526 6, 7, 8, 9, 10],
527 array);
528 for (int i = 0; i < array.length; ++i) { 749 for (int i = 0; i < array.length; ++i) {
529 array[i] = 0x10000000000000000 + i; 750 array[i] = 0x10000000000000000 + i;
530 } 751 }
531 Expect.listEquals([0, 1, 2, 3, 4, 752 Expect.listEquals([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], array);
532 5, 6, 7, 8, 9],
533 array);
534 for (int i = 0; i < array.length; ++i) { 753 for (int i = 0; i < array.length; ++i) {
535 array[i] = -10 + i; 754 array[i] = -10 + i;
536 } 755 }
537 Expect.listEquals([-10, -9, -8, -7, -6, 756 Expect.listEquals([-10, -9, -8, -7, -6, -5, -4, -3, -2, -1], array);
538 -5, -4, -3, -2, -1],
539 array);
540 for (int i = 0; i < array.length; ++i) { 757 for (int i = 0; i < array.length; ++i) {
541 array[i] = 0x7FFFFFFFFFFFFFFF - i; 758 array[i] = 0x7FFFFFFFFFFFFFFF - i;
542 } 759 }
543 Expect.listEquals([0x7FFFFFFFFFFFFFFF, 0x7FFFFFFFFFFFFFFE, 760 Expect.listEquals([
544 0x7FFFFFFFFFFFFFFD, 0x7FFFFFFFFFFFFFFC, 761 0x7FFFFFFFFFFFFFFF,
545 0x7FFFFFFFFFFFFFFB, 0x7FFFFFFFFFFFFFFA, 762 0x7FFFFFFFFFFFFFFE,
546 0x7FFFFFFFFFFFFFF9, 0x7FFFFFFFFFFFFFF8, 763 0x7FFFFFFFFFFFFFFD,
547 0x7FFFFFFFFFFFFFF7, 0x7FFFFFFFFFFFFFF6], 764 0x7FFFFFFFFFFFFFFC,
548 array); 765 0x7FFFFFFFFFFFFFFB,
766 0x7FFFFFFFFFFFFFFA,
767 0x7FFFFFFFFFFFFFF9,
768 0x7FFFFFFFFFFFFFF8,
769 0x7FFFFFFFFFFFFFF7,
770 0x7FFFFFFFFFFFFFF6
771 ], array);
549 for (int i = 0; i < array.length; ++i) { 772 for (int i = 0; i < array.length; ++i) {
550 array[i] = -0x8000000000000000 + i; 773 array[i] = -0x8000000000000000 + i;
551 } 774 }
552 Expect.listEquals([-0x8000000000000000, -0x7FFFFFFFFFFFFFFF, 775 Expect.listEquals([
553 -0x7FFFFFFFFFFFFFFE, -0x7FFFFFFFFFFFFFFD, 776 -0x8000000000000000,
554 -0x7FFFFFFFFFFFFFFC, -0x7FFFFFFFFFFFFFFB, 777 -0x7FFFFFFFFFFFFFFF,
555 -0x7FFFFFFFFFFFFFFA, -0x7FFFFFFFFFFFFFF9, 778 -0x7FFFFFFFFFFFFFFE,
556 -0x7FFFFFFFFFFFFFF8, -0x7FFFFFFFFFFFFFF7], 779 -0x7FFFFFFFFFFFFFFD,
557 array); 780 -0x7FFFFFFFFFFFFFFC,
781 -0x7FFFFFFFFFFFFFFB,
782 -0x7FFFFFFFFFFFFFFA,
783 -0x7FFFFFFFFFFFFFF9,
784 -0x7FFFFFFFFFFFFFF8,
785 -0x7FFFFFFFFFFFFFF7
786 ], array);
558 for (int i = 0; i < array.length; ++i) { 787 for (int i = 0; i < array.length; ++i) {
559 array[i] = i; 788 array[i] = i;
560 } 789 }
561 var copy = array.sublist(0, array.length); 790 var copy = array.sublist(0, array.length);
562 Expect.isFalse(identical(copy, array)); 791 Expect.isFalse(identical(copy, array));
563 Expect.isTrue(copy is Int64List); 792 Expect.isTrue(copy is Int64List);
564 Expect.equals(10, copy.length); 793 Expect.equals(10, copy.length);
565 Expect.listEquals(array, copy); 794 Expect.listEquals(array, copy);
566 var empty = array.sublist(array.length, array.length); 795 var empty = array.sublist(array.length, array.length);
567 Expect.equals(0, empty.length); 796 Expect.equals(0, empty.length);
568 var region = array.sublist(3, array.length - 3); 797 var region = array.sublist(3, array.length - 3);
569 Expect.isTrue(copy is Int64List); 798 Expect.isTrue(copy is Int64List);
570 Expect.equals(4, region.length); 799 Expect.equals(4, region.length);
571 Expect.listEquals([3, 4, 5, 6], region); 800 Expect.listEquals([3, 4, 5, 6], region);
572 array.setRange(3, 7, [-0x8000000000000000, 0, 1, 0x7FFFFFFFFFFFFFFF]); 801 array.setRange(3, 7, [-0x8000000000000000, 0, 1, 0x7FFFFFFFFFFFFFFF]);
573 Expect.listEquals([0, 1, 2, -0x8000000000000000, 0, 802 Expect.listEquals(
574 1, 0x7FFFFFFFFFFFFFFF, 7, 8, 9], 803 [0, 1, 2, -0x8000000000000000, 0, 1, 0x7FFFFFFFFFFFFFFF, 7, 8, 9],
575 array); 804 array);
576 } 805 }
577 806
578 static testInt64List() { 807 static testInt64List() {
579 Expect.throws(() { new Int64List(-1); }, 808 Expect.throws(() {
580 (e) { return e is ArgumentError; }); 809 new Int64List(-1);
810 }, (e) {
811 return e is ArgumentError;
812 });
581 var array = new Int64List(10); 813 var array = new Int64List(10);
582 testInt64ListImpl(array); 814 testInt64ListImpl(array);
583 } 815 }
584 816
585 static testUint64ListImpl(Uint64List array) { 817 static testUint64ListImpl(Uint64List array) {
586 Expect.isTrue(array is List<int>); 818 Expect.isTrue(array is List<int>);
587 Expect.equals(10, array.length); 819 Expect.equals(10, array.length);
588 Expect.equals(8, array.elementSizeInBytes); 820 Expect.equals(8, array.elementSizeInBytes);
589 Expect.equals(80, array.lengthInBytes); 821 Expect.equals(80, array.lengthInBytes);
590 Expect.listEquals([0, 0, 0, 0, 0, 822 Expect.listEquals([0, 0, 0, 0, 0, 0, 0, 0, 0, 0], array);
591 0, 0, 0, 0, 0], 823 Expect.throws(() {
592 array); 824 array[-1] = 0;
593 Expect.throws(() { array[-1] = 0; }, 825 }, (e) {
594 (e) { return e is RangeError; }); 826 return e is RangeError;
595 Expect.throws(() { return array[-1]; }, 827 });
596 (e) { return e is RangeError; }); 828 Expect.throws(() {
597 Expect.throws(() { array[10]; }, 829 return array[-1];
598 (e) { return e is RangeError; }); 830 }, (e) {
599 Expect.throws(() { array[10] = 0; }, 831 return e is RangeError;
600 (e) { return e is RangeError; }); 832 });
601 Expect.throws(() { array.add(0); }, 833 Expect.throws(() {
602 (e) { return e is UnsupportedError; }); 834 array[10];
603 Expect.throws(() { array.addAll([0]); }, 835 }, (e) {
604 (e) { return e is UnsupportedError; }); 836 return e is RangeError;
605 Expect.throws(() { array.clear(); }, 837 });
606 (e) { return e is UnsupportedError; }); 838 Expect.throws(() {
607 Expect.throws(() { array.length = 0; }, 839 array[10] = 0;
608 (e) { return e is UnsupportedError; }); 840 }, (e) {
609 Expect.throws(() { array.removeLast(); }, 841 return e is RangeError;
610 (e) { return e is UnsupportedError; }); 842 });
611 Expect.throws(() { array.removeRange(0, array.length - 1); }, 843 Expect.throws(() {
612 (e) { return e is UnsupportedError; }); 844 array.add(0);
845 }, (e) {
846 return e is UnsupportedError;
847 });
848 Expect.throws(() {
849 array.addAll([0]);
850 }, (e) {
851 return e is UnsupportedError;
852 });
853 Expect.throws(() {
854 array.clear();
855 }, (e) {
856 return e is UnsupportedError;
857 });
858 Expect.throws(() {
859 array.length = 0;
860 }, (e) {
861 return e is UnsupportedError;
862 });
863 Expect.throws(() {
864 array.removeLast();
865 }, (e) {
866 return e is UnsupportedError;
867 });
868 Expect.throws(() {
869 array.removeRange(0, array.length - 1);
870 }, (e) {
871 return e is UnsupportedError;
872 });
613 for (int i = 0; i < array.length; ++i) { 873 for (int i = 0; i < array.length; ++i) {
614 array[i] = 1 + i; 874 array[i] = 1 + i;
615 } 875 }
616 Expect.listEquals([1, 2, 3, 4, 5, 876 Expect.listEquals([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], array);
617 6, 7, 8, 9, 10],
618 array);
619 for (int i = 0; i < array.length; ++i) { 877 for (int i = 0; i < array.length; ++i) {
620 array[i] = 0x10000000000000000 + i; 878 array[i] = 0x10000000000000000 + i;
621 } 879 }
622 Expect.listEquals([0, 1, 2, 3, 4, 880 Expect.listEquals([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], array);
623 5, 6, 7, 8, 9],
624 array);
625 for (int i = 0; i < array.length; ++i) { 881 for (int i = 0; i < array.length; ++i) {
626 array[i] = 0xFFFFFFFFFFFFFFFF - i; 882 array[i] = 0xFFFFFFFFFFFFFFFF - i;
627 } 883 }
628 Expect.listEquals([0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFE, 884 Expect.listEquals([
629 0xFFFFFFFFFFFFFFFD, 0xFFFFFFFFFFFFFFFC, 885 0xFFFFFFFFFFFFFFFF,
630 0xFFFFFFFFFFFFFFFB, 0xFFFFFFFFFFFFFFFA, 886 0xFFFFFFFFFFFFFFFE,
631 0xFFFFFFFFFFFFFFF9, 0xFFFFFFFFFFFFFFF8, 887 0xFFFFFFFFFFFFFFFD,
632 0xFFFFFFFFFFFFFFF7, 0xFFFFFFFFFFFFFFF6], 888 0xFFFFFFFFFFFFFFFC,
633 array); 889 0xFFFFFFFFFFFFFFFB,
890 0xFFFFFFFFFFFFFFFA,
891 0xFFFFFFFFFFFFFFF9,
892 0xFFFFFFFFFFFFFFF8,
893 0xFFFFFFFFFFFFFFF7,
894 0xFFFFFFFFFFFFFFF6
895 ], array);
634 for (int i = 0; i < array.length; ++i) { 896 for (int i = 0; i < array.length; ++i) {
635 array[i] = i; 897 array[i] = i;
636 } 898 }
637 var copy = array.sublist(0, array.length); 899 var copy = array.sublist(0, array.length);
638 Expect.isFalse(identical(copy, array)); 900 Expect.isFalse(identical(copy, array));
639 Expect.isTrue(copy is Uint64List); 901 Expect.isTrue(copy is Uint64List);
640 Expect.equals(10, copy.length); 902 Expect.equals(10, copy.length);
641 Expect.listEquals(array, copy); 903 Expect.listEquals(array, copy);
642 var empty = array.sublist(array.length, array.length); 904 var empty = array.sublist(array.length, array.length);
643 Expect.equals(0, empty.length); 905 Expect.equals(0, empty.length);
644 var region = array.sublist(3, array.length - 3); 906 var region = array.sublist(3, array.length - 3);
645 Expect.isTrue(copy is Uint64List); 907 Expect.isTrue(copy is Uint64List);
646 Expect.equals(4, region.length); 908 Expect.equals(4, region.length);
647 Expect.listEquals([3, 4, 5, 6], region); 909 Expect.listEquals([3, 4, 5, 6], region);
648 array.setRange(3, 7, [0x10000000000000001, 0, 1, 0xFFFFFFFFFFFFFFFF]); 910 array.setRange(3, 7, [0x10000000000000001, 0, 1, 0xFFFFFFFFFFFFFFFF]);
649 Expect.listEquals([0, 1, 2, 1, 0, 1, 0xFFFFFFFFFFFFFFFF, 7, 8, 9], 911 Expect.listEquals([0, 1, 2, 1, 0, 1, 0xFFFFFFFFFFFFFFFF, 7, 8, 9], array);
650 array);
651 } 912 }
652 913
653 static testUint64List() { 914 static testUint64List() {
654 Expect.throws(() { new Uint64List(-1); }, 915 Expect.throws(() {
655 (e) { return e is ArgumentError; }); 916 new Uint64List(-1);
917 }, (e) {
918 return e is ArgumentError;
919 });
656 var array = new Uint64List(10); 920 var array = new Uint64List(10);
657 testUint64ListImpl(array); 921 testUint64ListImpl(array);
658 } 922 }
659 923
660 static testFloat32ListImpl(Float32List array) { 924 static testFloat32ListImpl(Float32List array) {
661 Expect.isTrue(array is List<double>); 925 Expect.isTrue(array is List<double>);
662 Expect.equals(10, array.length); 926 Expect.equals(10, array.length);
663 Expect.equals(4, array.elementSizeInBytes); 927 Expect.equals(4, array.elementSizeInBytes);
664 Expect.equals(40, array.lengthInBytes); 928 Expect.equals(40, array.lengthInBytes);
665 Expect.listEquals([0.0, 0.0, 0.0, 0.0, 0.0, 929 Expect
666 0.0, 0.0, 0.0, 0.0, 0.0], 930 .listEquals([0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], array);
667 array); 931 Expect.throws(() {
668 Expect.throws(() { array[-1] = 0.0; }, 932 array[-1] = 0.0;
669 (e) { return e is RangeError; }); 933 }, (e) {
670 Expect.throws(() { return array[-1]; }, 934 return e is RangeError;
671 (e) { return e is RangeError; }); 935 });
672 Expect.throws(() { array[10]; }, 936 Expect.throws(() {
673 (e) { return e is RangeError; }); 937 return array[-1];
674 Expect.throws(() { array[10] = 0.0; }, 938 }, (e) {
675 (e) { return e is RangeError; }); 939 return e is RangeError;
676 Expect.throws(() { array.add(0.0); }, 940 });
677 (e) { return e is UnsupportedError; }); 941 Expect.throws(() {
678 Expect.throws(() { array.addAll([0]); }, 942 array[10];
679 (e) { return e is UnsupportedError; }); 943 }, (e) {
680 Expect.throws(() { array.clear(); }, 944 return e is RangeError;
681 (e) { return e is UnsupportedError; }); 945 });
682 Expect.throws(() { array.length = 0; }, 946 Expect.throws(() {
683 (e) { return e is UnsupportedError; }); 947 array[10] = 0.0;
684 Expect.throws(() { array.removeLast(); }, 948 }, (e) {
685 (e) { return e is UnsupportedError; }); 949 return e is RangeError;
686 Expect.throws(() { array.removeRange(0, array.length - 1); }, 950 });
687 (e) { return e is UnsupportedError; }); 951 Expect.throws(() {
952 array.add(0.0);
953 }, (e) {
954 return e is UnsupportedError;
955 });
956 Expect.throws(() {
957 array.addAll([0]);
958 }, (e) {
959 return e is UnsupportedError;
960 });
961 Expect.throws(() {
962 array.clear();
963 }, (e) {
964 return e is UnsupportedError;
965 });
966 Expect.throws(() {
967 array.length = 0;
968 }, (e) {
969 return e is UnsupportedError;
970 });
971 Expect.throws(() {
972 array.removeLast();
973 }, (e) {
974 return e is UnsupportedError;
975 });
976 Expect.throws(() {
977 array.removeRange(0, array.length - 1);
978 }, (e) {
979 return e is UnsupportedError;
980 });
688 for (int i = 0; i < array.length; ++i) { 981 for (int i = 0; i < array.length; ++i) {
689 array[i] = 1.0 + i; 982 array[i] = 1.0 + i;
690 } 983 }
691 Expect.listEquals([1.0, 2.0, 3.0, 4.0, 5.0, 984 Expect
692 6.0, 7.0, 8.0, 9.0, 10.0], 985 .listEquals([1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0], array);
693 array);
694 // TODO: min, max, and round 986 // TODO: min, max, and round
695 for (int i = 0; i < array.length; ++i) { 987 for (int i = 0; i < array.length; ++i) {
696 array[i] = i * 1.0; 988 array[i] = i * 1.0;
697 } 989 }
698 var copy = array.sublist(0, array.length); 990 var copy = array.sublist(0, array.length);
699 Expect.isFalse(identical(copy, array)); 991 Expect.isFalse(identical(copy, array));
700 Expect.isTrue(copy is Float32List); 992 Expect.isTrue(copy is Float32List);
701 Expect.equals(10, copy.length); 993 Expect.equals(10, copy.length);
702 Expect.listEquals(array, copy); 994 Expect.listEquals(array, copy);
703 var empty = array.sublist(array.length, array.length); 995 var empty = array.sublist(array.length, array.length);
704 Expect.equals(0, empty.length); 996 Expect.equals(0, empty.length);
705 var region = array.sublist(3, array.length - 3); 997 var region = array.sublist(3, array.length - 3);
706 Expect.isTrue(copy is Float32List); 998 Expect.isTrue(copy is Float32List);
707 Expect.equals(4, region.length); 999 Expect.equals(4, region.length);
708 Expect.listEquals([3.0, 4.0, 5.0, 6.0], region); 1000 Expect.listEquals([3.0, 4.0, 5.0, 6.0], region);
709 array.setRange(3, 7, [double.NEGATIVE_INFINITY, 0.0, 1.0, double.INFINITY]); 1001 array.setRange(3, 7, [double.NEGATIVE_INFINITY, 0.0, 1.0, double.INFINITY]);
710 Expect.listEquals([0.0, 1.0, 2.0, double.NEGATIVE_INFINITY, 0.0, 1002 Expect.listEquals([
711 1.0, double.INFINITY, 7.0, 8.0, 9.0], 1003 0.0,
712 array); 1004 1.0,
1005 2.0,
1006 double.NEGATIVE_INFINITY,
1007 0.0,
1008 1.0,
1009 double.INFINITY,
1010 7.0,
1011 8.0,
1012 9.0
1013 ], array);
713 } 1014 }
714 1015
715 static testFloat32List() { 1016 static testFloat32List() {
716 Expect.throws(() { new Float32List(-1); }, 1017 Expect.throws(() {
717 (e) { return e is ArgumentError; }); 1018 new Float32List(-1);
1019 }, (e) {
1020 return e is ArgumentError;
1021 });
718 var array = new Float32List(10); 1022 var array = new Float32List(10);
719 testFloat32ListImpl(array); 1023 testFloat32ListImpl(array);
720 } 1024 }
721 1025
722 static testFloat64ListImpl(Float64List array) { 1026 static testFloat64ListImpl(Float64List array) {
723 Expect.isTrue(array is List<double>); 1027 Expect.isTrue(array is List<double>);
724 Expect.equals(10, array.length); 1028 Expect.equals(10, array.length);
725 Expect.equals(8, array.elementSizeInBytes); 1029 Expect.equals(8, array.elementSizeInBytes);
726 Expect.equals(80, array.lengthInBytes); 1030 Expect.equals(80, array.lengthInBytes);
727 Expect.listEquals([0.0, 0.0, 0.0, 0.0, 0.0, 1031 Expect
728 0.0, 0.0, 0.0, 0.0, 0.0], 1032 .listEquals([0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], array);
729 array); 1033 Expect.throws(() {
730 Expect.throws(() { array[-1] = 0.0; }, 1034 array[-1] = 0.0;
731 (e) { return e is RangeError; }); 1035 }, (e) {
732 Expect.throws(() { return array[-1]; }, 1036 return e is RangeError;
733 (e) { return e is RangeError; }); 1037 });
734 Expect.throws(() { array[10]; }, 1038 Expect.throws(() {
735 (e) { return e is RangeError; }); 1039 return array[-1];
736 Expect.throws(() { array[10] = 0.0; }, 1040 }, (e) {
737 (e) { return e is RangeError; }); 1041 return e is RangeError;
738 Expect.throws(() { array.add(0.0); }, 1042 });
739 (e) { return e is UnsupportedError; }); 1043 Expect.throws(() {
740 Expect.throws(() { array.addAll([0]); }, 1044 array[10];
741 (e) { return e is UnsupportedError; }); 1045 }, (e) {
742 Expect.throws(() { array.clear(); }, 1046 return e is RangeError;
743 (e) { return e is UnsupportedError; }); 1047 });
744 Expect.throws(() { array.length = 0; }, 1048 Expect.throws(() {
745 (e) { return e is UnsupportedError; }); 1049 array[10] = 0.0;
746 Expect.throws(() { array.removeLast(); }, 1050 }, (e) {
747 (e) { return e is UnsupportedError; }); 1051 return e is RangeError;
748 Expect.throws(() { array.removeRange(0, array.length - 1); }, 1052 });
749 (e) { return e is UnsupportedError; }); 1053 Expect.throws(() {
1054 array.add(0.0);
1055 }, (e) {
1056 return e is UnsupportedError;
1057 });
1058 Expect.throws(() {
1059 array.addAll([0]);
1060 }, (e) {
1061 return e is UnsupportedError;
1062 });
1063 Expect.throws(() {
1064 array.clear();
1065 }, (e) {
1066 return e is UnsupportedError;
1067 });
1068 Expect.throws(() {
1069 array.length = 0;
1070 }, (e) {
1071 return e is UnsupportedError;
1072 });
1073 Expect.throws(() {
1074 array.removeLast();
1075 }, (e) {
1076 return e is UnsupportedError;
1077 });
1078 Expect.throws(() {
1079 array.removeRange(0, array.length - 1);
1080 }, (e) {
1081 return e is UnsupportedError;
1082 });
750 for (int i = 0; i < array.length; ++i) { 1083 for (int i = 0; i < array.length; ++i) {
751 array[i] = 1.0 + i; 1084 array[i] = 1.0 + i;
752 } 1085 }
753 Expect.listEquals([1.0, 2.0, 3.0, 4.0, 5.0, 1086 Expect
754 6.0, 7.0, 8.0, 9.0, 10.0], 1087 .listEquals([1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0], array);
755 array);
756 // TODO: min, max 1088 // TODO: min, max
757 for (int i = 0; i < array.length; ++i) { 1089 for (int i = 0; i < array.length; ++i) {
758 array[i] = i * 1.0; 1090 array[i] = i * 1.0;
759 } 1091 }
760 var copy = array.sublist(0, array.length); 1092 var copy = array.sublist(0, array.length);
761 Expect.isFalse(identical(copy, array)); 1093 Expect.isFalse(identical(copy, array));
762 Expect.isTrue(copy is Float64List); 1094 Expect.isTrue(copy is Float64List);
763 Expect.equals(10, copy.length); 1095 Expect.equals(10, copy.length);
764 Expect.listEquals(array, copy); 1096 Expect.listEquals(array, copy);
765 var empty = array.sublist(array.length, array.length); 1097 var empty = array.sublist(array.length, array.length);
766 Expect.equals(0, empty.length); 1098 Expect.equals(0, empty.length);
767 var region = array.sublist(3, array.length - 3); 1099 var region = array.sublist(3, array.length - 3);
768 Expect.isTrue(copy is Float64List); 1100 Expect.isTrue(copy is Float64List);
769 Expect.equals(4, region.length); 1101 Expect.equals(4, region.length);
770 Expect.listEquals([3.0, 4.0, 5.0, 6.0], region); 1102 Expect.listEquals([3.0, 4.0, 5.0, 6.0], region);
771 array.setRange(3, 7, [double.NEGATIVE_INFINITY, 0.0, 1.0, double.INFINITY]); 1103 array.setRange(3, 7, [double.NEGATIVE_INFINITY, 0.0, 1.0, double.INFINITY]);
772 Expect.listEquals([0.0, 1.0, 2.0, double.NEGATIVE_INFINITY, 0.0, 1104 Expect.listEquals([
773 1.0, double.INFINITY, 7.0, 8.0, 9.0], 1105 0.0,
774 array); 1106 1.0,
1107 2.0,
1108 double.NEGATIVE_INFINITY,
1109 0.0,
1110 1.0,
1111 double.INFINITY,
1112 7.0,
1113 8.0,
1114 9.0
1115 ], array);
775 } 1116 }
776 1117
777 static testFloat64List() { 1118 static testFloat64List() {
778 Expect.throws(() { new Float64List(-1); }, 1119 Expect.throws(() {
779 (e) { return e is ArgumentError; }); 1120 new Float64List(-1);
1121 }, (e) {
1122 return e is ArgumentError;
1123 });
780 var array = new Float64List(10); 1124 var array = new Float64List(10);
781 testFloat64ListImpl(array); 1125 testFloat64ListImpl(array);
782 } 1126 }
783 1127
784 static testInt8ListViewImpl(var array) { 1128 static testInt8ListViewImpl(var array) {
785 Expect.equals(12, array.length); 1129 Expect.equals(12, array.length);
786 Expect.equals(1, array.elementSizeInBytes); 1130 Expect.equals(1, array.elementSizeInBytes);
787 Expect.equals(12, array.lengthInBytes); 1131 Expect.equals(12, array.lengthInBytes);
788 for (int i = 0; i < array.length; ++i) { 1132 for (int i = 0; i < array.length; ++i) {
789 array[i] = 0xFF; 1133 array[i] = 0xFF;
790 } 1134 }
791 Expect.throws(() { new Int8List.view(array.buffer, -1); }, 1135 Expect.throws(() {
792 (e) { return e is RangeError; }); 1136 new Int8List.view(array.buffer, -1);
793 Expect.throws(() { new Int8List.view(array.buffer, 0, -1); }, 1137 }, (e) {
794 (e) { return e is RangeError; }); 1138 return e is RangeError;
795 Expect.throws(() { new Int8List.view(array.buffer, 1139 });
796 array.lengthInBytes + 1); }, 1140 Expect.throws(() {
797 (e) { return e is RangeError; }); 1141 new Int8List.view(array.buffer, 0, -1);
798 Expect.throws(() { new Int8List.view(array.buffer, 1142 }, (e) {
799 0, array.length + 1); }, 1143 return e is RangeError;
800 (e) { return e is RangeError; }); 1144 });
801 Expect.throws(() { new Int8List.view(array.buffer, 1145 Expect.throws(() {
802 array.length - 1, 2); }, 1146 new Int8List.view(array.buffer, array.lengthInBytes + 1);
803 (e) { return e is RangeError; }); 1147 }, (e) {
804 var empty = new Int8List.view(array.buffer, 1148 return e is RangeError;
805 array.lengthInBytes); 1149 });
1150 Expect.throws(() {
1151 new Int8List.view(array.buffer, 0, array.length + 1);
1152 }, (e) {
1153 return e is RangeError;
1154 });
1155 Expect.throws(() {
1156 new Int8List.view(array.buffer, array.length - 1, 2);
1157 }, (e) {
1158 return e is RangeError;
1159 });
1160 var empty = new Int8List.view(array.buffer, array.lengthInBytes);
806 Expect.isTrue(empty is List<int>); 1161 Expect.isTrue(empty is List<int>);
807 Expect.isTrue(empty is Int8List); 1162 Expect.isTrue(empty is Int8List);
808 Expect.equals(0, empty.length); 1163 Expect.equals(0, empty.length);
809 var whole = new Int8List.view(array.buffer); 1164 var whole = new Int8List.view(array.buffer);
810 Expect.isTrue(whole is List<int>); 1165 Expect.isTrue(whole is List<int>);
811 Expect.isTrue(whole is Int8List); 1166 Expect.isTrue(whole is Int8List);
812 Expect.equals(12, whole.length); 1167 Expect.equals(12, whole.length);
813 var view = new Int8List.view(array.buffer, 1, array.length - 2); 1168 var view = new Int8List.view(array.buffer, 1, array.length - 2);
814 Expect.isTrue(view is List<int>); 1169 Expect.isTrue(view is List<int>);
815 Expect.isTrue(view is Int8List); 1170 Expect.isTrue(view is Int8List);
816 Expect.equals(10, view.length); 1171 Expect.equals(10, view.length);
817 Expect.equals(1, view.elementSizeInBytes); 1172 Expect.equals(1, view.elementSizeInBytes);
818 Expect.equals(10, view.lengthInBytes); 1173 Expect.equals(10, view.lengthInBytes);
819 Expect.listEquals([-1, -1, -1, -1, -1, 1174 Expect.listEquals([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1], view);
820 -1, -1, -1, -1, -1], 1175 Expect.throws(() {
821 view); 1176 view[-1] = 0;
822 Expect.throws(() { view[-1] = 0; }, 1177 }, (e) {
823 (e) { return e is RangeError; }); 1178 return e is RangeError;
824 Expect.throws(() { return view[-1]; }, 1179 });
825 (e) { return e is RangeError; }); 1180 Expect.throws(() {
826 Expect.throws(() { view[view.length]; }, 1181 return view[-1];
827 (e) { return e is RangeError; }); 1182 }, (e) {
828 Expect.throws(() { view[10] = 0; }, 1183 return e is RangeError;
829 (e) { return e is RangeError; }); 1184 });
830 Expect.throws(() { view.add(0); }, 1185 Expect.throws(() {
831 (e) { return e is UnsupportedError; }); 1186 view[view.length];
832 Expect.throws(() { view.addAll([0]); }, 1187 }, (e) {
833 (e) { return e is UnsupportedError; }); 1188 return e is RangeError;
834 Expect.throws(() { view.clear(); }, 1189 });
835 (e) { return e is UnsupportedError; }); 1190 Expect.throws(() {
836 Expect.throws(() { view.length = 0; }, 1191 view[10] = 0;
837 (e) { return e is UnsupportedError; }); 1192 }, (e) {
838 Expect.throws(() { view.removeLast(); }, 1193 return e is RangeError;
839 (e) { return e is UnsupportedError; }); 1194 });
840 Expect.throws(() { view.removeRange(0, view.length - 1); }, 1195 Expect.throws(() {
841 (e) { return e is UnsupportedError; }); 1196 view.add(0);
1197 }, (e) {
1198 return e is UnsupportedError;
1199 });
1200 Expect.throws(() {
1201 view.addAll([0]);
1202 }, (e) {
1203 return e is UnsupportedError;
1204 });
1205 Expect.throws(() {
1206 view.clear();
1207 }, (e) {
1208 return e is UnsupportedError;
1209 });
1210 Expect.throws(() {
1211 view.length = 0;
1212 }, (e) {
1213 return e is UnsupportedError;
1214 });
1215 Expect.throws(() {
1216 view.removeLast();
1217 }, (e) {
1218 return e is UnsupportedError;
1219 });
1220 Expect.throws(() {
1221 view.removeRange(0, view.length - 1);
1222 }, (e) {
1223 return e is UnsupportedError;
1224 });
842 for (int i = 0; i < view.length; ++i) { 1225 for (int i = 0; i < view.length; ++i) {
843 view[i] = 1 + i; 1226 view[i] = 1 + i;
844 } 1227 }
845 Expect.listEquals([1, 2, 3, 4, 5, 1228 Expect.listEquals([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], view);
846 6, 7, 8, 9, 10], 1229 Expect.listEquals([0xFF, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0xFF], array);
847 view);
848 Expect.listEquals([0xFF, 1, 2, 3, 4, 5,
849 6, 7, 8, 9, 10, 0xFF],
850 array);
851 for (int i = 0; i < view.length; ++i) { 1230 for (int i = 0; i < view.length; ++i) {
852 view[i] = 0x100 + i; 1231 view[i] = 0x100 + i;
853 } 1232 }
854 Expect.listEquals([0, 1, 2, 3, 4, 1233 Expect.listEquals([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], view);
855 5, 6, 7, 8, 9], 1234 Expect.listEquals([0xFF, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0xFF], array);
856 view);
857 Expect.listEquals([0xFF, 0, 1, 2, 3, 4,
858 5, 6, 7, 8, 9, 0xFF],
859 array);
860 for (int i = 0; i < view.length; ++i) { 1235 for (int i = 0; i < view.length; ++i) {
861 view[i] = -10 + i; 1236 view[i] = -10 + i;
862 } 1237 }
863 Expect.listEquals([-10, -9, -8, -7, -6, 1238 Expect.listEquals([-10, -9, -8, -7, -6, -5, -4, -3, -2, -1], view);
864 -5, -4, -3, -2, -1], 1239 Expect.listEquals([
865 view); 1240 0xFF,
866 Expect.listEquals([0xFF, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 1241 0xF6,
867 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, 0xFF], 1242 0xF7,
868 array); 1243 0xF8,
1244 0xF9,
1245 0xFA,
1246 0xFB,
1247 0xFC,
1248 0xFD,
1249 0xFE,
1250 0xFF,
1251 0xFF
1252 ], array);
869 for (int i = 0; i < view.length; ++i) { 1253 for (int i = 0; i < view.length; ++i) {
870 view[i] = 0x7F - i; 1254 view[i] = 0x7F - i;
871 } 1255 }
872 Expect.listEquals([127, 126, 125, 124, 123, 1256 Expect.listEquals([127, 126, 125, 124, 123, 122, 121, 120, 119, 118], view);
873 122, 121, 120, 119, 118], 1257 Expect.listEquals(
874 view); 1258 [0xFF, 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 0xFF], array);
875 Expect.listEquals([0xFF, 127, 126, 125, 124, 123,
876 122, 121, 120, 119, 118, 0xFF],
877 array);
878 for (int i = 0; i < view.length; ++i) { 1259 for (int i = 0; i < view.length; ++i) {
879 view[i] = -0x80 + i; 1260 view[i] = -0x80 + i;
880 } 1261 }
881 Expect.listEquals([-128, -127, -126, -125, -124, 1262 Expect.listEquals(
882 -123, -122, -121, -120, -119], 1263 [-128, -127, -126, -125, -124, -123, -122, -121, -120, -119], view);
883 view); 1264 Expect.listEquals([
884 Expect.listEquals([0xFF, 0x80, 0x81, 0x82, 0x83, 0x84, 1265 0xFF,
885 0x85, 0x86, 0x87, 0x88, 0x89, 0xFF], 1266 0x80,
886 array); 1267 0x81,
1268 0x82,
1269 0x83,
1270 0x84,
1271 0x85,
1272 0x86,
1273 0x87,
1274 0x88,
1275 0x89,
1276 0xFF
1277 ], array);
887 for (int i = 0; i < view.length; ++i) { 1278 for (int i = 0; i < view.length; ++i) {
888 view[i] = i; 1279 view[i] = i;
889 } 1280 }
890 var copy = view.sublist(0, view.length); 1281 var copy = view.sublist(0, view.length);
891 Expect.isFalse(identical(copy, view)); 1282 Expect.isFalse(identical(copy, view));
892 Expect.isTrue(copy is Int8List); 1283 Expect.isTrue(copy is Int8List);
893 Expect.equals(10, copy.length); 1284 Expect.equals(10, copy.length);
894 Expect.listEquals(view, copy); 1285 Expect.listEquals(view, copy);
895 var region = view.sublist(3, view.length - 3); 1286 var region = view.sublist(3, view.length - 3);
896 Expect.isTrue(copy is Int8List); 1287 Expect.isTrue(copy is Int8List);
897 Expect.equals(4, region.length); 1288 Expect.equals(4, region.length);
898 Expect.listEquals([3, 4, 5, 6], region); 1289 Expect.listEquals([3, 4, 5, 6], region);
899 view.setRange(3, 7, [-128, 0, 1, 127]); 1290 view.setRange(3, 7, [-128, 0, 1, 127]);
900 Expect.listEquals([0, 1, 2, -128, 0, 1, 127, 7, 8, 9], 1291 Expect.listEquals([0, 1, 2, -128, 0, 1, 127, 7, 8, 9], view);
901 view); 1292 Expect.listEquals([0xFF, 0, 1, 2, 128, 0, 1, 127, 7, 8, 9, 0xFF], array);
902 Expect.listEquals([0xFF, 0, 1, 2, 128, 0, 1, 127, 7, 8, 9, 0xFF],
903 array);
904 } 1293 }
1294
905 static testInt8ListView() { 1295 static testInt8ListView() {
906 var array = new Uint8List(12); 1296 var array = new Uint8List(12);
907 testInt8ListViewImpl(array); 1297 testInt8ListViewImpl(array);
908 } 1298 }
909 1299
910 static testUint8ListViewImpl(var array) { 1300 static testUint8ListViewImpl(var array) {
911 Expect.isTrue(array is List<int>); 1301 Expect.isTrue(array is List<int>);
912 Expect.equals(12, array.length); 1302 Expect.equals(12, array.length);
913 Expect.equals(1, array.elementSizeInBytes); 1303 Expect.equals(1, array.elementSizeInBytes);
914 Expect.equals(12, array.lengthInBytes); 1304 Expect.equals(12, array.lengthInBytes);
915 for (int i = 0; i < array.length; ++i) { 1305 for (int i = 0; i < array.length; ++i) {
916 array[i] = -1; 1306 array[i] = -1;
917 } 1307 }
918 Expect.throws(() { new Uint8List.view(array.buffer, -1); }, 1308 Expect.throws(() {
919 (e) { return e is RangeError; }); 1309 new Uint8List.view(array.buffer, -1);
920 Expect.throws(() { new Uint8List.view(array.buffer, 0, -1); }, 1310 }, (e) {
921 (e) { return e is RangeError; }); 1311 return e is RangeError;
922 Expect.throws(() { new Uint8List.view(array.buffer, 1312 });
923 array.lengthInBytes + 1); }, 1313 Expect.throws(() {
924 (e) { return e is RangeError; }); 1314 new Uint8List.view(array.buffer, 0, -1);
925 Expect.throws(() { new Uint8List.view(array.buffer, 1315 }, (e) {
926 0, array.length + 1); }, 1316 return e is RangeError;
927 (e) { return e is RangeError; }); 1317 });
928 Expect.throws(() { new Uint8List.view(array.buffer, 1318 Expect.throws(() {
929 array.length - 1, 2); }, 1319 new Uint8List.view(array.buffer, array.lengthInBytes + 1);
930 (e) { return e is RangeError; }); 1320 }, (e) {
931 var empty = new Uint8List.view(array.buffer, 1321 return e is RangeError;
932 array.lengthInBytes); 1322 });
1323 Expect.throws(() {
1324 new Uint8List.view(array.buffer, 0, array.length + 1);
1325 }, (e) {
1326 return e is RangeError;
1327 });
1328 Expect.throws(() {
1329 new Uint8List.view(array.buffer, array.length - 1, 2);
1330 }, (e) {
1331 return e is RangeError;
1332 });
1333 var empty = new Uint8List.view(array.buffer, array.lengthInBytes);
933 Expect.isTrue(empty is List<int>); 1334 Expect.isTrue(empty is List<int>);
934 Expect.isTrue(empty is Uint8List); 1335 Expect.isTrue(empty is Uint8List);
935 Expect.equals(0, empty.length); 1336 Expect.equals(0, empty.length);
936 var whole = new Uint8List.view(array.buffer); 1337 var whole = new Uint8List.view(array.buffer);
937 Expect.isTrue(whole is List<int>); 1338 Expect.isTrue(whole is List<int>);
938 Expect.isTrue(whole is Uint8List); 1339 Expect.isTrue(whole is Uint8List);
939 Expect.equals(12, whole.length); 1340 Expect.equals(12, whole.length);
940 var view = new Uint8List.view(array.buffer, 1, array.length - 2); 1341 var view = new Uint8List.view(array.buffer, 1, array.length - 2);
941 Expect.isTrue(view is List<int>); 1342 Expect.isTrue(view is List<int>);
942 Expect.isTrue(view is Uint8List); 1343 Expect.isTrue(view is Uint8List);
943 Expect.equals(10, view.length); 1344 Expect.equals(10, view.length);
944 Expect.equals(1, view.elementSizeInBytes); 1345 Expect.equals(1, view.elementSizeInBytes);
945 Expect.equals(10, view.lengthInBytes); 1346 Expect.equals(10, view.lengthInBytes);
946 Expect.listEquals([0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 1347 Expect.listEquals(
947 0xFF, 0xFF, 0xFF, 0xFF, 0xFF], 1348 [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF], view);
948 view); 1349 Expect.throws(() {
949 Expect.throws(() { view[-1] = 0; }, 1350 view[-1] = 0;
950 (e) { return e is RangeError; }); 1351 }, (e) {
951 Expect.throws(() { return view[-1]; }, 1352 return e is RangeError;
952 (e) { return e is RangeError; }); 1353 });
953 Expect.throws(() { view[view.length]; }, 1354 Expect.throws(() {
954 (e) { return e is RangeError; }); 1355 return view[-1];
955 Expect.throws(() { view[view.length] = 0; }, 1356 }, (e) {
956 (e) { return e is RangeError; }); 1357 return e is RangeError;
957 Expect.throws(() { view.add(0); }, 1358 });
958 (e) { return e is UnsupportedError; }); 1359 Expect.throws(() {
959 Expect.throws(() { view.addAll([0]); }, 1360 view[view.length];
960 (e) { return e is UnsupportedError; }); 1361 }, (e) {
961 Expect.throws(() { view.clear(); }, 1362 return e is RangeError;
962 (e) { return e is UnsupportedError; }); 1363 });
963 Expect.throws(() { view.length = 0; }, 1364 Expect.throws(() {
964 (e) { return e is UnsupportedError; }); 1365 view[view.length] = 0;
965 Expect.throws(() { view.removeLast(); }, 1366 }, (e) {
966 (e) { return e is UnsupportedError; }); 1367 return e is RangeError;
967 Expect.throws(() { view.removeRange(0, view.length - 1); }, 1368 });
968 (e) { return e is UnsupportedError; }); 1369 Expect.throws(() {
1370 view.add(0);
1371 }, (e) {
1372 return e is UnsupportedError;
1373 });
1374 Expect.throws(() {
1375 view.addAll([0]);
1376 }, (e) {
1377 return e is UnsupportedError;
1378 });
1379 Expect.throws(() {
1380 view.clear();
1381 }, (e) {
1382 return e is UnsupportedError;
1383 });
1384 Expect.throws(() {
1385 view.length = 0;
1386 }, (e) {
1387 return e is UnsupportedError;
1388 });
1389 Expect.throws(() {
1390 view.removeLast();
1391 }, (e) {
1392 return e is UnsupportedError;
1393 });
1394 Expect.throws(() {
1395 view.removeRange(0, view.length - 1);
1396 }, (e) {
1397 return e is UnsupportedError;
1398 });
969 for (int i = 0; i < view.length; ++i) { 1399 for (int i = 0; i < view.length; ++i) {
970 view[i] = 1 + i; 1400 view[i] = 1 + i;
971 } 1401 }
972 Expect.listEquals([1, 2, 3, 4, 5, 1402 Expect.listEquals([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], view);
973 6, 7, 8, 9, 10], 1403 Expect.listEquals([-1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, -1], array);
974 view);
975 Expect.listEquals([-1, 1, 2, 3, 4, 5,
976 6, 7, 8, 9, 10, -1],
977 array);
978 for (int i = 0; i < view.length; ++i) { 1404 for (int i = 0; i < view.length; ++i) {
979 view[i] = 0x100 + i; 1405 view[i] = 0x100 + i;
980 } 1406 }
981 Expect.listEquals([0, 1, 2, 3, 4, 1407 Expect.listEquals([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], view);
982 5, 6, 7, 8, 9], 1408 Expect.listEquals([-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1], array);
983 view);
984 Expect.listEquals([-1, 0, 1, 2, 3, 4,
985 5, 6, 7, 8, 9, -1],
986 array);
987 for (int i = 0; i < view.length; ++i) { 1409 for (int i = 0; i < view.length; ++i) {
988 view[i] = 0xFF - i; 1410 view[i] = 0xFF - i;
989 } 1411 }
990 Expect.listEquals([0xFF, 0xFE, 0xFD, 0xFC, 0xFB, 1412 Expect.listEquals(
991 0xFA, 0xF9, 0xF8, 0xF7, 0xF6], 1413 [0xFF, 0xFE, 0xFD, 0xFC, 0xFB, 0xFA, 0xF9, 0xF8, 0xF7, 0xF6], view);
992 view); 1414 Expect.listEquals([-1, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -1], array);
993 Expect.listEquals([-1, -1, -2, -3, -4, -5,
994 -6, -7, -8, -9, -10, -1],
995 array);
996 for (int i = 0; i < view.length; ++i) { 1415 for (int i = 0; i < view.length; ++i) {
997 view[i] = i; 1416 view[i] = i;
998 } 1417 }
999 var copy = view.sublist(0, view.length); 1418 var copy = view.sublist(0, view.length);
1000 Expect.isFalse(identical(copy, view)); 1419 Expect.isFalse(identical(copy, view));
1001 Expect.isTrue(copy is Uint8List); 1420 Expect.isTrue(copy is Uint8List);
1002 Expect.equals(10, copy.length); 1421 Expect.equals(10, copy.length);
1003 Expect.listEquals(view, copy); 1422 Expect.listEquals(view, copy);
1004 var region = view.sublist(3, view.length - 3); 1423 var region = view.sublist(3, view.length - 3);
1005 Expect.isTrue(copy is Uint8List); 1424 Expect.isTrue(copy is Uint8List);
1006 Expect.equals(4, region.length); 1425 Expect.equals(4, region.length);
1007 Expect.listEquals([3, 4, 5, 6], region); 1426 Expect.listEquals([3, 4, 5, 6], region);
1008 view.setRange(3, 7, [257, 0, 1, 255]); 1427 view.setRange(3, 7, [257, 0, 1, 255]);
1009 Expect.listEquals([0, 1, 2, 1, 0, 1, 255, 7, 8, 9], 1428 Expect.listEquals([0, 1, 2, 1, 0, 1, 255, 7, 8, 9], view);
1010 view);
1011 } 1429 }
1012 1430
1013 static testUint8ListView() { 1431 static testUint8ListView() {
1014 var array = new Int8List(12); 1432 var array = new Int8List(12);
1015 testUint8ListViewImpl(array); 1433 testUint8ListViewImpl(array);
1016 } 1434 }
1017 1435
1018 static testInt16ListViewImpl(var array) { 1436 static testInt16ListViewImpl(var array) {
1019 Expect.equals(24, array.length); 1437 Expect.equals(24, array.length);
1020 Expect.equals(1, array.elementSizeInBytes); 1438 Expect.equals(1, array.elementSizeInBytes);
1021 Expect.equals(24, array.lengthInBytes); 1439 Expect.equals(24, array.lengthInBytes);
1022 for (int i = 0; i < array.length; ++i) { 1440 for (int i = 0; i < array.length; ++i) {
1023 array[i] = 0xFF; 1441 array[i] = 0xFF;
1024 } 1442 }
1025 Expect.throws(() { new Int16List.view(array.buffer, -1); }, 1443 Expect.throws(() {
1026 (e) { return e is RangeError; }); 1444 new Int16List.view(array.buffer, -1);
1027 Expect.throws(() { new Int16List.view(array.buffer, 0, -1); }, 1445 }, (e) {
1028 (e) { return e is RangeError; }); 1446 return e is RangeError;
1029 Expect.throws(() { new Int16List.view(array.buffer, 1447 });
1030 array.lengthInBytes + 1); }, 1448 Expect.throws(() {
1031 (e) { return e is RangeError; }); 1449 new Int16List.view(array.buffer, 0, -1);
1032 Expect.throws(() { new Int16List.view(array.buffer, 1450 }, (e) {
1033 0, array.length + 1); }, 1451 return e is RangeError;
1034 (e) { return e is RangeError; }); 1452 });
1035 Expect.throws(() { new Int16List.view(array.buffer, 1453 Expect.throws(() {
1036 array.length - 1, 2); }, 1454 new Int16List.view(array.buffer, array.lengthInBytes + 1);
1037 (e) { return e is RangeError; }); 1455 }, (e) {
1038 var empty = new Int16List.view(array.buffer, 1456 return e is RangeError;
1039 array.lengthInBytes); 1457 });
1458 Expect.throws(() {
1459 new Int16List.view(array.buffer, 0, array.length + 1);
1460 }, (e) {
1461 return e is RangeError;
1462 });
1463 Expect.throws(() {
1464 new Int16List.view(array.buffer, array.length - 1, 2);
1465 }, (e) {
1466 return e is RangeError;
1467 });
1468 var empty = new Int16List.view(array.buffer, array.lengthInBytes);
1040 Expect.isTrue(empty is List<int>); 1469 Expect.isTrue(empty is List<int>);
1041 Expect.isTrue(empty is Int16List); 1470 Expect.isTrue(empty is Int16List);
1042 Expect.equals(0, empty.length); 1471 Expect.equals(0, empty.length);
1043 var whole = new Int16List.view(array.buffer); 1472 var whole = new Int16List.view(array.buffer);
1044 Expect.isTrue(whole is List<int>); 1473 Expect.isTrue(whole is List<int>);
1045 Expect.isTrue(whole is Int16List); 1474 Expect.isTrue(whole is Int16List);
1046 Expect.equals(12, whole.length); 1475 Expect.equals(12, whole.length);
1047 var view = new Int16List.view(array.buffer, 2, 10); 1476 var view = new Int16List.view(array.buffer, 2, 10);
1048 Expect.isTrue(view is List<int>); 1477 Expect.isTrue(view is List<int>);
1049 Expect.isTrue(view is Int16List); 1478 Expect.isTrue(view is Int16List);
1050 Expect.equals(10, view.length); 1479 Expect.equals(10, view.length);
1051 Expect.equals(2, view.elementSizeInBytes); 1480 Expect.equals(2, view.elementSizeInBytes);
1052 Expect.equals(20, view.lengthInBytes); 1481 Expect.equals(20, view.lengthInBytes);
1053 Expect.listEquals([-1, -1, -1, -1, -1, 1482 Expect.listEquals([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1], view);
1054 -1, -1, -1, -1, -1], 1483 Expect.throws(() {
1055 view); 1484 view[-1] = 0;
1056 Expect.throws(() { view[-1] = 0; }, 1485 }, (e) {
1057 (e) { return e is RangeError; }); 1486 return e is RangeError;
1058 Expect.throws(() { return view[-1]; }, 1487 });
1059 (e) { return e is RangeError; }); 1488 Expect.throws(() {
1060 Expect.throws(() { view[view.length]; }, 1489 return view[-1];
1061 (e) { return e is RangeError; }); 1490 }, (e) {
1062 Expect.throws(() { view[10] = 0; }, 1491 return e is RangeError;
1063 (e) { return e is RangeError; }); 1492 });
1064 Expect.throws(() { view.add(0); }, 1493 Expect.throws(() {
1065 (e) { return e is UnsupportedError; }); 1494 view[view.length];
1066 Expect.throws(() { view.addAll([0]); }, 1495 }, (e) {
1067 (e) { return e is UnsupportedError; }); 1496 return e is RangeError;
1068 Expect.throws(() { view.clear(); }, 1497 });
1069 (e) { return e is UnsupportedError; }); 1498 Expect.throws(() {
1070 Expect.throws(() { view.length = 0; }, 1499 view[10] = 0;
1071 (e) { return e is UnsupportedError; }); 1500 }, (e) {
1072 Expect.throws(() { view.removeLast(); }, 1501 return e is RangeError;
1073 (e) { return e is UnsupportedError; }); 1502 });
1074 Expect.throws(() { view.removeRange(0, view.length - 1); }, 1503 Expect.throws(() {
1075 (e) { return e is UnsupportedError; }); 1504 view.add(0);
1505 }, (e) {
1506 return e is UnsupportedError;
1507 });
1508 Expect.throws(() {
1509 view.addAll([0]);
1510 }, (e) {
1511 return e is UnsupportedError;
1512 });
1513 Expect.throws(() {
1514 view.clear();
1515 }, (e) {
1516 return e is UnsupportedError;
1517 });
1518 Expect.throws(() {
1519 view.length = 0;
1520 }, (e) {
1521 return e is UnsupportedError;
1522 });
1523 Expect.throws(() {
1524 view.removeLast();
1525 }, (e) {
1526 return e is UnsupportedError;
1527 });
1528 Expect.throws(() {
1529 view.removeRange(0, view.length - 1);
1530 }, (e) {
1531 return e is UnsupportedError;
1532 });
1076 for (int i = 0; i < view.length; ++i) { 1533 for (int i = 0; i < view.length; ++i) {
1077 view[i] = 1 + i; 1534 view[i] = 1 + i;
1078 } 1535 }
1079 Expect.listEquals([1, 2, 3, 4, 5, 1536 Expect.listEquals([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], view);
1080 6, 7, 8, 9, 10], 1537 Expect.listEquals([
1081 view); 1538 0xFF,
1082 Expect.listEquals([0xFF, 0xFF, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 1539 0xFF,
1083 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 1540 0x01,
1084 0x08, 0x00, 0x09, 0x00, 0x0A, 0x00, 0xFF, 0xFF], 1541 0x00,
1085 array); 1542 0x02,
1543 0x00,
1544 0x03,
1545 0x00,
1546 0x04,
1547 0x00,
1548 0x05,
1549 0x00,
1550 0x06,
1551 0x00,
1552 0x07,
1553 0x00,
1554 0x08,
1555 0x00,
1556 0x09,
1557 0x00,
1558 0x0A,
1559 0x00,
1560 0xFF,
1561 0xFF
1562 ], array);
1086 for (int i = 0; i < view.length; ++i) { 1563 for (int i = 0; i < view.length; ++i) {
1087 view[i] = 0x10000 + i; 1564 view[i] = 0x10000 + i;
1088 } 1565 }
1089 Expect.listEquals([0, 1, 2, 3, 4, 1566 Expect.listEquals([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], view);
1090 5, 6, 7, 8, 9], 1567 Expect.listEquals([
1091 view); 1568 0xFF,
1092 Expect.listEquals([0xFF, 0xFF, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 1569 0xFF,
1093 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 1570 0x00,
1094 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0xFF, 0xFF], 1571 0x00,
1095 array); 1572 0x01,
1573 0x00,
1574 0x02,
1575 0x00,
1576 0x03,
1577 0x00,
1578 0x04,
1579 0x00,
1580 0x05,
1581 0x00,
1582 0x06,
1583 0x00,
1584 0x07,
1585 0x00,
1586 0x08,
1587 0x00,
1588 0x09,
1589 0x00,
1590 0xFF,
1591 0xFF
1592 ], array);
1096 for (int i = 0; i < view.length; ++i) { 1593 for (int i = 0; i < view.length; ++i) {
1097 view[i] = -10 + i; 1594 view[i] = -10 + i;
1098 } 1595 }
1099 Expect.listEquals([-10, -9, -8, -7, -6, 1596 Expect.listEquals([-10, -9, -8, -7, -6, -5, -4, -3, -2, -1], view);
1100 -5, -4, -3, -2, -1], 1597 Expect.listEquals([
1101 view); 1598 0xFF,
1102 Expect.listEquals([0xFF, 0xFF, 0xF6, 0xFF, 0xF7, 0xFF, 0xF8, 0xFF, 1599 0xFF,
1103 0xF9, 0xFF, 0xFA, 0xFF, 0xFB, 0xFF, 0xFC, 0xFF, 1600 0xF6,
1104 0xFD, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF], 1601 0xFF,
1105 array); 1602 0xF7,
1603 0xFF,
1604 0xF8,
1605 0xFF,
1606 0xF9,
1607 0xFF,
1608 0xFA,
1609 0xFF,
1610 0xFB,
1611 0xFF,
1612 0xFC,
1613 0xFF,
1614 0xFD,
1615 0xFF,
1616 0xFE,
1617 0xFF,
1618 0xFF,
1619 0xFF,
1620 0xFF,
1621 0xFF
1622 ], array);
1106 for (int i = 0; i < view.length; ++i) { 1623 for (int i = 0; i < view.length; ++i) {
1107 view[i] = 0x7FFF - i; 1624 view[i] = 0x7FFF - i;
1108 } 1625 }
1109 Expect.listEquals([0x7FFF, 0x7FFE, 0x7FFD, 0x7FFC, 0x7FFB, 1626 Expect.listEquals([
1110 0x7FFA, 0x7FF9, 0x7FF8, 0x7FF7, 0x7FF6], 1627 0x7FFF,
1111 view); 1628 0x7FFE,
1112 Expect.listEquals([0xFF, 0xFF, 0xFF, 0x7F, 0xFE, 0x7F, 0xFD, 0x7F, 1629 0x7FFD,
1113 0xFC, 0x7F, 0xFB, 0x7F, 0xFA, 0x7F, 0xF9, 0x7F, 1630 0x7FFC,
1114 0xF8, 0x7F, 0xF7, 0x7F, 0xF6, 0x7F, 0xFF, 0xFF], 1631 0x7FFB,
1115 array); 1632 0x7FFA,
1633 0x7FF9,
1634 0x7FF8,
1635 0x7FF7,
1636 0x7FF6
1637 ], view);
1638 Expect.listEquals([
1639 0xFF,
1640 0xFF,
1641 0xFF,
1642 0x7F,
1643 0xFE,
1644 0x7F,
1645 0xFD,
1646 0x7F,
1647 0xFC,
1648 0x7F,
1649 0xFB,
1650 0x7F,
1651 0xFA,
1652 0x7F,
1653 0xF9,
1654 0x7F,
1655 0xF8,
1656 0x7F,
1657 0xF7,
1658 0x7F,
1659 0xF6,
1660 0x7F,
1661 0xFF,
1662 0xFF
1663 ], array);
1116 for (int i = 0; i < view.length; ++i) { 1664 for (int i = 0; i < view.length; ++i) {
1117 view[i] = -0x8000 + i; 1665 view[i] = -0x8000 + i;
1118 } 1666 }
1119 Expect.listEquals([-0x8000, -0x7FFF, -0x7FFE, -0x7FFD, -0x7FFC, 1667 Expect.listEquals([
1120 -0x7FFB, -0x7FFA, -0x7FF9, -0x7FF8, -0x7FF7], 1668 -0x8000,
1121 view); 1669 -0x7FFF,
1122 Expect.listEquals([0xFF, 0xFF, 0x00, 0x80, 0x01, 0x80, 0x02, 0x80, 1670 -0x7FFE,
1123 0x03, 0x80, 0x04, 0x80, 0x05, 0x80, 0x06, 0x80, 1671 -0x7FFD,
1124 0x07, 0x80, 0x08, 0x80, 0x09, 0x80, 0xFF, 0xFF], 1672 -0x7FFC,
1125 array); 1673 -0x7FFB,
1674 -0x7FFA,
1675 -0x7FF9,
1676 -0x7FF8,
1677 -0x7FF7
1678 ], view);
1679 Expect.listEquals([
1680 0xFF,
1681 0xFF,
1682 0x00,
1683 0x80,
1684 0x01,
1685 0x80,
1686 0x02,
1687 0x80,
1688 0x03,
1689 0x80,
1690 0x04,
1691 0x80,
1692 0x05,
1693 0x80,
1694 0x06,
1695 0x80,
1696 0x07,
1697 0x80,
1698 0x08,
1699 0x80,
1700 0x09,
1701 0x80,
1702 0xFF,
1703 0xFF
1704 ], array);
1126 for (int i = 0; i < view.length; ++i) { 1705 for (int i = 0; i < view.length; ++i) {
1127 view[i] = i; 1706 view[i] = i;
1128 } 1707 }
1129 var copy = view.sublist(0, view.length); 1708 var copy = view.sublist(0, view.length);
1130 Expect.isFalse(identical(copy, view)); 1709 Expect.isFalse(identical(copy, view));
1131 Expect.isTrue(copy is Int16List); 1710 Expect.isTrue(copy is Int16List);
1132 Expect.equals(10, copy.length); 1711 Expect.equals(10, copy.length);
1133 Expect.listEquals(view, copy); 1712 Expect.listEquals(view, copy);
1134 var region = view.sublist(3, view.length - 3); 1713 var region = view.sublist(3, view.length - 3);
1135 Expect.isTrue(copy is Int16List); 1714 Expect.isTrue(copy is Int16List);
1136 Expect.equals(4, region.length); 1715 Expect.equals(4, region.length);
1137 Expect.listEquals([3, 4, 5, 6], region); 1716 Expect.listEquals([3, 4, 5, 6], region);
1138 view.setRange(3, 7, [-32768, 0, 1, 32767]); 1717 view.setRange(3, 7, [-32768, 0, 1, 32767]);
1139 Expect.listEquals([0, 1, 2, -32768, 0, 1, 32767, 7, 8, 9], 1718 Expect.listEquals([0, 1, 2, -32768, 0, 1, 32767, 7, 8, 9], view);
1140 view); 1719 Expect.listEquals([
1141 Expect.listEquals([0xFF, 0xFF, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 1720 0xFF,
1142 0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0xFF, 0x7F, 1721 0xFF,
1143 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0xFF, 0xFF], 1722 0x00,
1144 array); 1723 0x00,
1724 0x01,
1725 0x00,
1726 0x02,
1727 0x00,
1728 0x00,
1729 0x80,
1730 0x00,
1731 0x00,
1732 0x01,
1733 0x00,
1734 0xFF,
1735 0x7F,
1736 0x07,
1737 0x00,
1738 0x08,
1739 0x00,
1740 0x09,
1741 0x00,
1742 0xFF,
1743 0xFF
1744 ], array);
1145 } 1745 }
1146 1746
1147 static testInt16ListView() { 1747 static testInt16ListView() {
1148 var array = new Uint8List(24); 1748 var array = new Uint8List(24);
1149 testInt16ListViewImpl(array); 1749 testInt16ListViewImpl(array);
1150 } 1750 }
1151 1751
1152 static testUint16ListViewImpl(var array) { 1752 static testUint16ListViewImpl(var array) {
1153 Expect.isTrue(array is List<int>); 1753 Expect.isTrue(array is List<int>);
1154 Expect.equals(24, array.length); 1754 Expect.equals(24, array.length);
1155 Expect.equals(1, array.elementSizeInBytes); 1755 Expect.equals(1, array.elementSizeInBytes);
1156 Expect.equals(24, array.lengthInBytes); 1756 Expect.equals(24, array.lengthInBytes);
1157 for (int i = 0; i < array.length; ++i) { 1757 for (int i = 0; i < array.length; ++i) {
1158 array[i] = -1; 1758 array[i] = -1;
1159 } 1759 }
1160 Expect.throws(() { new Uint16List.view(array.buffer, -1); }, 1760 Expect.throws(() {
1161 (e) { return e is RangeError; }); 1761 new Uint16List.view(array.buffer, -1);
1162 Expect.throws(() { new Uint16List.view(array.buffer, 0, -1); }, 1762 }, (e) {
1163 (e) { return e is RangeError; }); 1763 return e is RangeError;
1164 Expect.throws(() { new Uint16List.view(array.buffer, 1764 });
1165 array.lengthInBytes + 1); }, 1765 Expect.throws(() {
1166 (e) { return e is RangeError; }); 1766 new Uint16List.view(array.buffer, 0, -1);
1167 Expect.throws(() { new Uint16List.view(array.buffer, 1767 }, (e) {
1168 0, array.length + 1); }, 1768 return e is RangeError;
1169 (e) { return e is RangeError; }); 1769 });
1170 Expect.throws(() { new Uint16List.view(array.buffer, 1770 Expect.throws(() {
1171 array.length - 1, 2); }, 1771 new Uint16List.view(array.buffer, array.lengthInBytes + 1);
1172 (e) { return e is RangeError; }); 1772 }, (e) {
1173 var empty = new Uint16List.view(array.buffer, 1773 return e is RangeError;
1174 array.lengthInBytes); 1774 });
1775 Expect.throws(() {
1776 new Uint16List.view(array.buffer, 0, array.length + 1);
1777 }, (e) {
1778 return e is RangeError;
1779 });
1780 Expect.throws(() {
1781 new Uint16List.view(array.buffer, array.length - 1, 2);
1782 }, (e) {
1783 return e is RangeError;
1784 });
1785 var empty = new Uint16List.view(array.buffer, array.lengthInBytes);
1175 Expect.isTrue(empty is List<int>); 1786 Expect.isTrue(empty is List<int>);
1176 Expect.isTrue(empty is Uint16List); 1787 Expect.isTrue(empty is Uint16List);
1177 Expect.equals(0, empty.length); 1788 Expect.equals(0, empty.length);
1178 var whole = new Uint16List.view(array.buffer); 1789 var whole = new Uint16List.view(array.buffer);
1179 Expect.isTrue(whole is List<int>); 1790 Expect.isTrue(whole is List<int>);
1180 Expect.isTrue(whole is Uint16List); 1791 Expect.isTrue(whole is Uint16List);
1181 Expect.equals(12, whole.length); 1792 Expect.equals(12, whole.length);
1182 var view = new Uint16List.view(array.buffer, 2, 10); 1793 var view = new Uint16List.view(array.buffer, 2, 10);
1183 Expect.isTrue(view is List<int>); 1794 Expect.isTrue(view is List<int>);
1184 Expect.isTrue(view is Uint16List); 1795 Expect.isTrue(view is Uint16List);
1185 Expect.equals(10, view.length); 1796 Expect.equals(10, view.length);
1186 Expect.equals(2, view.elementSizeInBytes); 1797 Expect.equals(2, view.elementSizeInBytes);
1187 Expect.equals(20, view.lengthInBytes); 1798 Expect.equals(20, view.lengthInBytes);
1188 Expect.listEquals([0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 1799 Expect.listEquals([
1189 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF], 1800 0xFFFF,
1190 view); 1801 0xFFFF,
1191 Expect.throws(() { view[-1] = 0; }, 1802 0xFFFF,
1192 (e) { return e is RangeError; }); 1803 0xFFFF,
1193 Expect.throws(() { return view[-1]; }, 1804 0xFFFF,
1194 (e) { return e is RangeError; }); 1805 0xFFFF,
1195 Expect.throws(() { view[view.length]; }, 1806 0xFFFF,
1196 (e) { return e is RangeError; }); 1807 0xFFFF,
1197 Expect.throws(() { view[view.length] = 0; }, 1808 0xFFFF,
1198 (e) { return e is RangeError; }); 1809 0xFFFF
1199 Expect.throws(() { view.add(0); }, 1810 ], view);
1200 (e) { return e is UnsupportedError; }); 1811 Expect.throws(() {
1201 Expect.throws(() { view.addAll([0]); }, 1812 view[-1] = 0;
1202 (e) { return e is UnsupportedError; }); 1813 }, (e) {
1203 Expect.throws(() { view.clear(); }, 1814 return e is RangeError;
1204 (e) { return e is UnsupportedError; }); 1815 });
1205 Expect.throws(() { view.length = 0; }, 1816 Expect.throws(() {
1206 (e) { return e is UnsupportedError; }); 1817 return view[-1];
1207 Expect.throws(() { view.removeLast(); }, 1818 }, (e) {
1208 (e) { return e is UnsupportedError; }); 1819 return e is RangeError;
1209 Expect.throws(() { view.removeRange(0, view.length - 1); }, 1820 });
1210 (e) { return e is UnsupportedError; }); 1821 Expect.throws(() {
1822 view[view.length];
1823 }, (e) {
1824 return e is RangeError;
1825 });
1826 Expect.throws(() {
1827 view[view.length] = 0;
1828 }, (e) {
1829 return e is RangeError;
1830 });
1831 Expect.throws(() {
1832 view.add(0);
1833 }, (e) {
1834 return e is UnsupportedError;
1835 });
1836 Expect.throws(() {
1837 view.addAll([0]);
1838 }, (e) {
1839 return e is UnsupportedError;
1840 });
1841 Expect.throws(() {
1842 view.clear();
1843 }, (e) {
1844 return e is UnsupportedError;
1845 });
1846 Expect.throws(() {
1847 view.length = 0;
1848 }, (e) {
1849 return e is UnsupportedError;
1850 });
1851 Expect.throws(() {
1852 view.removeLast();
1853 }, (e) {
1854 return e is UnsupportedError;
1855 });
1856 Expect.throws(() {
1857 view.removeRange(0, view.length - 1);
1858 }, (e) {
1859 return e is UnsupportedError;
1860 });
1211 for (int i = 0; i < view.length; ++i) { 1861 for (int i = 0; i < view.length; ++i) {
1212 view[i] = 1 + i; 1862 view[i] = 1 + i;
1213 } 1863 }
1214 Expect.listEquals([1, 2, 3, 4, 5, 1864 Expect.listEquals([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], view);
1215 6, 7, 8, 9, 10], 1865 Expect.listEquals([
1216 view); 1866 -1,
1217 Expect.listEquals([-1, -1, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 1867 -1,
1218 6, 0, 7, 0, 8, 0, 9, 0, 10, 0, -1, -1], 1868 1,
1219 array); 1869 0,
1870 2,
1871 0,
1872 3,
1873 0,
1874 4,
1875 0,
1876 5,
1877 0,
1878 6,
1879 0,
1880 7,
1881 0,
1882 8,
1883 0,
1884 9,
1885 0,
1886 10,
1887 0,
1888 -1,
1889 -1
1890 ], array);
1220 for (int i = 0; i < view.length; ++i) { 1891 for (int i = 0; i < view.length; ++i) {
1221 view[i] = 0x10000 + i; 1892 view[i] = 0x10000 + i;
1222 } 1893 }
1223 Expect.listEquals([0, 1, 2, 3, 4, 1894 Expect.listEquals([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], view);
1224 5, 6, 7, 8, 9], 1895 Expect.listEquals([
1225 view); 1896 -1,
1226 Expect.listEquals([-1, -1, 0, 0, 1, 0, 2, 0, 3, 0, 4, 0, 1897 -1,
1227 5, 0, 6, 0, 7, 0, 8, 0, 9, 0, -1, -1], 1898 0,
1228 array); 1899 0,
1900 1,
1901 0,
1902 2,
1903 0,
1904 3,
1905 0,
1906 4,
1907 0,
1908 5,
1909 0,
1910 6,
1911 0,
1912 7,
1913 0,
1914 8,
1915 0,
1916 9,
1917 0,
1918 -1,
1919 -1
1920 ], array);
1229 for (int i = 0; i < view.length; ++i) { 1921 for (int i = 0; i < view.length; ++i) {
1230 view[i] = 0xFFFF - i; 1922 view[i] = 0xFFFF - i;
1231 } 1923 }
1232 Expect.listEquals([0xFFFF, 0xFFFE, 0xFFFD, 0xFFFC, 0xFFFB, 1924 Expect.listEquals([
1233 0xFFFA, 0xFFF9, 0xFFF8, 0xFFF7, 0xFFF6], 1925 0xFFFF,
1234 view); 1926 0xFFFE,
1235 Expect.listEquals([-1, -1, -1, -1, -2, -1, -3, -1, 1927 0xFFFD,
1236 -4, -1, -5, -1, -6, -1, -7, -1, 1928 0xFFFC,
1237 -8, -1, -9, -1, -10, -1, -1, -1], 1929 0xFFFB,
1238 array); 1930 0xFFFA,
1931 0xFFF9,
1932 0xFFF8,
1933 0xFFF7,
1934 0xFFF6
1935 ], view);
1936 Expect.listEquals([
1937 -1,
1938 -1,
1939 -1,
1940 -1,
1941 -2,
1942 -1,
1943 -3,
1944 -1,
1945 -4,
1946 -1,
1947 -5,
1948 -1,
1949 -6,
1950 -1,
1951 -7,
1952 -1,
1953 -8,
1954 -1,
1955 -9,
1956 -1,
1957 -10,
1958 -1,
1959 -1,
1960 -1
1961 ], array);
1239 for (int i = 0; i < view.length; ++i) { 1962 for (int i = 0; i < view.length; ++i) {
1240 view[i] = i; 1963 view[i] = i;
1241 } 1964 }
1242 var copy = view.sublist(0, view.length); 1965 var copy = view.sublist(0, view.length);
1243 Expect.isFalse(identical(copy, view)); 1966 Expect.isFalse(identical(copy, view));
1244 Expect.isTrue(copy is Uint16List); 1967 Expect.isTrue(copy is Uint16List);
1245 Expect.equals(10, copy.length); 1968 Expect.equals(10, copy.length);
1246 Expect.listEquals(view, copy); 1969 Expect.listEquals(view, copy);
1247 var region = view.sublist(3, view.length - 3); 1970 var region = view.sublist(3, view.length - 3);
1248 Expect.isTrue(copy is Uint16List); 1971 Expect.isTrue(copy is Uint16List);
1249 Expect.equals(4, region.length); 1972 Expect.equals(4, region.length);
1250 Expect.listEquals([3, 4, 5, 6], region); 1973 Expect.listEquals([3, 4, 5, 6], region);
1251 view.setRange(3, 7, [0x10001, 0, 1, 0xFFFF]); 1974 view.setRange(3, 7, [0x10001, 0, 1, 0xFFFF]);
1252 Expect.listEquals([0, 1, 2, 1, 0, 1, 0xFFFF, 7, 8, 9], 1975 Expect.listEquals([0, 1, 2, 1, 0, 1, 0xFFFF, 7, 8, 9], view);
1253 view); 1976 Expect.listEquals([
1254 Expect.listEquals([-1, -1, 0, 0, 1, 0, 2, 0, 1977 -1,
1255 1, 0, 0, 0, 1, 0, -1, -1, 1978 -1,
1256 7, 0, 8, 0, 9, 0, -1, -1], 1979 0,
1257 array); 1980 0,
1981 1,
1982 0,
1983 2,
1984 0,
1985 1,
1986 0,
1987 0,
1988 0,
1989 1,
1990 0,
1991 -1,
1992 -1,
1993 7,
1994 0,
1995 8,
1996 0,
1997 9,
1998 0,
1999 -1,
2000 -1
2001 ], array);
1258 } 2002 }
1259 2003
1260 static testUint16ListView() { 2004 static testUint16ListView() {
1261 var array = new Int8List(24); 2005 var array = new Int8List(24);
1262 testUint16ListViewImpl(array); 2006 testUint16ListViewImpl(array);
1263 } 2007 }
1264 2008
1265 static testInt32ListView() { 2009 static testInt32ListView() {
1266 var array = new Uint8List(48); 2010 var array = new Uint8List(48);
1267 Expect.equals(48, array.length); 2011 Expect.equals(48, array.length);
1268 Expect.equals(1, array.elementSizeInBytes); 2012 Expect.equals(1, array.elementSizeInBytes);
1269 Expect.equals(48, array.lengthInBytes); 2013 Expect.equals(48, array.lengthInBytes);
1270 for (int i = 0; i < array.length; ++i) { 2014 for (int i = 0; i < array.length; ++i) {
1271 array[i] = 0xFF; 2015 array[i] = 0xFF;
1272 } 2016 }
1273 Expect.throws(() { new Int32List.view(array.buffer, -1); }, 2017 Expect.throws(() {
1274 (e) { return e is RangeError; }); 2018 new Int32List.view(array.buffer, -1);
1275 Expect.throws(() { new Int32List.view(array.buffer, 0, -1); }, 2019 }, (e) {
1276 (e) { return e is RangeError; }); 2020 return e is RangeError;
1277 Expect.throws(() { new Int32List.view(array.buffer, 2021 });
1278 array.lengthInBytes + 1); }, 2022 Expect.throws(() {
1279 (e) { return e is RangeError; }); 2023 new Int32List.view(array.buffer, 0, -1);
1280 Expect.throws(() { new Int32List.view(array.buffer, 2024 }, (e) {
1281 0, array.length + 1); }, 2025 return e is RangeError;
1282 (e) { return e is RangeError; }); 2026 });
1283 Expect.throws(() { new Int32List.view(array.buffer, 2027 Expect.throws(() {
1284 array.length - 1, 2); }, 2028 new Int32List.view(array.buffer, array.lengthInBytes + 1);
1285 (e) { return e is RangeError; }); 2029 }, (e) {
1286 var empty = new Int32List.view(array.buffer, 2030 return e is RangeError;
1287 array.lengthInBytes); 2031 });
2032 Expect.throws(() {
2033 new Int32List.view(array.buffer, 0, array.length + 1);
2034 }, (e) {
2035 return e is RangeError;
2036 });
2037 Expect.throws(() {
2038 new Int32List.view(array.buffer, array.length - 1, 2);
2039 }, (e) {
2040 return e is RangeError;
2041 });
2042 var empty = new Int32List.view(array.buffer, array.lengthInBytes);
1288 Expect.isTrue(empty is List<int>); 2043 Expect.isTrue(empty is List<int>);
1289 Expect.isTrue(empty is Int32List); 2044 Expect.isTrue(empty is Int32List);
1290 Expect.equals(0, empty.length); 2045 Expect.equals(0, empty.length);
1291 var whole = new Int32List.view(array.buffer); 2046 var whole = new Int32List.view(array.buffer);
1292 Expect.isTrue(whole is List<int>); 2047 Expect.isTrue(whole is List<int>);
1293 Expect.isTrue(whole is Int32List); 2048 Expect.isTrue(whole is Int32List);
1294 Expect.equals(12, whole.length); 2049 Expect.equals(12, whole.length);
1295 var view = new Int32List.view(array.buffer, 4, 10); 2050 var view = new Int32List.view(array.buffer, 4, 10);
1296 Expect.isTrue(view is List<int>); 2051 Expect.isTrue(view is List<int>);
1297 Expect.isTrue(view is Int32List); 2052 Expect.isTrue(view is Int32List);
1298 Expect.equals(10, view.length); 2053 Expect.equals(10, view.length);
1299 Expect.equals(4, view.elementSizeInBytes); 2054 Expect.equals(4, view.elementSizeInBytes);
1300 Expect.equals(40, view.lengthInBytes); 2055 Expect.equals(40, view.lengthInBytes);
1301 Expect.listEquals([-1, -1, -1, -1, -1, 2056 Expect.listEquals([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1], view);
1302 -1, -1, -1, -1, -1], 2057 Expect.throws(() {
1303 view); 2058 view[-1] = 0;
1304 Expect.throws(() { view[-1] = 0; }, 2059 }, (e) {
1305 (e) { return e is RangeError; }); 2060 return e is RangeError;
1306 Expect.throws(() { return view[-1]; }, 2061 });
1307 (e) { return e is RangeError; }); 2062 Expect.throws(() {
1308 Expect.throws(() { view[view.length]; }, 2063 return view[-1];
1309 (e) { return e is RangeError; }); 2064 }, (e) {
1310 Expect.throws(() { view[10] = 0; }, 2065 return e is RangeError;
1311 (e) { return e is RangeError; }); 2066 });
1312 Expect.throws(() { view.add(0); }, 2067 Expect.throws(() {
1313 (e) { return e is UnsupportedError; }); 2068 view[view.length];
1314 Expect.throws(() { view.addAll([0]); }, 2069 }, (e) {
1315 (e) { return e is UnsupportedError; }); 2070 return e is RangeError;
1316 Expect.throws(() { view.clear(); }, 2071 });
1317 (e) { return e is UnsupportedError; }); 2072 Expect.throws(() {
1318 Expect.throws(() { view.length = 0; }, 2073 view[10] = 0;
1319 (e) { return e is UnsupportedError; }); 2074 }, (e) {
1320 Expect.throws(() { view.removeLast(); }, 2075 return e is RangeError;
1321 (e) { return e is UnsupportedError; }); 2076 });
1322 Expect.throws(() { view.removeRange(0, view.length - 1); }, 2077 Expect.throws(() {
1323 (e) { return e is UnsupportedError; }); 2078 view.add(0);
2079 }, (e) {
2080 return e is UnsupportedError;
2081 });
2082 Expect.throws(() {
2083 view.addAll([0]);
2084 }, (e) {
2085 return e is UnsupportedError;
2086 });
2087 Expect.throws(() {
2088 view.clear();
2089 }, (e) {
2090 return e is UnsupportedError;
2091 });
2092 Expect.throws(() {
2093 view.length = 0;
2094 }, (e) {
2095 return e is UnsupportedError;
2096 });
2097 Expect.throws(() {
2098 view.removeLast();
2099 }, (e) {
2100 return e is UnsupportedError;
2101 });
2102 Expect.throws(() {
2103 view.removeRange(0, view.length - 1);
2104 }, (e) {
2105 return e is UnsupportedError;
2106 });
1324 for (int i = 0; i < view.length; ++i) { 2107 for (int i = 0; i < view.length; ++i) {
1325 view[i] = 1 + i; 2108 view[i] = 1 + i;
1326 } 2109 }
1327 Expect.listEquals([1, 2, 3, 4, 5, 2110 Expect.listEquals([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], view);
1328 6, 7, 8, 9, 10], 2111 Expect.listEquals([
1329 view); 2112 0xFF,
1330 Expect.listEquals([0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 2113 0xFF,
1331 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 2114 0xFF,
1332 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 2115 0xFF,
1333 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 2116 0x01,
1334 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 2117 0x00,
1335 0x0A, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF], 2118 0x00,
1336 array); 2119 0x00,
2120 0x02,
2121 0x00,
2122 0x00,
2123 0x00,
2124 0x03,
2125 0x00,
2126 0x00,
2127 0x00,
2128 0x04,
2129 0x00,
2130 0x00,
2131 0x00,
2132 0x05,
2133 0x00,
2134 0x00,
2135 0x00,
2136 0x06,
2137 0x00,
2138 0x00,
2139 0x00,
2140 0x07,
2141 0x00,
2142 0x00,
2143 0x00,
2144 0x08,
2145 0x00,
2146 0x00,
2147 0x00,
2148 0x09,
2149 0x00,
2150 0x00,
2151 0x00,
2152 0x0A,
2153 0x00,
2154 0x00,
2155 0x00,
2156 0xFF,
2157 0xFF,
2158 0xFF,
2159 0xFF
2160 ], array);
1337 for (int i = 0; i < view.length; ++i) { 2161 for (int i = 0; i < view.length; ++i) {
1338 view[i] = 0x100000000 + i; 2162 view[i] = 0x100000000 + i;
1339 } 2163 }
1340 Expect.listEquals([0, 1, 2, 3, 4, 2164 Expect.listEquals([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], view);
1341 5, 6, 7, 8, 9], 2165 Expect.listEquals([
1342 view); 2166 0xFF,
1343 Expect.listEquals([0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 2167 0xFF,
1344 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 2168 0xFF,
1345 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 2169 0xFF,
1346 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 2170 0x00,
1347 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 2171 0x00,
1348 0x09, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF], 2172 0x00,
1349 array); 2173 0x00,
2174 0x01,
2175 0x00,
2176 0x00,
2177 0x00,
2178 0x02,
2179 0x00,
2180 0x00,
2181 0x00,
2182 0x03,
2183 0x00,
2184 0x00,
2185 0x00,
2186 0x04,
2187 0x00,
2188 0x00,
2189 0x00,
2190 0x05,
2191 0x00,
2192 0x00,
2193 0x00,
2194 0x06,
2195 0x00,
2196 0x00,
2197 0x00,
2198 0x07,
2199 0x00,
2200 0x00,
2201 0x00,
2202 0x08,
2203 0x00,
2204 0x00,
2205 0x00,
2206 0x09,
2207 0x00,
2208 0x00,
2209 0x00,
2210 0xFF,
2211 0xFF,
2212 0xFF,
2213 0xFF
2214 ], array);
1350 for (int i = 0; i < view.length; ++i) { 2215 for (int i = 0; i < view.length; ++i) {
1351 view[i] = -10 + i; 2216 view[i] = -10 + i;
1352 } 2217 }
1353 Expect.listEquals([-10, -9, -8, -7, -6, 2218 Expect.listEquals([-10, -9, -8, -7, -6, -5, -4, -3, -2, -1], view);
1354 -5, -4, -3, -2, -1], 2219 Expect.listEquals([
1355 view); 2220 0xFF,
1356 Expect.listEquals([0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0xFF, 0xFF, 0xFF, 2221 0xFF,
1357 0xF7, 0xFF, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 2222 0xFF,
1358 0xF9, 0xFF, 0xFF, 0xFF, 0xFA, 0xFF, 0xFF, 0xFF, 2223 0xFF,
1359 0xFB, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 2224 0xF6,
1360 0xFD, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 2225 0xFF,
1361 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF], 2226 0xFF,
1362 array); 2227 0xFF,
2228 0xF7,
2229 0xFF,
2230 0xFF,
2231 0xFF,
2232 0xF8,
2233 0xFF,
2234 0xFF,
2235 0xFF,
2236 0xF9,
2237 0xFF,
2238 0xFF,
2239 0xFF,
2240 0xFA,
2241 0xFF,
2242 0xFF,
2243 0xFF,
2244 0xFB,
2245 0xFF,
2246 0xFF,
2247 0xFF,
2248 0xFC,
2249 0xFF,
2250 0xFF,
2251 0xFF,
2252 0xFD,
2253 0xFF,
2254 0xFF,
2255 0xFF,
2256 0xFE,
2257 0xFF,
2258 0xFF,
2259 0xFF,
2260 0xFF,
2261 0xFF,
2262 0xFF,
2263 0xFF,
2264 0xFF,
2265 0xFF,
2266 0xFF,
2267 0xFF
2268 ], array);
1363 for (int i = 0; i < view.length; ++i) { 2269 for (int i = 0; i < view.length; ++i) {
1364 view[i] = 0x7FFFFFFF - i; 2270 view[i] = 0x7FFFFFFF - i;
1365 } 2271 }
1366 Expect.listEquals([0x7FFFFFFF, 0x7FFFFFFE, 2272 Expect.listEquals([
1367 0x7FFFFFFD, 0x7FFFFFFC, 2273 0x7FFFFFFF,
1368 0x7FFFFFFB, 0x7FFFFFFA, 2274 0x7FFFFFFE,
1369 0x7FFFFFF9, 0x7FFFFFF8, 2275 0x7FFFFFFD,
1370 0x7FFFFFF7, 0x7FFFFFF6], 2276 0x7FFFFFFC,
1371 view); 2277 0x7FFFFFFB,
1372 Expect.listEquals([0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 2278 0x7FFFFFFA,
1373 0xFE, 0xFF, 0xFF, 0x7F, 0xFD, 0xFF, 0xFF, 0x7F, 2279 0x7FFFFFF9,
1374 0xFC, 0xFF, 0xFF, 0x7F, 0xFB, 0xFF, 0xFF, 0x7F, 2280 0x7FFFFFF8,
1375 0xFA, 0xFF, 0xFF, 0x7F, 0xF9, 0xFF, 0xFF, 0x7F, 2281 0x7FFFFFF7,
1376 0xF8, 0xFF, 0xFF, 0x7F, 0xF7, 0xFF, 0xFF, 0x7F, 2282 0x7FFFFFF6
1377 0xF6, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF], 2283 ], view);
1378 array); 2284 Expect.listEquals([
2285 0xFF,
2286 0xFF,
2287 0xFF,
2288 0xFF,
2289 0xFF,
2290 0xFF,
2291 0xFF,
2292 0x7F,
2293 0xFE,
2294 0xFF,
2295 0xFF,
2296 0x7F,
2297 0xFD,
2298 0xFF,
2299 0xFF,
2300 0x7F,
2301 0xFC,
2302 0xFF,
2303 0xFF,
2304 0x7F,
2305 0xFB,
2306 0xFF,
2307 0xFF,
2308 0x7F,
2309 0xFA,
2310 0xFF,
2311 0xFF,
2312 0x7F,
2313 0xF9,
2314 0xFF,
2315 0xFF,
2316 0x7F,
2317 0xF8,
2318 0xFF,
2319 0xFF,
2320 0x7F,
2321 0xF7,
2322 0xFF,
2323 0xFF,
2324 0x7F,
2325 0xF6,
2326 0xFF,
2327 0xFF,
2328 0x7F,
2329 0xFF,
2330 0xFF,
2331 0xFF,
2332 0xFF
2333 ], array);
1379 for (int i = 0; i < view.length; ++i) { 2334 for (int i = 0; i < view.length; ++i) {
1380 view[i] = -0x80000000 + i; 2335 view[i] = -0x80000000 + i;
1381 } 2336 }
1382 Expect.listEquals([-0x80000000, -0x7FFFFFFF, 2337 Expect.listEquals([
1383 -0x7FFFFFFE, -0x7FFFFFFD, 2338 -0x80000000,
1384 -0x7FFFFFFC, -0x7FFFFFFB, 2339 -0x7FFFFFFF,
1385 -0x7FFFFFFA, -0x7FFFFFF9, 2340 -0x7FFFFFFE,
1386 -0x7FFFFFF8, -0x7FFFFFF7], 2341 -0x7FFFFFFD,
1387 view); 2342 -0x7FFFFFFC,
1388 Expect.listEquals([0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x80, 2343 -0x7FFFFFFB,
1389 0x01, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x80, 2344 -0x7FFFFFFA,
1390 0x03, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x80, 2345 -0x7FFFFFF9,
1391 0x05, 0x00, 0x00, 0x80, 0x06, 0x00, 0x00, 0x80, 2346 -0x7FFFFFF8,
1392 0x07, 0x00, 0x00, 0x80, 0x08, 0x00, 0x00, 0x80, 2347 -0x7FFFFFF7
1393 0x09, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF], 2348 ], view);
1394 array); 2349 Expect.listEquals([
2350 0xFF,
2351 0xFF,
2352 0xFF,
2353 0xFF,
2354 0x00,
2355 0x00,
2356 0x00,
2357 0x80,
2358 0x01,
2359 0x00,
2360 0x00,
2361 0x80,
2362 0x02,
2363 0x00,
2364 0x00,
2365 0x80,
2366 0x03,
2367 0x00,
2368 0x00,
2369 0x80,
2370 0x04,
2371 0x00,
2372 0x00,
2373 0x80,
2374 0x05,
2375 0x00,
2376 0x00,
2377 0x80,
2378 0x06,
2379 0x00,
2380 0x00,
2381 0x80,
2382 0x07,
2383 0x00,
2384 0x00,
2385 0x80,
2386 0x08,
2387 0x00,
2388 0x00,
2389 0x80,
2390 0x09,
2391 0x00,
2392 0x00,
2393 0x80,
2394 0xFF,
2395 0xFF,
2396 0xFF,
2397 0xFF
2398 ], array);
1395 for (int i = 0; i < view.length; ++i) { 2399 for (int i = 0; i < view.length; ++i) {
1396 view[i] = i; 2400 view[i] = i;
1397 } 2401 }
1398 var copy = view.sublist(0, view.length); 2402 var copy = view.sublist(0, view.length);
1399 Expect.isFalse(identical(copy, view)); 2403 Expect.isFalse(identical(copy, view));
1400 Expect.isTrue(copy is Int32List); 2404 Expect.isTrue(copy is Int32List);
1401 Expect.equals(10, copy.length); 2405 Expect.equals(10, copy.length);
1402 Expect.listEquals(view, copy); 2406 Expect.listEquals(view, copy);
1403 var region = view.sublist(3, view.length - 3); 2407 var region = view.sublist(3, view.length - 3);
1404 Expect.isTrue(copy is Int32List); 2408 Expect.isTrue(copy is Int32List);
1405 Expect.equals(4, region.length); 2409 Expect.equals(4, region.length);
1406 Expect.listEquals([3, 4, 5, 6], region); 2410 Expect.listEquals([3, 4, 5, 6], region);
1407 view.setRange(3, 7, [-0x80000000, 0, 1, 0x7FFFFFFF]); 2411 view.setRange(3, 7, [-0x80000000, 0, 1, 0x7FFFFFFF]);
1408 Expect.listEquals([0, 1, 2, -0x80000000, 0, 1, 0x7FFFFFFF, 7, 8, 9], 2412 Expect.listEquals([0, 1, 2, -0x80000000, 0, 1, 0x7FFFFFFF, 7, 8, 9], view);
1409 view); 2413 Expect.listEquals([
1410 Expect.listEquals([0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 2414 0xFF,
1411 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 2415 0xFF,
1412 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 2416 0xFF,
1413 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x7F, 2417 0xFF,
1414 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 2418 0x00,
1415 0x09, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF], 2419 0x00,
1416 array); 2420 0x00,
2421 0x00,
2422 0x01,
2423 0x00,
2424 0x00,
2425 0x00,
2426 0x02,
2427 0x00,
2428 0x00,
2429 0x00,
2430 0x00,
2431 0x00,
2432 0x00,
2433 0x80,
2434 0x00,
2435 0x00,
2436 0x00,
2437 0x00,
2438 0x01,
2439 0x00,
2440 0x00,
2441 0x00,
2442 0xFF,
2443 0xFF,
2444 0xFF,
2445 0x7F,
2446 0x07,
2447 0x00,
2448 0x00,
2449 0x00,
2450 0x08,
2451 0x00,
2452 0x00,
2453 0x00,
2454 0x09,
2455 0x00,
2456 0x00,
2457 0x00,
2458 0xFF,
2459 0xFF,
2460 0xFF,
2461 0xFF
2462 ], array);
1417 } 2463 }
1418 2464
1419 static testUint32ListViewImpl(var array) { 2465 static testUint32ListViewImpl(var array) {
1420 Expect.isTrue(array is List<int>); 2466 Expect.isTrue(array is List<int>);
1421 Expect.equals(48, array.length); 2467 Expect.equals(48, array.length);
1422 Expect.equals(1, array.elementSizeInBytes); 2468 Expect.equals(1, array.elementSizeInBytes);
1423 Expect.equals(48, array.lengthInBytes); 2469 Expect.equals(48, array.lengthInBytes);
1424 for (int i = 0; i < array.length; ++i) { 2470 for (int i = 0; i < array.length; ++i) {
1425 array[i] = -1; 2471 array[i] = -1;
1426 } 2472 }
1427 Expect.throws(() { new Uint32List.view(array.buffer, -1); }, 2473 Expect.throws(() {
1428 (e) { return e is RangeError; }); 2474 new Uint32List.view(array.buffer, -1);
1429 Expect.throws(() { new Uint32List.view(array.buffer, 0, -1); }, 2475 }, (e) {
1430 (e) { return e is RangeError; }); 2476 return e is RangeError;
1431 Expect.throws(() { new Uint32List.view(array.buffer, 2477 });
1432 array.lengthInBytes + 1); }, 2478 Expect.throws(() {
1433 (e) { return e is RangeError; }); 2479 new Uint32List.view(array.buffer, 0, -1);
1434 Expect.throws(() { new Uint32List.view(array.buffer, 2480 }, (e) {
1435 0, array.length + 1); }, 2481 return e is RangeError;
1436 (e) { return e is RangeError; }); 2482 });
1437 Expect.throws(() { new Uint32List.view(array.buffer, 2483 Expect.throws(() {
1438 array.length - 1, 2); }, 2484 new Uint32List.view(array.buffer, array.lengthInBytes + 1);
1439 (e) { return e is RangeError; }); 2485 }, (e) {
1440 var empty = new Uint32List.view(array.buffer, 2486 return e is RangeError;
1441 array.lengthInBytes); 2487 });
2488 Expect.throws(() {
2489 new Uint32List.view(array.buffer, 0, array.length + 1);
2490 }, (e) {
2491 return e is RangeError;
2492 });
2493 Expect.throws(() {
2494 new Uint32List.view(array.buffer, array.length - 1, 2);
2495 }, (e) {
2496 return e is RangeError;
2497 });
2498 var empty = new Uint32List.view(array.buffer, array.lengthInBytes);
1442 Expect.isTrue(empty is List<int>); 2499 Expect.isTrue(empty is List<int>);
1443 Expect.isTrue(empty is Uint32List); 2500 Expect.isTrue(empty is Uint32List);
1444 Expect.equals(0, empty.length); 2501 Expect.equals(0, empty.length);
1445 var whole = new Uint32List.view(array.buffer); 2502 var whole = new Uint32List.view(array.buffer);
1446 Expect.isTrue(whole is List<int>); 2503 Expect.isTrue(whole is List<int>);
1447 Expect.isTrue(whole is Uint32List); 2504 Expect.isTrue(whole is Uint32List);
1448 Expect.equals(12, whole.length); 2505 Expect.equals(12, whole.length);
1449 var view = new Uint32List.view(array.buffer, 4, 10); 2506 var view = new Uint32List.view(array.buffer, 4, 10);
1450 Expect.isTrue(view is List<int>); 2507 Expect.isTrue(view is List<int>);
1451 Expect.isTrue(view is Uint32List); 2508 Expect.isTrue(view is Uint32List);
1452 Expect.equals(10, view.length); 2509 Expect.equals(10, view.length);
1453 Expect.equals(4, view.elementSizeInBytes); 2510 Expect.equals(4, view.elementSizeInBytes);
1454 Expect.equals(40, view.lengthInBytes); 2511 Expect.equals(40, view.lengthInBytes);
1455 Expect.listEquals([0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFF F, 2512 Expect.listEquals([
1456 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFF F], 2513 0xFFFFFFFF,
1457 view); 2514 0xFFFFFFFF,
1458 Expect.throws(() { view[-1] = 0; }, 2515 0xFFFFFFFF,
1459 (e) { return e is RangeError; }); 2516 0xFFFFFFFF,
1460 Expect.throws(() { return view[-1]; }, 2517 0xFFFFFFFF,
1461 (e) { return e is RangeError; }); 2518 0xFFFFFFFF,
1462 Expect.throws(() { view[view.length]; }, 2519 0xFFFFFFFF,
1463 (e) { return e is RangeError; }); 2520 0xFFFFFFFF,
1464 Expect.throws(() { view[view.length] = 0; }, 2521 0xFFFFFFFF,
1465 (e) { return e is RangeError; }); 2522 0xFFFFFFFF
1466 Expect.throws(() { view.add(0); }, 2523 ], view);
1467 (e) { return e is UnsupportedError; }); 2524 Expect.throws(() {
1468 Expect.throws(() { view.addAll([0]); }, 2525 view[-1] = 0;
1469 (e) { return e is UnsupportedError; }); 2526 }, (e) {
1470 Expect.throws(() { view.clear(); }, 2527 return e is RangeError;
1471 (e) { return e is UnsupportedError; }); 2528 });
1472 Expect.throws(() { view.length = 0; }, 2529 Expect.throws(() {
1473 (e) { return e is UnsupportedError; }); 2530 return view[-1];
1474 Expect.throws(() { view.removeLast(); }, 2531 }, (e) {
1475 (e) { return e is UnsupportedError; }); 2532 return e is RangeError;
1476 Expect.throws(() { view.removeRange(0, view.length - 1); }, 2533 });
1477 (e) { return e is UnsupportedError; }); 2534 Expect.throws(() {
2535 view[view.length];
2536 }, (e) {
2537 return e is RangeError;
2538 });
2539 Expect.throws(() {
2540 view[view.length] = 0;
2541 }, (e) {
2542 return e is RangeError;
2543 });
2544 Expect.throws(() {
2545 view.add(0);
2546 }, (e) {
2547 return e is UnsupportedError;
2548 });
2549 Expect.throws(() {
2550 view.addAll([0]);
2551 }, (e) {
2552 return e is UnsupportedError;
2553 });
2554 Expect.throws(() {
2555 view.clear();
2556 }, (e) {
2557 return e is UnsupportedError;
2558 });
2559 Expect.throws(() {
2560 view.length = 0;
2561 }, (e) {
2562 return e is UnsupportedError;
2563 });
2564 Expect.throws(() {
2565 view.removeLast();
2566 }, (e) {
2567 return e is UnsupportedError;
2568 });
2569 Expect.throws(() {
2570 view.removeRange(0, view.length - 1);
2571 }, (e) {
2572 return e is UnsupportedError;
2573 });
1478 for (int i = 0; i < view.length; ++i) { 2574 for (int i = 0; i < view.length; ++i) {
1479 view[i] = 1 + i; 2575 view[i] = 1 + i;
1480 } 2576 }
1481 Expect.listEquals([1, 2, 3, 4, 5, 2577 Expect.listEquals([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], view);
1482 6, 7, 8, 9, 10], 2578 Expect.listEquals([
1483 view); 2579 -1,
1484 Expect.listEquals([-1, -1, -1, -1, 1, 0, 0, 0, 2580 -1,
1485 2, 0, 0, 0, 3, 0, 0, 0, 2581 -1,
1486 4, 0, 0, 0, 5, 0, 0, 0, 2582 -1,
1487 6, 0, 0, 0, 7, 0, 0, 0, 2583 1,
1488 8, 0, 0, 0, 9, 0, 0, 0, 2584 0,
1489 10, 0, 0, 0, -1, -1, -1, -1], 2585 0,
1490 array); 2586 0,
2587 2,
2588 0,
2589 0,
2590 0,
2591 3,
2592 0,
2593 0,
2594 0,
2595 4,
2596 0,
2597 0,
2598 0,
2599 5,
2600 0,
2601 0,
2602 0,
2603 6,
2604 0,
2605 0,
2606 0,
2607 7,
2608 0,
2609 0,
2610 0,
2611 8,
2612 0,
2613 0,
2614 0,
2615 9,
2616 0,
2617 0,
2618 0,
2619 10,
2620 0,
2621 0,
2622 0,
2623 -1,
2624 -1,
2625 -1,
2626 -1
2627 ], array);
1491 for (int i = 0; i < view.length; ++i) { 2628 for (int i = 0; i < view.length; ++i) {
1492 view[i] = 0x100000000 + i; 2629 view[i] = 0x100000000 + i;
1493 } 2630 }
1494 Expect.listEquals([0, 1, 2, 3, 4, 2631 Expect.listEquals([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], view);
1495 5, 6, 7, 8, 9], 2632 Expect.listEquals([
1496 view); 2633 -1,
1497 Expect.listEquals([-1, -1, -1, -1, 0, 0, 0, 0, 2634 -1,
1498 1, 0, 0, 0, 2, 0, 0, 0, 2635 -1,
1499 3, 0, 0, 0, 4, 0, 0, 0, 2636 -1,
1500 5, 0, 0, 0, 6, 0, 0, 0, 2637 0,
1501 7, 0, 0, 0, 8, 0, 0, 0, 2638 0,
1502 9, 0, 0, 0, -1, -1, -1, -1], 2639 0,
1503 array); 2640 0,
2641 1,
2642 0,
2643 0,
2644 0,
2645 2,
2646 0,
2647 0,
2648 0,
2649 3,
2650 0,
2651 0,
2652 0,
2653 4,
2654 0,
2655 0,
2656 0,
2657 5,
2658 0,
2659 0,
2660 0,
2661 6,
2662 0,
2663 0,
2664 0,
2665 7,
2666 0,
2667 0,
2668 0,
2669 8,
2670 0,
2671 0,
2672 0,
2673 9,
2674 0,
2675 0,
2676 0,
2677 -1,
2678 -1,
2679 -1,
2680 -1
2681 ], array);
1504 for (int i = 0; i < view.length; ++i) { 2682 for (int i = 0; i < view.length; ++i) {
1505 view[i] = 0xFFFFFFFF - i; 2683 view[i] = 0xFFFFFFFF - i;
1506 } 2684 }
1507 Expect.listEquals([0xFFFFFFFF, 0xFFFFFFFE, 2685 Expect.listEquals([
1508 0xFFFFFFFD, 0xFFFFFFFC, 2686 0xFFFFFFFF,
1509 0xFFFFFFFB, 0xFFFFFFFA, 2687 0xFFFFFFFE,
1510 0xFFFFFFF9, 0xFFFFFFF8, 2688 0xFFFFFFFD,
1511 0xFFFFFFF7, 0xFFFFFFF6], 2689 0xFFFFFFFC,
1512 view); 2690 0xFFFFFFFB,
1513 Expect.listEquals([-1, -1, -1, -1, -1, -1, -1, -1, 2691 0xFFFFFFFA,
1514 -2, -1, -1, -1, -3, -1, -1, -1, 2692 0xFFFFFFF9,
1515 -4, -1, -1, -1, -5, -1, -1, -1, 2693 0xFFFFFFF8,
1516 -6, -1, -1, -1, -7, -1, -1, -1, 2694 0xFFFFFFF7,
1517 -8, -1, -1, -1, -9, -1, -1, -1, 2695 0xFFFFFFF6
1518 -10, -1, -1, -1, -1, -1, -1, -1], 2696 ], view);
1519 array); 2697 Expect.listEquals([
2698 -1,
2699 -1,
2700 -1,
2701 -1,
2702 -1,
2703 -1,
2704 -1,
2705 -1,
2706 -2,
2707 -1,
2708 -1,
2709 -1,
2710 -3,
2711 -1,
2712 -1,
2713 -1,
2714 -4,
2715 -1,
2716 -1,
2717 -1,
2718 -5,
2719 -1,
2720 -1,
2721 -1,
2722 -6,
2723 -1,
2724 -1,
2725 -1,
2726 -7,
2727 -1,
2728 -1,
2729 -1,
2730 -8,
2731 -1,
2732 -1,
2733 -1,
2734 -9,
2735 -1,
2736 -1,
2737 -1,
2738 -10,
2739 -1,
2740 -1,
2741 -1,
2742 -1,
2743 -1,
2744 -1,
2745 -1
2746 ], array);
1520 for (int i = 0; i < view.length; ++i) { 2747 for (int i = 0; i < view.length; ++i) {
1521 view[i] = i; 2748 view[i] = i;
1522 } 2749 }
1523 var copy = view.sublist(0, view.length); 2750 var copy = view.sublist(0, view.length);
1524 Expect.isFalse(identical(copy, view)); 2751 Expect.isFalse(identical(copy, view));
1525 Expect.isTrue(copy is Uint32List); 2752 Expect.isTrue(copy is Uint32List);
1526 Expect.equals(10, copy.length); 2753 Expect.equals(10, copy.length);
1527 Expect.listEquals(view, copy); 2754 Expect.listEquals(view, copy);
1528 var region = view.sublist(3, view.length - 3); 2755 var region = view.sublist(3, view.length - 3);
1529 Expect.isTrue(copy is Uint32List); 2756 Expect.isTrue(copy is Uint32List);
1530 Expect.equals(4, region.length); 2757 Expect.equals(4, region.length);
1531 Expect.listEquals([3, 4, 5, 6], region); 2758 Expect.listEquals([3, 4, 5, 6], region);
1532 view.setRange(3, 7, [0x100000001, 0, 1, 0xFFFFFFFF]); 2759 view.setRange(3, 7, [0x100000001, 0, 1, 0xFFFFFFFF]);
1533 Expect.listEquals([0, 1, 2, 1, 0, 1, 0xFFFFFFFF, 7, 8, 9], 2760 Expect.listEquals([0, 1, 2, 1, 0, 1, 0xFFFFFFFF, 7, 8, 9], view);
1534 view); 2761 Expect.listEquals([
1535 Expect.listEquals([-1, -1, -1, -1, 0, 0, 0, 0, 2762 -1,
1536 1, 0, 0, 0, 2, 0, 0, 0, 2763 -1,
1537 1, 0, 0, 0, 0, 0, 0, 0, 2764 -1,
1538 1, 0, 0, 0, -1, -1, -1, -1, 2765 -1,
1539 7, 0, 0, 0, 8, 0, 0, 0, 2766 0,
1540 9, 0, 0, 0, -1, -1, -1, -1], 2767 0,
1541 array); 2768 0,
2769 0,
2770 1,
2771 0,
2772 0,
2773 0,
2774 2,
2775 0,
2776 0,
2777 0,
2778 1,
2779 0,
2780 0,
2781 0,
2782 0,
2783 0,
2784 0,
2785 0,
2786 1,
2787 0,
2788 0,
2789 0,
2790 -1,
2791 -1,
2792 -1,
2793 -1,
2794 7,
2795 0,
2796 0,
2797 0,
2798 8,
2799 0,
2800 0,
2801 0,
2802 9,
2803 0,
2804 0,
2805 0,
2806 -1,
2807 -1,
2808 -1,
2809 -1
2810 ], array);
1542 } 2811 }
1543 2812
1544 static testUint32ListView() { 2813 static testUint32ListView() {
1545 var array = new Int8List(48); 2814 var array = new Int8List(48);
1546 testUint32ListViewImpl(array); 2815 testUint32ListViewImpl(array);
1547 } 2816 }
1548 2817
1549 static testInt64ListViewImpl(var array) { 2818 static testInt64ListViewImpl(var array) {
1550 Expect.equals(96, array.length); 2819 Expect.equals(96, array.length);
1551 Expect.equals(1, array.elementSizeInBytes); 2820 Expect.equals(1, array.elementSizeInBytes);
1552 Expect.equals(96, array.lengthInBytes); 2821 Expect.equals(96, array.lengthInBytes);
1553 for (int i = 0; i < array.length; ++i) { 2822 for (int i = 0; i < array.length; ++i) {
1554 array[i] = 0xFF; 2823 array[i] = 0xFF;
1555 } 2824 }
1556 Expect.throws(() { new Int64List.view(array.buffer, -1); }, 2825 Expect.throws(() {
1557 (e) { return e is RangeError; }); 2826 new Int64List.view(array.buffer, -1);
1558 Expect.throws(() { new Int64List.view(array.buffer, 0, -1); }, 2827 }, (e) {
1559 (e) { return e is RangeError; }); 2828 return e is RangeError;
1560 Expect.throws(() { new Int64List.view(array.buffer, 2829 });
1561 array.lengthInBytes + 1); }, 2830 Expect.throws(() {
1562 (e) { return e is RangeError; }); 2831 new Int64List.view(array.buffer, 0, -1);
1563 Expect.throws(() { new Int64List.view(array.buffer, 2832 }, (e) {
1564 0, array.length + 1); }, 2833 return e is RangeError;
1565 (e) { return e is RangeError; }); 2834 });
1566 Expect.throws(() { new Int64List.view(array.buffer, 2835 Expect.throws(() {
1567 array.length - 1, 2); }, 2836 new Int64List.view(array.buffer, array.lengthInBytes + 1);
1568 (e) { return e is RangeError; }); 2837 }, (e) {
1569 var empty = new Int64List.view(array.buffer, 2838 return e is RangeError;
1570 array.lengthInBytes); 2839 });
2840 Expect.throws(() {
2841 new Int64List.view(array.buffer, 0, array.length + 1);
2842 }, (e) {
2843 return e is RangeError;
2844 });
2845 Expect.throws(() {
2846 new Int64List.view(array.buffer, array.length - 1, 2);
2847 }, (e) {
2848 return e is RangeError;
2849 });
2850 var empty = new Int64List.view(array.buffer, array.lengthInBytes);
1571 Expect.isTrue(empty is List<int>); 2851 Expect.isTrue(empty is List<int>);
1572 Expect.isTrue(empty is Int64List); 2852 Expect.isTrue(empty is Int64List);
1573 Expect.equals(0, empty.length); 2853 Expect.equals(0, empty.length);
1574 var whole = new Int64List.view(array.buffer); 2854 var whole = new Int64List.view(array.buffer);
1575 Expect.isTrue(whole is List<int>); 2855 Expect.isTrue(whole is List<int>);
1576 Expect.isTrue(whole is Int64List); 2856 Expect.isTrue(whole is Int64List);
1577 Expect.equals(12, whole.length); 2857 Expect.equals(12, whole.length);
1578 var view = new Int64List.view(array.buffer, 8, 10); 2858 var view = new Int64List.view(array.buffer, 8, 10);
1579 Expect.isTrue(view is List<int>); 2859 Expect.isTrue(view is List<int>);
1580 Expect.isTrue(view is Int64List); 2860 Expect.isTrue(view is Int64List);
1581 Expect.equals(10, view.length); 2861 Expect.equals(10, view.length);
1582 Expect.equals(8, view.elementSizeInBytes); 2862 Expect.equals(8, view.elementSizeInBytes);
1583 Expect.equals(80, view.lengthInBytes); 2863 Expect.equals(80, view.lengthInBytes);
1584 Expect.listEquals([-1, -1, -1, -1, -1, 2864 Expect.listEquals([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1], view);
1585 -1, -1, -1, -1, -1], 2865 Expect.throws(() {
1586 view); 2866 view[-1] = 0;
1587 Expect.throws(() { view[-1] = 0; }, 2867 }, (e) {
1588 (e) { return e is RangeError; }); 2868 return e is RangeError;
1589 Expect.throws(() { return view[-1]; }, 2869 });
1590 (e) { return e is RangeError; }); 2870 Expect.throws(() {
1591 Expect.throws(() { view[view.length]; }, 2871 return view[-1];
1592 (e) { return e is RangeError; }); 2872 }, (e) {
1593 Expect.throws(() { view[10] = 0; }, 2873 return e is RangeError;
1594 (e) { return e is RangeError; }); 2874 });
1595 Expect.throws(() { view.add(0); }, 2875 Expect.throws(() {
1596 (e) { return e is UnsupportedError; }); 2876 view[view.length];
1597 Expect.throws(() { view.addAll([0]); }, 2877 }, (e) {
1598 (e) { return e is UnsupportedError; }); 2878 return e is RangeError;
1599 Expect.throws(() { view.clear(); }, 2879 });
1600 (e) { return e is UnsupportedError; }); 2880 Expect.throws(() {
1601 Expect.throws(() { view.length = 0; }, 2881 view[10] = 0;
1602 (e) { return e is UnsupportedError; }); 2882 }, (e) {
1603 Expect.throws(() { view.removeLast(); }, 2883 return e is RangeError;
1604 (e) { return e is UnsupportedError; }); 2884 });
1605 Expect.throws(() { view.removeRange(0, view.length - 1); }, 2885 Expect.throws(() {
1606 (e) { return e is UnsupportedError; }); 2886 view.add(0);
2887 }, (e) {
2888 return e is UnsupportedError;
2889 });
2890 Expect.throws(() {
2891 view.addAll([0]);
2892 }, (e) {
2893 return e is UnsupportedError;
2894 });
2895 Expect.throws(() {
2896 view.clear();
2897 }, (e) {
2898 return e is UnsupportedError;
2899 });
2900 Expect.throws(() {
2901 view.length = 0;
2902 }, (e) {
2903 return e is UnsupportedError;
2904 });
2905 Expect.throws(() {
2906 view.removeLast();
2907 }, (e) {
2908 return e is UnsupportedError;
2909 });
2910 Expect.throws(() {
2911 view.removeRange(0, view.length - 1);
2912 }, (e) {
2913 return e is UnsupportedError;
2914 });
1607 for (int i = 0; i < view.length; ++i) { 2915 for (int i = 0; i < view.length; ++i) {
1608 view[i] = 1 + i; 2916 view[i] = 1 + i;
1609 } 2917 }
1610 Expect.listEquals([1, 2, 3, 4, 5, 2918 Expect.listEquals([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], view);
1611 6, 7, 8, 9, 10], 2919 Expect.listEquals([
1612 view); 2920 0xFF,
1613 Expect.listEquals([0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 2921 0xFF,
1614 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2922 0xFF,
1615 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2923 0xFF,
1616 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2924 0xFF,
1617 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2925 0xFF,
1618 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2926 0xFF,
1619 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2927 0xFF,
1620 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2928 0x01,
1621 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2929 0x00,
1622 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2930 0x00,
1623 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2931 0x00,
1624 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF], 2932 0x00,
1625 array); 2933 0x00,
2934 0x00,
2935 0x00,
2936 0x02,
2937 0x00,
2938 0x00,
2939 0x00,
2940 0x00,
2941 0x00,
2942 0x00,
2943 0x00,
2944 0x03,
2945 0x00,
2946 0x00,
2947 0x00,
2948 0x00,
2949 0x00,
2950 0x00,
2951 0x00,
2952 0x04,
2953 0x00,
2954 0x00,
2955 0x00,
2956 0x00,
2957 0x00,
2958 0x00,
2959 0x00,
2960 0x05,
2961 0x00,
2962 0x00,
2963 0x00,
2964 0x00,
2965 0x00,
2966 0x00,
2967 0x00,
2968 0x06,
2969 0x00,
2970 0x00,
2971 0x00,
2972 0x00,
2973 0x00,
2974 0x00,
2975 0x00,
2976 0x07,
2977 0x00,
2978 0x00,
2979 0x00,
2980 0x00,
2981 0x00,
2982 0x00,
2983 0x00,
2984 0x08,
2985 0x00,
2986 0x00,
2987 0x00,
2988 0x00,
2989 0x00,
2990 0x00,
2991 0x00,
2992 0x09,
2993 0x00,
2994 0x00,
2995 0x00,
2996 0x00,
2997 0x00,
2998 0x00,
2999 0x00,
3000 0x0A,
3001 0x00,
3002 0x00,
3003 0x00,
3004 0x00,
3005 0x00,
3006 0x00,
3007 0x00,
3008 0xFF,
3009 0xFF,
3010 0xFF,
3011 0xFF,
3012 0xFF,
3013 0xFF,
3014 0xFF,
3015 0xFF
3016 ], array);
1626 for (int i = 0; i < view.length; ++i) { 3017 for (int i = 0; i < view.length; ++i) {
1627 view[i] = 0x10000000000000000 + i; 3018 view[i] = 0x10000000000000000 + i;
1628 } 3019 }
1629 Expect.listEquals([0, 1, 2, 3, 4, 3020 Expect.listEquals([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], view);
1630 5, 6, 7, 8, 9], 3021 Expect.listEquals([
1631 view); 3022 0xFF,
1632 Expect.listEquals([0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 3023 0xFF,
1633 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3024 0xFF,
1634 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3025 0xFF,
1635 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3026 0xFF,
1636 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3027 0xFF,
1637 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3028 0xFF,
1638 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3029 0xFF,
1639 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3030 0x00,
1640 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3031 0x00,
1641 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3032 0x00,
1642 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3033 0x00,
1643 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF], 3034 0x00,
1644 array); 3035 0x00,
3036 0x00,
3037 0x00,
3038 0x01,
3039 0x00,
3040 0x00,
3041 0x00,
3042 0x00,
3043 0x00,
3044 0x00,
3045 0x00,
3046 0x02,
3047 0x00,
3048 0x00,
3049 0x00,
3050 0x00,
3051 0x00,
3052 0x00,
3053 0x00,
3054 0x03,
3055 0x00,
3056 0x00,
3057 0x00,
3058 0x00,
3059 0x00,
3060 0x00,
3061 0x00,
3062 0x04,
3063 0x00,
3064 0x00,
3065 0x00,
3066 0x00,
3067 0x00,
3068 0x00,
3069 0x00,
3070 0x05,
3071 0x00,
3072 0x00,
3073 0x00,
3074 0x00,
3075 0x00,
3076 0x00,
3077 0x00,
3078 0x06,
3079 0x00,
3080 0x00,
3081 0x00,
3082 0x00,
3083 0x00,
3084 0x00,
3085 0x00,
3086 0x07,
3087 0x00,
3088 0x00,
3089 0x00,
3090 0x00,
3091 0x00,
3092 0x00,
3093 0x00,
3094 0x08,
3095 0x00,
3096 0x00,
3097 0x00,
3098 0x00,
3099 0x00,
3100 0x00,
3101 0x00,
3102 0x09,
3103 0x00,
3104 0x00,
3105 0x00,
3106 0x00,
3107 0x00,
3108 0x00,
3109 0x00,
3110 0xFF,
3111 0xFF,
3112 0xFF,
3113 0xFF,
3114 0xFF,
3115 0xFF,
3116 0xFF,
3117 0xFF
3118 ], array);
1645 for (int i = 0; i < view.length; ++i) { 3119 for (int i = 0; i < view.length; ++i) {
1646 view[i] = -10 + i; 3120 view[i] = -10 + i;
1647 } 3121 }
1648 Expect.listEquals([-10, -9, -8, -7, -6, 3122 Expect.listEquals([-10, -9, -8, -7, -6, -5, -4, -3, -2, -1], view);
1649 -5, -4, -3, -2, -1], 3123 Expect.listEquals([
1650 view); 3124 0xFF,
1651 Expect.listEquals([0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 3125 0xFF,
1652 0xF6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 3126 0xFF,
1653 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 3127 0xFF,
1654 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 3128 0xFF,
1655 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 3129 0xFF,
1656 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 3130 0xFF,
1657 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 3131 0xFF,
1658 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 3132 0xF6,
1659 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 3133 0xFF,
1660 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 3134 0xFF,
1661 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 3135 0xFF,
1662 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF], 3136 0xFF,
1663 array); 3137 0xFF,
3138 0xFF,
3139 0xFF,
3140 0xF7,
3141 0xFF,
3142 0xFF,
3143 0xFF,
3144 0xFF,
3145 0xFF,
3146 0xFF,
3147 0xFF,
3148 0xF8,
3149 0xFF,
3150 0xFF,
3151 0xFF,
3152 0xFF,
3153 0xFF,
3154 0xFF,
3155 0xFF,
3156 0xF9,
3157 0xFF,
3158 0xFF,
3159 0xFF,
3160 0xFF,
3161 0xFF,
3162 0xFF,
3163 0xFF,
3164 0xFA,
3165 0xFF,
3166 0xFF,
3167 0xFF,
3168 0xFF,
3169 0xFF,
3170 0xFF,
3171 0xFF,
3172 0xFB,
3173 0xFF,
3174 0xFF,
3175 0xFF,
3176 0xFF,
3177 0xFF,
3178 0xFF,
3179 0xFF,
3180 0xFC,
3181 0xFF,
3182 0xFF,
3183 0xFF,
3184 0xFF,
3185 0xFF,
3186 0xFF,
3187 0xFF,
3188 0xFD,
3189 0xFF,
3190 0xFF,
3191 0xFF,
3192 0xFF,
3193 0xFF,
3194 0xFF,
3195 0xFF,
3196 0xFE,
3197 0xFF,
3198 0xFF,
3199 0xFF,
3200 0xFF,
3201 0xFF,
3202 0xFF,
3203 0xFF,
3204 0xFF,
3205 0xFF,
3206 0xFF,
3207 0xFF,
3208 0xFF,
3209 0xFF,
3210 0xFF,
3211 0xFF,
3212 0xFF,
3213 0xFF,
3214 0xFF,
3215 0xFF,
3216 0xFF,
3217 0xFF,
3218 0xFF,
3219 0xFF
3220 ], array);
1664 for (int i = 0; i < view.length; ++i) { 3221 for (int i = 0; i < view.length; ++i) {
1665 view[i] = 0x7FFFFFFFFFFFFFFF - i; 3222 view[i] = 0x7FFFFFFFFFFFFFFF - i;
1666 } 3223 }
1667 Expect.listEquals([0x7FFFFFFFFFFFFFFF, 0x7FFFFFFFFFFFFFFE, 3224 Expect.listEquals([
1668 0x7FFFFFFFFFFFFFFD, 0x7FFFFFFFFFFFFFFC, 3225 0x7FFFFFFFFFFFFFFF,
1669 0x7FFFFFFFFFFFFFFB, 0x7FFFFFFFFFFFFFFA, 3226 0x7FFFFFFFFFFFFFFE,
1670 0x7FFFFFFFFFFFFFF9, 0x7FFFFFFFFFFFFFF8, 3227 0x7FFFFFFFFFFFFFFD,
1671 0x7FFFFFFFFFFFFFF7, 0x7FFFFFFFFFFFFFF6], 3228 0x7FFFFFFFFFFFFFFC,
1672 view); 3229 0x7FFFFFFFFFFFFFFB,
1673 Expect.listEquals([0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 3230 0x7FFFFFFFFFFFFFFA,
1674 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 3231 0x7FFFFFFFFFFFFFF9,
1675 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 3232 0x7FFFFFFFFFFFFFF8,
1676 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 3233 0x7FFFFFFFFFFFFFF7,
1677 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 3234 0x7FFFFFFFFFFFFFF6
1678 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 3235 ], view);
1679 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 3236 Expect.listEquals([
1680 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 3237 0xFF,
1681 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 3238 0xFF,
1682 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 3239 0xFF,
1683 0xF6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 3240 0xFF,
1684 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF], 3241 0xFF,
1685 array); 3242 0xFF,
3243 0xFF,
3244 0xFF,
3245 0xFF,
3246 0xFF,
3247 0xFF,
3248 0xFF,
3249 0xFF,
3250 0xFF,
3251 0xFF,
3252 0x7F,
3253 0xFE,
3254 0xFF,
3255 0xFF,
3256 0xFF,
3257 0xFF,
3258 0xFF,
3259 0xFF,
3260 0x7F,
3261 0xFD,
3262 0xFF,
3263 0xFF,
3264 0xFF,
3265 0xFF,
3266 0xFF,
3267 0xFF,
3268 0x7F,
3269 0xFC,
3270 0xFF,
3271 0xFF,
3272 0xFF,
3273 0xFF,
3274 0xFF,
3275 0xFF,
3276 0x7F,
3277 0xFB,
3278 0xFF,
3279 0xFF,
3280 0xFF,
3281 0xFF,
3282 0xFF,
3283 0xFF,
3284 0x7F,
3285 0xFA,
3286 0xFF,
3287 0xFF,
3288 0xFF,
3289 0xFF,
3290 0xFF,
3291 0xFF,
3292 0x7F,
3293 0xF9,
3294 0xFF,
3295 0xFF,
3296 0xFF,
3297 0xFF,
3298 0xFF,
3299 0xFF,
3300 0x7F,
3301 0xF8,
3302 0xFF,
3303 0xFF,
3304 0xFF,
3305 0xFF,
3306 0xFF,
3307 0xFF,
3308 0x7F,
3309 0xF7,
3310 0xFF,
3311 0xFF,
3312 0xFF,
3313 0xFF,
3314 0xFF,
3315 0xFF,
3316 0x7F,
3317 0xF6,
3318 0xFF,
3319 0xFF,
3320 0xFF,
3321 0xFF,
3322 0xFF,
3323 0xFF,
3324 0x7F,
3325 0xFF,
3326 0xFF,
3327 0xFF,
3328 0xFF,
3329 0xFF,
3330 0xFF,
3331 0xFF,
3332 0xFF
3333 ], array);
1686 for (int i = 0; i < view.length; ++i) { 3334 for (int i = 0; i < view.length; ++i) {
1687 view[i] = -0x8000000000000000 + i; 3335 view[i] = -0x8000000000000000 + i;
1688 } 3336 }
1689 Expect.listEquals([-0x8000000000000000, -0x7FFFFFFFFFFFFFFF, 3337 Expect.listEquals([
1690 -0x7FFFFFFFFFFFFFFE, -0x7FFFFFFFFFFFFFFD, 3338 -0x8000000000000000,
1691 -0x7FFFFFFFFFFFFFFC, -0x7FFFFFFFFFFFFFFB, 3339 -0x7FFFFFFFFFFFFFFF,
1692 -0x7FFFFFFFFFFFFFFA, -0x7FFFFFFFFFFFFFF9, 3340 -0x7FFFFFFFFFFFFFFE,
1693 -0x7FFFFFFFFFFFFFF8, -0x7FFFFFFFFFFFFFF7], 3341 -0x7FFFFFFFFFFFFFFD,
1694 view); 3342 -0x7FFFFFFFFFFFFFFC,
1695 Expect.listEquals([0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 3343 -0x7FFFFFFFFFFFFFFB,
1696 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 3344 -0x7FFFFFFFFFFFFFFA,
1697 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 3345 -0x7FFFFFFFFFFFFFF9,
1698 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 3346 -0x7FFFFFFFFFFFFFF8,
1699 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 3347 -0x7FFFFFFFFFFFFFF7
1700 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 3348 ], view);
1701 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 3349 Expect.listEquals([
1702 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 3350 0xFF,
1703 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 3351 0xFF,
1704 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 3352 0xFF,
1705 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 3353 0xFF,
1706 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF], 3354 0xFF,
1707 array); 3355 0xFF,
3356 0xFF,
3357 0xFF,
3358 0x00,
3359 0x00,
3360 0x00,
3361 0x00,
3362 0x00,
3363 0x00,
3364 0x00,
3365 0x80,
3366 0x01,
3367 0x00,
3368 0x00,
3369 0x00,
3370 0x00,
3371 0x00,
3372 0x00,
3373 0x80,
3374 0x02,
3375 0x00,
3376 0x00,
3377 0x00,
3378 0x00,
3379 0x00,
3380 0x00,
3381 0x80,
3382 0x03,
3383 0x00,
3384 0x00,
3385 0x00,
3386 0x00,
3387 0x00,
3388 0x00,
3389 0x80,
3390 0x04,
3391 0x00,
3392 0x00,
3393 0x00,
3394 0x00,
3395 0x00,
3396 0x00,
3397 0x80,
3398 0x05,
3399 0x00,
3400 0x00,
3401 0x00,
3402 0x00,
3403 0x00,
3404 0x00,
3405 0x80,
3406 0x06,
3407 0x00,
3408 0x00,
3409 0x00,
3410 0x00,
3411 0x00,
3412 0x00,
3413 0x80,
3414 0x07,
3415 0x00,
3416 0x00,
3417 0x00,
3418 0x00,
3419 0x00,
3420 0x00,
3421 0x80,
3422 0x08,
3423 0x00,
3424 0x00,
3425 0x00,
3426 0x00,
3427 0x00,
3428 0x00,
3429 0x80,
3430 0x09,
3431 0x00,
3432 0x00,
3433 0x00,
3434 0x00,
3435 0x00,
3436 0x00,
3437 0x80,
3438 0xFF,
3439 0xFF,
3440 0xFF,
3441 0xFF,
3442 0xFF,
3443 0xFF,
3444 0xFF,
3445 0xFF
3446 ], array);
1708 for (int i = 0; i < view.length; ++i) { 3447 for (int i = 0; i < view.length; ++i) {
1709 view[i] = i; 3448 view[i] = i;
1710 } 3449 }
1711 var copy = view.sublist(0, view.length); 3450 var copy = view.sublist(0, view.length);
1712 Expect.isFalse(identical(copy, view)); 3451 Expect.isFalse(identical(copy, view));
1713 Expect.isTrue(copy is Int64List); 3452 Expect.isTrue(copy is Int64List);
1714 Expect.equals(10, copy.length); 3453 Expect.equals(10, copy.length);
1715 Expect.listEquals(view, copy); 3454 Expect.listEquals(view, copy);
1716 var region = view.sublist(3, view.length - 3); 3455 var region = view.sublist(3, view.length - 3);
1717 Expect.isTrue(copy is Int64List); 3456 Expect.isTrue(copy is Int64List);
1718 Expect.equals(4, region.length); 3457 Expect.equals(4, region.length);
1719 Expect.listEquals([3, 4, 5, 6], region); 3458 Expect.listEquals([3, 4, 5, 6], region);
1720 view.setRange(3, 7, [-0x8000000000000000, 0, 1, 0x7FFFFFFFFFFFFFFF]); 3459 view.setRange(3, 7, [-0x8000000000000000, 0, 1, 0x7FFFFFFFFFFFFFFF]);
1721 Expect.listEquals([0, 1, 2, -0x8000000000000000, 0, 3460 Expect.listEquals(
1722 1, 0x7FFFFFFFFFFFFFFF, 7, 8, 9], 3461 [0, 1, 2, -0x8000000000000000, 0, 1, 0x7FFFFFFFFFFFFFFF, 7, 8, 9],
1723 view); 3462 view);
1724 Expect.listEquals([0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 3463 Expect.listEquals([
1725 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3464 0xFF,
1726 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3465 0xFF,
1727 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3466 0xFF,
1728 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 3467 0xFF,
1729 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3468 0xFF,
1730 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3469 0xFF,
1731 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 3470 0xFF,
1732 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3471 0xFF,
1733 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3472 0x00,
1734 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 3473 0x00,
1735 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF], 3474 0x00,
1736 array); 3475 0x00,
3476 0x00,
3477 0x00,
3478 0x00,
3479 0x00,
3480 0x01,
3481 0x00,
3482 0x00,
3483 0x00,
3484 0x00,
3485 0x00,
3486 0x00,
3487 0x00,
3488 0x02,
3489 0x00,
3490 0x00,
3491 0x00,
3492 0x00,
3493 0x00,
3494 0x00,
3495 0x00,
3496 0x00,
3497 0x00,
3498 0x00,
3499 0x00,
3500 0x00,
3501 0x00,
3502 0x00,
3503 0x80,
3504 0x00,
3505 0x00,
3506 0x00,
3507 0x00,
3508 0x00,
3509 0x00,
3510 0x00,
3511 0x00,
3512 0x01,
3513 0x00,
3514 0x00,
3515 0x00,
3516 0x00,
3517 0x00,
3518 0x00,
3519 0x00,
3520 0xFF,
3521 0xFF,
3522 0xFF,
3523 0xFF,
3524 0xFF,
3525 0xFF,
3526 0xFF,
3527 0x7F,
3528 0x07,
3529 0x00,
3530 0x00,
3531 0x00,
3532 0x00,
3533 0x00,
3534 0x00,
3535 0x00,
3536 0x08,
3537 0x00,
3538 0x00,
3539 0x00,
3540 0x00,
3541 0x00,
3542 0x00,
3543 0x00,
3544 0x09,
3545 0x00,
3546 0x00,
3547 0x00,
3548 0x00,
3549 0x00,
3550 0x00,
3551 0x00,
3552 0xFF,
3553 0xFF,
3554 0xFF,
3555 0xFF,
3556 0xFF,
3557 0xFF,
3558 0xFF,
3559 0xFF
3560 ], array);
1737 } 3561 }
1738 3562
1739 static testInt64ListView() { 3563 static testInt64ListView() {
1740 var array = new Uint8List(96); 3564 var array = new Uint8List(96);
1741 testInt64ListViewImpl(array); 3565 testInt64ListViewImpl(array);
1742 } 3566 }
1743 3567
1744 static testUint64ListViewImpl(var array) { 3568 static testUint64ListViewImpl(var array) {
1745 Expect.isTrue(array is List<int>); 3569 Expect.isTrue(array is List<int>);
1746 Expect.equals(96, array.length); 3570 Expect.equals(96, array.length);
1747 Expect.equals(1, array.elementSizeInBytes); 3571 Expect.equals(1, array.elementSizeInBytes);
1748 Expect.equals(96, array.lengthInBytes); 3572 Expect.equals(96, array.lengthInBytes);
1749 for (int i = 0; i < array.length; ++i) { 3573 for (int i = 0; i < array.length; ++i) {
1750 array[i] = -1; 3574 array[i] = -1;
1751 } 3575 }
1752 Expect.throws(() { new Uint64List.view(array.buffer, -1); }, 3576 Expect.throws(() {
1753 (e) { return e is RangeError; }); 3577 new Uint64List.view(array.buffer, -1);
1754 Expect.throws(() { new Uint64List.view(array.buffer, 0, -1); }, 3578 }, (e) {
1755 (e) { return e is RangeError; }); 3579 return e is RangeError;
1756 Expect.throws(() { new Uint64List.view(array.buffer, 3580 });
1757 array.lengthInBytes + 1); }, 3581 Expect.throws(() {
1758 (e) { return e is RangeError; }); 3582 new Uint64List.view(array.buffer, 0, -1);
1759 Expect.throws(() { new Uint64List.view(array.buffer, 3583 }, (e) {
1760 0, array.length + 1); }, 3584 return e is RangeError;
1761 (e) { return e is RangeError; }); 3585 });
1762 Expect.throws(() { new Uint64List.view(array.buffer, 3586 Expect.throws(() {
1763 array.length - 1, 2); }, 3587 new Uint64List.view(array.buffer, array.lengthInBytes + 1);
1764 (e) { return e is RangeError; }); 3588 }, (e) {
1765 var empty = new Uint64List.view(array.buffer, 3589 return e is RangeError;
1766 array.lengthInBytes); 3590 });
3591 Expect.throws(() {
3592 new Uint64List.view(array.buffer, 0, array.length + 1);
3593 }, (e) {
3594 return e is RangeError;
3595 });
3596 Expect.throws(() {
3597 new Uint64List.view(array.buffer, array.length - 1, 2);
3598 }, (e) {
3599 return e is RangeError;
3600 });
3601 var empty = new Uint64List.view(array.buffer, array.lengthInBytes);
1767 Expect.isTrue(empty is List<int>); 3602 Expect.isTrue(empty is List<int>);
1768 Expect.isTrue(empty is Uint64List); 3603 Expect.isTrue(empty is Uint64List);
1769 Expect.equals(0, empty.length); 3604 Expect.equals(0, empty.length);
1770 var whole = new Uint64List.view(array.buffer); 3605 var whole = new Uint64List.view(array.buffer);
1771 Expect.isTrue(whole is List<int>); 3606 Expect.isTrue(whole is List<int>);
1772 Expect.isTrue(whole is Uint64List); 3607 Expect.isTrue(whole is Uint64List);
1773 Expect.equals(12, whole.length); 3608 Expect.equals(12, whole.length);
1774 var view = new Uint64List.view(array.buffer, 8, 10); 3609 var view = new Uint64List.view(array.buffer, 8, 10);
1775 Expect.isTrue(view is List<int>); 3610 Expect.isTrue(view is List<int>);
1776 Expect.isTrue(view is Uint64List); 3611 Expect.isTrue(view is Uint64List);
1777 Expect.equals(10, view.length); 3612 Expect.equals(10, view.length);
1778 Expect.equals(8, view.elementSizeInBytes); 3613 Expect.equals(8, view.elementSizeInBytes);
1779 Expect.equals(80, view.lengthInBytes); 3614 Expect.equals(80, view.lengthInBytes);
1780 Expect.listEquals([0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF, 3615 Expect.listEquals([
1781 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF, 3616 0xFFFFFFFFFFFFFFFF,
1782 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF, 3617 0xFFFFFFFFFFFFFFFF,
1783 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF, 3618 0xFFFFFFFFFFFFFFFF,
1784 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF], 3619 0xFFFFFFFFFFFFFFFF,
1785 view); 3620 0xFFFFFFFFFFFFFFFF,
1786 Expect.throws(() { view[-1] = 0; }, 3621 0xFFFFFFFFFFFFFFFF,
1787 (e) { return e is RangeError; }); 3622 0xFFFFFFFFFFFFFFFF,
1788 Expect.throws(() { return view[-1]; }, 3623 0xFFFFFFFFFFFFFFFF,
1789 (e) { return e is RangeError; }); 3624 0xFFFFFFFFFFFFFFFF,
1790 Expect.throws(() { view[view.length]; }, 3625 0xFFFFFFFFFFFFFFFF
1791 (e) { return e is RangeError; }); 3626 ], view);
1792 Expect.throws(() { view[view.length] = 0; }, 3627 Expect.throws(() {
1793 (e) { return e is RangeError; }); 3628 view[-1] = 0;
1794 Expect.throws(() { view.add(0); }, 3629 }, (e) {
1795 (e) { return e is UnsupportedError; }); 3630 return e is RangeError;
1796 Expect.throws(() { view.addAll([0]); }, 3631 });
1797 (e) { return e is UnsupportedError; }); 3632 Expect.throws(() {
1798 Expect.throws(() { view.clear(); }, 3633 return view[-1];
1799 (e) { return e is UnsupportedError; }); 3634 }, (e) {
1800 Expect.throws(() { view.length = 0; }, 3635 return e is RangeError;
1801 (e) { return e is UnsupportedError; }); 3636 });
1802 Expect.throws(() { view.removeLast(); }, 3637 Expect.throws(() {
1803 (e) { return e is UnsupportedError; }); 3638 view[view.length];
1804 Expect.throws(() { view.removeRange(0, view.length - 1); }, 3639 }, (e) {
1805 (e) { return e is UnsupportedError; }); 3640 return e is RangeError;
3641 });
3642 Expect.throws(() {
3643 view[view.length] = 0;
3644 }, (e) {
3645 return e is RangeError;
3646 });
3647 Expect.throws(() {
3648 view.add(0);
3649 }, (e) {
3650 return e is UnsupportedError;
3651 });
3652 Expect.throws(() {
3653 view.addAll([0]);
3654 }, (e) {
3655 return e is UnsupportedError;
3656 });
3657 Expect.throws(() {
3658 view.clear();
3659 }, (e) {
3660 return e is UnsupportedError;
3661 });
3662 Expect.throws(() {
3663 view.length = 0;
3664 }, (e) {
3665 return e is UnsupportedError;
3666 });
3667 Expect.throws(() {
3668 view.removeLast();
3669 }, (e) {
3670 return e is UnsupportedError;
3671 });
3672 Expect.throws(() {
3673 view.removeRange(0, view.length - 1);
3674 }, (e) {
3675 return e is UnsupportedError;
3676 });
1806 for (int i = 0; i < view.length; ++i) { 3677 for (int i = 0; i < view.length; ++i) {
1807 view[i] = 1 + i; 3678 view[i] = 1 + i;
1808 } 3679 }
1809 Expect.listEquals([1, 2, 3, 4, 5, 3680 Expect.listEquals([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], view);
1810 6, 7, 8, 9, 10], 3681 Expect.listEquals([
1811 view); 3682 -1,
1812 Expect.listEquals([-1, -1, -1, -1, -1, -1, -1, -1, 3683 -1,
1813 1, 0, 0, 0, 0, 0, 0, 0, 3684 -1,
1814 2, 0, 0, 0, 0, 0, 0, 0, 3685 -1,
1815 3, 0, 0, 0, 0, 0, 0, 0, 3686 -1,
1816 4, 0, 0, 0, 0, 0, 0, 0, 3687 -1,
1817 5, 0, 0, 0, 0, 0, 0, 0, 3688 -1,
1818 6, 0, 0, 0, 0, 0, 0, 0, 3689 -1,
1819 7, 0, 0, 0, 0, 0, 0, 0, 3690 1,
1820 8, 0, 0, 0, 0, 0, 0, 0, 3691 0,
1821 9, 0, 0, 0, 0, 0, 0, 0, 3692 0,
1822 10, 0, 0, 0, 0, 0, 0, 0, 3693 0,
1823 -1, -1, -1, -1, -1, -1, -1, -1], 3694 0,
1824 array); 3695 0,
3696 0,
3697 0,
3698 2,
3699 0,
3700 0,
3701 0,
3702 0,
3703 0,
3704 0,
3705 0,
3706 3,
3707 0,
3708 0,
3709 0,
3710 0,
3711 0,
3712 0,
3713 0,
3714 4,
3715 0,
3716 0,
3717 0,
3718 0,
3719 0,
3720 0,
3721 0,
3722 5,
3723 0,
3724 0,
3725 0,
3726 0,
3727 0,
3728 0,
3729 0,
3730 6,
3731 0,
3732 0,
3733 0,
3734 0,
3735 0,
3736 0,
3737 0,
3738 7,
3739 0,
3740 0,
3741 0,
3742 0,
3743 0,
3744 0,
3745 0,
3746 8,
3747 0,
3748 0,
3749 0,
3750 0,
3751 0,
3752 0,
3753 0,
3754 9,
3755 0,
3756 0,
3757 0,
3758 0,
3759 0,
3760 0,
3761 0,
3762 10,
3763 0,
3764 0,
3765 0,
3766 0,
3767 0,
3768 0,
3769 0,
3770 -1,
3771 -1,
3772 -1,
3773 -1,
3774 -1,
3775 -1,
3776 -1,
3777 -1
3778 ], array);
1825 for (int i = 0; i < view.length; ++i) { 3779 for (int i = 0; i < view.length; ++i) {
1826 view[i] = 0x10000000000000000 + i; 3780 view[i] = 0x10000000000000000 + i;
1827 } 3781 }
1828 Expect.listEquals([0, 1, 2, 3, 4, 3782 Expect.listEquals([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], view);
1829 5, 6, 7, 8, 9], 3783 Expect.listEquals([
1830 view); 3784 -1,
1831 Expect.listEquals([-1, -1, -1, -1, -1, -1, -1, -1, 3785 -1,
1832 0, 0, 0, 0, 0, 0, 0, 0, 3786 -1,
1833 1, 0, 0, 0, 0, 0, 0, 0, 3787 -1,
1834 2, 0, 0, 0, 0, 0, 0, 0, 3788 -1,
1835 3, 0, 0, 0, 0, 0, 0, 0, 3789 -1,
1836 4, 0, 0, 0, 0, 0, 0, 0, 3790 -1,
1837 5, 0, 0, 0, 0, 0, 0, 0, 3791 -1,
1838 6, 0, 0, 0, 0, 0, 0, 0, 3792 0,
1839 7, 0, 0, 0, 0, 0, 0, 0, 3793 0,
1840 8, 0, 0, 0, 0, 0, 0, 0, 3794 0,
1841 9, 0, 0, 0, 0, 0, 0, 0, 3795 0,
1842 -1, -1, -1, -1, -1, -1, -1, -1], 3796 0,
1843 array); 3797 0,
3798 0,
3799 0,
3800 1,
3801 0,
3802 0,
3803 0,
3804 0,
3805 0,
3806 0,
3807 0,
3808 2,
3809 0,
3810 0,
3811 0,
3812 0,
3813 0,
3814 0,
3815 0,
3816 3,
3817 0,
3818 0,
3819 0,
3820 0,
3821 0,
3822 0,
3823 0,
3824 4,
3825 0,
3826 0,
3827 0,
3828 0,
3829 0,
3830 0,
3831 0,
3832 5,
3833 0,
3834 0,
3835 0,
3836 0,
3837 0,
3838 0,
3839 0,
3840 6,
3841 0,
3842 0,
3843 0,
3844 0,
3845 0,
3846 0,
3847 0,
3848 7,
3849 0,
3850 0,
3851 0,
3852 0,
3853 0,
3854 0,
3855 0,
3856 8,
3857 0,
3858 0,
3859 0,
3860 0,
3861 0,
3862 0,
3863 0,
3864 9,
3865 0,
3866 0,
3867 0,
3868 0,
3869 0,
3870 0,
3871 0,
3872 -1,
3873 -1,
3874 -1,
3875 -1,
3876 -1,
3877 -1,
3878 -1,
3879 -1
3880 ], array);
1844 for (int i = 0; i < view.length; ++i) { 3881 for (int i = 0; i < view.length; ++i) {
1845 view[i] = 0xFFFFFFFFFFFFFFFF - i; 3882 view[i] = 0xFFFFFFFFFFFFFFFF - i;
1846 } 3883 }
1847 Expect.listEquals([0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFE, 3884 Expect.listEquals([
1848 0xFFFFFFFFFFFFFFFD, 0xFFFFFFFFFFFFFFFC, 3885 0xFFFFFFFFFFFFFFFF,
1849 0xFFFFFFFFFFFFFFFB, 0xFFFFFFFFFFFFFFFA, 3886 0xFFFFFFFFFFFFFFFE,
1850 0xFFFFFFFFFFFFFFF9, 0xFFFFFFFFFFFFFFF8, 3887 0xFFFFFFFFFFFFFFFD,
1851 0xFFFFFFFFFFFFFFF7, 0xFFFFFFFFFFFFFFF6], 3888 0xFFFFFFFFFFFFFFFC,
1852 view); 3889 0xFFFFFFFFFFFFFFFB,
1853 Expect.listEquals([-1, -1, -1, -1, -1, -1, -1, -1, 3890 0xFFFFFFFFFFFFFFFA,
1854 -1, -1, -1, -1, -1, -1, -1, -1, 3891 0xFFFFFFFFFFFFFFF9,
1855 -2, -1, -1, -1, -1, -1, -1, -1, 3892 0xFFFFFFFFFFFFFFF8,
1856 -3, -1, -1, -1, -1, -1, -1, -1, 3893 0xFFFFFFFFFFFFFFF7,
1857 -4, -1, -1, -1, -1, -1, -1, -1, 3894 0xFFFFFFFFFFFFFFF6
1858 -5, -1, -1, -1, -1, -1, -1, -1, 3895 ], view);
1859 -6, -1, -1, -1, -1, -1, -1, -1, 3896 Expect.listEquals([
1860 -7, -1, -1, -1, -1, -1, -1, -1, 3897 -1,
1861 -8, -1, -1, -1, -1, -1, -1, -1, 3898 -1,
1862 -9, -1, -1, -1, -1, -1, -1, -1, 3899 -1,
1863 -10, -1, -1, -1, -1, -1, -1, -1, 3900 -1,
1864 -1, -1, -1, -1, -1, -1, -1, -1], 3901 -1,
1865 array); 3902 -1,
3903 -1,
3904 -1,
3905 -1,
3906 -1,
3907 -1,
3908 -1,
3909 -1,
3910 -1,
3911 -1,
3912 -1,
3913 -2,
3914 -1,
3915 -1,
3916 -1,
3917 -1,
3918 -1,
3919 -1,
3920 -1,
3921 -3,
3922 -1,
3923 -1,
3924 -1,
3925 -1,
3926 -1,
3927 -1,
3928 -1,
3929 -4,
3930 -1,
3931 -1,
3932 -1,
3933 -1,
3934 -1,
3935 -1,
3936 -1,
3937 -5,
3938 -1,
3939 -1,
3940 -1,
3941 -1,
3942 -1,
3943 -1,
3944 -1,
3945 -6,
3946 -1,
3947 -1,
3948 -1,
3949 -1,
3950 -1,
3951 -1,
3952 -1,
3953 -7,
3954 -1,
3955 -1,
3956 -1,
3957 -1,
3958 -1,
3959 -1,
3960 -1,
3961 -8,
3962 -1,
3963 -1,
3964 -1,
3965 -1,
3966 -1,
3967 -1,
3968 -1,
3969 -9,
3970 -1,
3971 -1,
3972 -1,
3973 -1,
3974 -1,
3975 -1,
3976 -1,
3977 -10,
3978 -1,
3979 -1,
3980 -1,
3981 -1,
3982 -1,
3983 -1,
3984 -1,
3985 -1,
3986 -1,
3987 -1,
3988 -1,
3989 -1,
3990 -1,
3991 -1,
3992 -1
3993 ], array);
1866 for (int i = 0; i < view.length; ++i) { 3994 for (int i = 0; i < view.length; ++i) {
1867 view[i] = i; 3995 view[i] = i;
1868 } 3996 }
1869 var copy = view.sublist(0, view.length); 3997 var copy = view.sublist(0, view.length);
1870 Expect.isFalse(identical(copy, view)); 3998 Expect.isFalse(identical(copy, view));
1871 Expect.isTrue(copy is Uint64List); 3999 Expect.isTrue(copy is Uint64List);
1872 Expect.equals(10, copy.length); 4000 Expect.equals(10, copy.length);
1873 Expect.listEquals(view, copy); 4001 Expect.listEquals(view, copy);
1874 var region = view.sublist(3, view.length - 3); 4002 var region = view.sublist(3, view.length - 3);
1875 Expect.isTrue(copy is Uint64List); 4003 Expect.isTrue(copy is Uint64List);
1876 Expect.equals(4, region.length); 4004 Expect.equals(4, region.length);
1877 Expect.listEquals([3, 4, 5, 6], region); 4005 Expect.listEquals([3, 4, 5, 6], region);
1878 view.setRange(3, 7, [0x10000000000000001, 0, 1, 0xFFFFFFFFFFFFFFFF]); 4006 view.setRange(3, 7, [0x10000000000000001, 0, 1, 0xFFFFFFFFFFFFFFFF]);
1879 Expect.listEquals([0, 1, 2, 1, 0, 1, 0xFFFFFFFFFFFFFFFF, 7, 8, 9], 4007 Expect.listEquals([0, 1, 2, 1, 0, 1, 0xFFFFFFFFFFFFFFFF, 7, 8, 9], view);
1880 view); 4008 Expect.listEquals([
1881 Expect.listEquals([-1, -1, -1, -1, -1, -1, -1, -1, 4009 -1,
1882 0, 0, 0, 0, 0, 0, 0, 0, 4010 -1,
1883 1, 0, 0, 0, 0, 0, 0, 0, 4011 -1,
1884 2, 0, 0, 0, 0, 0, 0, 0, 4012 -1,
1885 1, 0, 0, 0, 0, 0, 0, 0, 4013 -1,
1886 0, 0, 0, 0, 0, 0, 0, 0, 4014 -1,
1887 1, 0, 0, 0, 0, 0, 0, 0, 4015 -1,
1888 -1, -1, -1, -1, -1, -1, -1, -1, 4016 -1,
1889 7, 0, 0, 0, 0, 0, 0, 0, 4017 0,
1890 8, 0, 0, 0, 0, 0, 0, 0, 4018 0,
1891 9, 0, 0, 0, 0, 0, 0, 0, 4019 0,
1892 -1, -1, -1, -1, -1, -1, -1, -1], 4020 0,
1893 array); 4021 0,
4022 0,
4023 0,
4024 0,
4025 1,
4026 0,
4027 0,
4028 0,
4029 0,
4030 0,
4031 0,
4032 0,
4033 2,
4034 0,
4035 0,
4036 0,
4037 0,
4038 0,
4039 0,
4040 0,
4041 1,
4042 0,
4043 0,
4044 0,
4045 0,
4046 0,
4047 0,
4048 0,
4049 0,
4050 0,
4051 0,
4052 0,
4053 0,
4054 0,
4055 0,
4056 0,
4057 1,
4058 0,
4059 0,
4060 0,
4061 0,
4062 0,
4063 0,
4064 0,
4065 -1,
4066 -1,
4067 -1,
4068 -1,
4069 -1,
4070 -1,
4071 -1,
4072 -1,
4073 7,
4074 0,
4075 0,
4076 0,
4077 0,
4078 0,
4079 0,
4080 0,
4081 8,
4082 0,
4083 0,
4084 0,
4085 0,
4086 0,
4087 0,
4088 0,
4089 9,
4090 0,
4091 0,
4092 0,
4093 0,
4094 0,
4095 0,
4096 0,
4097 -1,
4098 -1,
4099 -1,
4100 -1,
4101 -1,
4102 -1,
4103 -1,
4104 -1
4105 ], array);
1894 } 4106 }
1895 4107
1896 static testUint64ListView() { 4108 static testUint64ListView() {
1897 var array = new Int8List(96); 4109 var array = new Int8List(96);
1898 testUint64ListViewImpl(array); 4110 testUint64ListViewImpl(array);
1899 } 4111 }
1900 4112
1901 static testFloat32ListViewImpl(var array) { 4113 static testFloat32ListViewImpl(var array) {
1902 Expect.isTrue(array is List<int>); 4114 Expect.isTrue(array is List<int>);
1903 Expect.equals(12, array.length); 4115 Expect.equals(12, array.length);
1904 Expect.equals(4, array.elementSizeInBytes); 4116 Expect.equals(4, array.elementSizeInBytes);
1905 Expect.equals(48, array.lengthInBytes); 4117 Expect.equals(48, array.lengthInBytes);
1906 for (int i = 0; i < array.length; ++i) { 4118 for (int i = 0; i < array.length; ++i) {
1907 array[i] = 0xBF800000; 4119 array[i] = 0xBF800000;
1908 } 4120 }
1909 Expect.throws(() { new Float32List.view(array.buffer, -1); }, 4121 Expect.throws(() {
1910 (e) { return e is RangeError; }); 4122 new Float32List.view(array.buffer, -1);
1911 Expect.throws(() { new Float32List.view(array.buffer, 0, -1); }, 4123 }, (e) {
1912 (e) { return e is RangeError; }); 4124 return e is RangeError;
1913 Expect.throws(() { new Float32List.view(array.buffer, 4125 });
1914 array.lengthInBytes + 1); }, 4126 Expect.throws(() {
1915 (e) { return e is RangeError; }); 4127 new Float32List.view(array.buffer, 0, -1);
1916 Expect.throws(() { new Float32List.view(array.buffer, 4128 }, (e) {
1917 0, array.lengthInBytes + 1); }, 4129 return e is RangeError;
1918 (e) { return e is RangeError; }); 4130 });
1919 Expect.throws(() { new Float32List.view(array.buffer, 4131 Expect.throws(() {
1920 array.lengthInBytes - 1, 2); }, 4132 new Float32List.view(array.buffer, array.lengthInBytes + 1);
1921 (e) { return e is RangeError; }); 4133 }, (e) {
1922 var empty = new Float32List.view(array.buffer, 4134 return e is RangeError;
1923 array.lengthInBytes); 4135 });
4136 Expect.throws(() {
4137 new Float32List.view(array.buffer, 0, array.lengthInBytes + 1);
4138 }, (e) {
4139 return e is RangeError;
4140 });
4141 Expect.throws(() {
4142 new Float32List.view(array.buffer, array.lengthInBytes - 1, 2);
4143 }, (e) {
4144 return e is RangeError;
4145 });
4146 var empty = new Float32List.view(array.buffer, array.lengthInBytes);
1924 Expect.isTrue(empty is List<double>); 4147 Expect.isTrue(empty is List<double>);
1925 Expect.isTrue(empty is Float32List); 4148 Expect.isTrue(empty is Float32List);
1926 Expect.equals(0, empty.length); 4149 Expect.equals(0, empty.length);
1927 var whole = new Float32List.view(array.buffer); 4150 var whole = new Float32List.view(array.buffer);
1928 Expect.isTrue(whole is List<double>); 4151 Expect.isTrue(whole is List<double>);
1929 Expect.isTrue(whole is Float32List); 4152 Expect.isTrue(whole is Float32List);
1930 Expect.equals(12, whole.length); 4153 Expect.equals(12, whole.length);
1931 var view = new Float32List.view(array.buffer, 4, 10); 4154 var view = new Float32List.view(array.buffer, 4, 10);
1932 Expect.isTrue(view is List<double>); 4155 Expect.isTrue(view is List<double>);
1933 Expect.isTrue(view is Float32List); 4156 Expect.isTrue(view is Float32List);
1934 Expect.equals(10, view.length); 4157 Expect.equals(10, view.length);
1935 Expect.equals(4, view.elementSizeInBytes); 4158 Expect.equals(4, view.elementSizeInBytes);
1936 Expect.equals(40, view.lengthInBytes); 4159 Expect.equals(40, view.lengthInBytes);
1937 Expect.listEquals([-1.0, -1.0, -1.0, -1.0, -1.0, 4160 Expect.listEquals(
1938 -1.0, -1.0, -1.0, -1.0, -1.0], 4161 [-1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0], view);
1939 view); 4162 Expect.throws(() {
1940 Expect.throws(() { view[-1] = 0.0; }, 4163 view[-1] = 0.0;
1941 (e) { return e is RangeError; }); 4164 }, (e) {
1942 Expect.throws(() { return view[-1]; }, 4165 return e is RangeError;
1943 (e) { return e is RangeError; }); 4166 });
1944 Expect.throws(() { view[10]; }, 4167 Expect.throws(() {
1945 (e) { return e is RangeError; }); 4168 return view[-1];
1946 Expect.throws(() { view[10] = 0.0; }, 4169 }, (e) {
1947 (e) { return e is RangeError; }); 4170 return e is RangeError;
1948 Expect.throws(() { array.add(0.0); }, 4171 });
1949 (e) { return e is UnsupportedError; }); 4172 Expect.throws(() {
1950 Expect.throws(() { array.addAll([0]); }, 4173 view[10];
1951 (e) { return e is UnsupportedError; }); 4174 }, (e) {
1952 Expect.throws(() { array.clear(); }, 4175 return e is RangeError;
1953 (e) { return e is UnsupportedError; }); 4176 });
1954 Expect.throws(() { array.length = 0; }, 4177 Expect.throws(() {
1955 (e) { return e is UnsupportedError; }); 4178 view[10] = 0.0;
1956 Expect.throws(() { array.removeLast(); }, 4179 }, (e) {
1957 (e) { return e is UnsupportedError; }); 4180 return e is RangeError;
1958 Expect.throws(() { array.removeRange(0, array.length - 1); }, 4181 });
1959 (e) { return e is UnsupportedError; }); 4182 Expect.throws(() {
4183 array.add(0.0);
4184 }, (e) {
4185 return e is UnsupportedError;
4186 });
4187 Expect.throws(() {
4188 array.addAll([0]);
4189 }, (e) {
4190 return e is UnsupportedError;
4191 });
4192 Expect.throws(() {
4193 array.clear();
4194 }, (e) {
4195 return e is UnsupportedError;
4196 });
4197 Expect.throws(() {
4198 array.length = 0;
4199 }, (e) {
4200 return e is UnsupportedError;
4201 });
4202 Expect.throws(() {
4203 array.removeLast();
4204 }, (e) {
4205 return e is UnsupportedError;
4206 });
4207 Expect.throws(() {
4208 array.removeRange(0, array.length - 1);
4209 }, (e) {
4210 return e is UnsupportedError;
4211 });
1960 for (int i = 0; i < view.length; ++i) { 4212 for (int i = 0; i < view.length; ++i) {
1961 view[i] = 1.0 + i; 4213 view[i] = 1.0 + i;
1962 } 4214 }
1963 Expect.listEquals([1.0, 2.0, 3.0, 4.0, 5.0, 4215 Expect
1964 6.0, 7.0, 8.0, 9.0, 10.0], 4216 .listEquals([1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0], view);
1965 view); 4217 Expect.listEquals([
1966 Expect.listEquals([0xBF800000, 0x3F800000, 4218 0xBF800000,
1967 0x40000000, 0x40400000, 4219 0x3F800000,
1968 0x40800000, 0x40A00000, 4220 0x40000000,
1969 0x40C00000, 0x40E00000, 4221 0x40400000,
1970 0x41000000, 0x41100000, 4222 0x40800000,
1971 0x41200000, 0xBF800000], 4223 0x40A00000,
1972 array); 4224 0x40C00000,
4225 0x40E00000,
4226 0x41000000,
4227 0x41100000,
4228 0x41200000,
4229 0xBF800000
4230 ], array);
1973 // TODO: min, max, and round 4231 // TODO: min, max, and round
1974 for (int i = 0; i < view.length; ++i) { 4232 for (int i = 0; i < view.length; ++i) {
1975 view[i] = i * 1.0; 4233 view[i] = i * 1.0;
1976 } 4234 }
1977 var copy = view.sublist(0, view.length); 4235 var copy = view.sublist(0, view.length);
1978 Expect.isFalse(identical(copy, view)); 4236 Expect.isFalse(identical(copy, view));
1979 Expect.isTrue(copy is Float32List); 4237 Expect.isTrue(copy is Float32List);
1980 Expect.equals(10, copy.length); 4238 Expect.equals(10, copy.length);
1981 Expect.listEquals(view, copy); 4239 Expect.listEquals(view, copy);
1982 var region = view.sublist(3, view.length - 3); 4240 var region = view.sublist(3, view.length - 3);
1983 Expect.isTrue(copy is Float32List); 4241 Expect.isTrue(copy is Float32List);
1984 Expect.equals(4, region.length); 4242 Expect.equals(4, region.length);
1985 Expect.listEquals([3.0, 4.0, 5.0, 6.0], region); 4243 Expect.listEquals([3.0, 4.0, 5.0, 6.0], region);
1986 view.setRange(3, 7, [double.NEGATIVE_INFINITY, 0.0, 1.0, double.INFINITY]); 4244 view.setRange(3, 7, [double.NEGATIVE_INFINITY, 0.0, 1.0, double.INFINITY]);
1987 Expect.listEquals([0.0, 1.0, 2.0, double.NEGATIVE_INFINITY, 0.0, 4245 Expect.listEquals([
1988 1.0, double.INFINITY, 7.0, 8.0, 9.0], 4246 0.0,
1989 view); 4247 1.0,
1990 Expect.listEquals([0xBF800000, 0x00000000, 4248 2.0,
1991 0x3F800000, 0x40000000, 4249 double.NEGATIVE_INFINITY,
1992 0xFF800000, 0x00000000, 4250 0.0,
1993 0x3F800000, 0x7F800000, 4251 1.0,
1994 0x40E00000, 0x41000000, 4252 double.INFINITY,
1995 0x41100000, 0xBF800000], 4253 7.0,
1996 array); 4254 8.0,
4255 9.0
4256 ], view);
4257 Expect.listEquals([
4258 0xBF800000,
4259 0x00000000,
4260 0x3F800000,
4261 0x40000000,
4262 0xFF800000,
4263 0x00000000,
4264 0x3F800000,
4265 0x7F800000,
4266 0x40E00000,
4267 0x41000000,
4268 0x41100000,
4269 0xBF800000
4270 ], array);
1997 } 4271 }
1998 4272
1999 static testFloat32ListView() { 4273 static testFloat32ListView() {
2000 var array = new Uint32List(12); 4274 var array = new Uint32List(12);
2001 testFloat32ListViewImpl(array); 4275 testFloat32ListViewImpl(array);
2002 } 4276 }
2003 4277
2004 static testFloat64ListViewImpl(var array) { 4278 static testFloat64ListViewImpl(var array) {
2005 Expect.isTrue(array is List<int>); 4279 Expect.isTrue(array is List<int>);
2006 Expect.equals(12, array.length); 4280 Expect.equals(12, array.length);
2007 Expect.equals(8, array.elementSizeInBytes); 4281 Expect.equals(8, array.elementSizeInBytes);
2008 Expect.equals(96, array.lengthInBytes); 4282 Expect.equals(96, array.lengthInBytes);
2009 for (int i = 0; i < array.length; ++i) { 4283 for (int i = 0; i < array.length; ++i) {
2010 array[i] = 0xBFF0000000000000; 4284 array[i] = 0xBFF0000000000000;
2011 } 4285 }
2012 Expect.throws(() { new Float64List.view(array.buffer, -1); }, 4286 Expect.throws(() {
2013 (e) { return e is RangeError; }); 4287 new Float64List.view(array.buffer, -1);
2014 Expect.throws(() { new Float64List.view(array.buffer, 0, -1); }, 4288 }, (e) {
2015 (e) { return e is RangeError; }); 4289 return e is RangeError;
2016 Expect.throws(() { new Float64List.view(array.buffer, 4290 });
2017 array.lengthInBytes + 1); }, 4291 Expect.throws(() {
2018 (e) { return e is RangeError; }); 4292 new Float64List.view(array.buffer, 0, -1);
2019 Expect.throws(() { new Float64List.view(array.buffer, 4293 }, (e) {
2020 0, array.lengthInBytes + 1); }, 4294 return e is RangeError;
2021 (e) { return e is RangeError; }); 4295 });
2022 Expect.throws(() { new Float64List.view(array.buffer, 4296 Expect.throws(() {
2023 array.lengthInBytes - 1, 2); }, 4297 new Float64List.view(array.buffer, array.lengthInBytes + 1);
2024 (e) { return e is RangeError; }); 4298 }, (e) {
2025 var empty = new Float64List.view(array.buffer, 4299 return e is RangeError;
2026 array.lengthInBytes); 4300 });
4301 Expect.throws(() {
4302 new Float64List.view(array.buffer, 0, array.lengthInBytes + 1);
4303 }, (e) {
4304 return e is RangeError;
4305 });
4306 Expect.throws(() {
4307 new Float64List.view(array.buffer, array.lengthInBytes - 1, 2);
4308 }, (e) {
4309 return e is RangeError;
4310 });
4311 var empty = new Float64List.view(array.buffer, array.lengthInBytes);
2027 Expect.isTrue(empty is List<double>); 4312 Expect.isTrue(empty is List<double>);
2028 Expect.isTrue(empty is Float64List); 4313 Expect.isTrue(empty is Float64List);
2029 Expect.equals(0, empty.length); 4314 Expect.equals(0, empty.length);
2030 var whole = new Float64List.view(array.buffer); 4315 var whole = new Float64List.view(array.buffer);
2031 Expect.isTrue(whole is List<double>); 4316 Expect.isTrue(whole is List<double>);
2032 Expect.isTrue(whole is Float64List); 4317 Expect.isTrue(whole is Float64List);
2033 Expect.equals(12, whole.length); 4318 Expect.equals(12, whole.length);
2034 var view = new Float64List.view(array.buffer, 8, 10); 4319 var view = new Float64List.view(array.buffer, 8, 10);
2035 Expect.isTrue(view is List<double>); 4320 Expect.isTrue(view is List<double>);
2036 Expect.isTrue(view is Float64List); 4321 Expect.isTrue(view is Float64List);
2037 Expect.equals(10, view.length); 4322 Expect.equals(10, view.length);
2038 Expect.equals(8, view.elementSizeInBytes); 4323 Expect.equals(8, view.elementSizeInBytes);
2039 Expect.equals(80, view.lengthInBytes); 4324 Expect.equals(80, view.lengthInBytes);
2040 Expect.listEquals([-1.0, -1.0, -1.0, -1.0, -1.0, 4325 Expect.listEquals(
2041 -1.0, -1.0, -1.0, -1.0, -1.0], 4326 [-1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0], view);
2042 view); 4327 Expect.throws(() {
2043 Expect.throws(() { view[-1] = 0.0; }, 4328 view[-1] = 0.0;
2044 (e) { return e is RangeError; }); 4329 }, (e) {
2045 Expect.throws(() { return view[-1]; }, 4330 return e is RangeError;
2046 (e) { return e is RangeError; }); 4331 });
2047 Expect.throws(() { view[10]; }, 4332 Expect.throws(() {
2048 (e) { return e is RangeError; }); 4333 return view[-1];
2049 Expect.throws(() { view[10] = 0.0; }, 4334 }, (e) {
2050 (e) { return e is RangeError; }); 4335 return e is RangeError;
2051 Expect.throws(() { array.add(0.0); }, 4336 });
2052 (e) { return e is UnsupportedError; }); 4337 Expect.throws(() {
2053 Expect.throws(() { array.addAll([0]); }, 4338 view[10];
2054 (e) { return e is UnsupportedError; }); 4339 }, (e) {
2055 Expect.throws(() { array.clear(); }, 4340 return e is RangeError;
2056 (e) { return e is UnsupportedError; }); 4341 });
2057 Expect.throws(() { array.length = 0; }, 4342 Expect.throws(() {
2058 (e) { return e is UnsupportedError; }); 4343 view[10] = 0.0;
2059 Expect.throws(() { array.removeLast(); }, 4344 }, (e) {
2060 (e) { return e is UnsupportedError; }); 4345 return e is RangeError;
2061 Expect.throws(() { array.removeRange(0, array.length - 1); }, 4346 });
2062 (e) { return e is UnsupportedError; }); 4347 Expect.throws(() {
4348 array.add(0.0);
4349 }, (e) {
4350 return e is UnsupportedError;
4351 });
4352 Expect.throws(() {
4353 array.addAll([0]);
4354 }, (e) {
4355 return e is UnsupportedError;
4356 });
4357 Expect.throws(() {
4358 array.clear();
4359 }, (e) {
4360 return e is UnsupportedError;
4361 });
4362 Expect.throws(() {
4363 array.length = 0;
4364 }, (e) {
4365 return e is UnsupportedError;
4366 });
4367 Expect.throws(() {
4368 array.removeLast();
4369 }, (e) {
4370 return e is UnsupportedError;
4371 });
4372 Expect.throws(() {
4373 array.removeRange(0, array.length - 1);
4374 }, (e) {
4375 return e is UnsupportedError;
4376 });
2063 for (int i = 0; i < view.length; ++i) { 4377 for (int i = 0; i < view.length; ++i) {
2064 view[i] = 1.0 + i; 4378 view[i] = 1.0 + i;
2065 } 4379 }
2066 Expect.listEquals([1.0, 2.0, 3.0, 4.0, 5.0, 4380 Expect
2067 6.0, 7.0, 8.0, 9.0, 10.0], 4381 .listEquals([1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0], view);
2068 view); 4382 Expect.listEquals([
2069 Expect.listEquals([0xBFF0000000000000, 0x3FF0000000000000, 4383 0xBFF0000000000000,
2070 0x4000000000000000, 0x4008000000000000, 4384 0x3FF0000000000000,
2071 0x4010000000000000, 0x4014000000000000, 4385 0x4000000000000000,
2072 0x4018000000000000, 0x401C000000000000, 4386 0x4008000000000000,
2073 0x4020000000000000, 0x4022000000000000, 4387 0x4010000000000000,
2074 0x4024000000000000, 0xBFF0000000000000], 4388 0x4014000000000000,
2075 array); 4389 0x4018000000000000,
4390 0x401C000000000000,
4391 0x4020000000000000,
4392 0x4022000000000000,
4393 0x4024000000000000,
4394 0xBFF0000000000000
4395 ], array);
2076 // TODO: min, max 4396 // TODO: min, max
2077 for (int i = 0; i < view.length; ++i) { 4397 for (int i = 0; i < view.length; ++i) {
2078 view[i] = i * 1.0; 4398 view[i] = i * 1.0;
2079 } 4399 }
2080 var copy = view.sublist(0, view.length); 4400 var copy = view.sublist(0, view.length);
2081 Expect.isFalse(identical(copy, view)); 4401 Expect.isFalse(identical(copy, view));
2082 Expect.isTrue(copy is Float64List); 4402 Expect.isTrue(copy is Float64List);
2083 Expect.equals(10, copy.length); 4403 Expect.equals(10, copy.length);
2084 Expect.listEquals(view, copy); 4404 Expect.listEquals(view, copy);
2085 var region = view.sublist(3, view.length - 3); 4405 var region = view.sublist(3, view.length - 3);
2086 Expect.isTrue(copy is Float64List); 4406 Expect.isTrue(copy is Float64List);
2087 Expect.equals(4, region.length); 4407 Expect.equals(4, region.length);
2088 Expect.listEquals([3.0, 4.0, 5.0, 6.0], region); 4408 Expect.listEquals([3.0, 4.0, 5.0, 6.0], region);
2089 view.setRange(3, 7, [double.NEGATIVE_INFINITY, 0.0, 1.0, double.INFINITY]); 4409 view.setRange(3, 7, [double.NEGATIVE_INFINITY, 0.0, 1.0, double.INFINITY]);
2090 Expect.listEquals([0.0, 1.0, 2.0, double.NEGATIVE_INFINITY, 0.0, 4410 Expect.listEquals([
2091 1.0, double.INFINITY, 7.0, 8.0, 9.0], 4411 0.0,
2092 view); 4412 1.0,
2093 Expect.listEquals([0xBFF0000000000000, 0x0000000000000000, 4413 2.0,
2094 0x3FF0000000000000, 0x4000000000000000, 4414 double.NEGATIVE_INFINITY,
2095 0xFFF0000000000000, 0x0000000000000000, 4415 0.0,
2096 0x3FF0000000000000, 0x7FF0000000000000, 4416 1.0,
2097 0x401C000000000000, 0x4020000000000000, 4417 double.INFINITY,
2098 0x4022000000000000, 0xBFF0000000000000], 4418 7.0,
2099 array); 4419 8.0,
4420 9.0
4421 ], view);
4422 Expect.listEquals([
4423 0xBFF0000000000000,
4424 0x0000000000000000,
4425 0x3FF0000000000000,
4426 0x4000000000000000,
4427 0xFFF0000000000000,
4428 0x0000000000000000,
4429 0x3FF0000000000000,
4430 0x7FF0000000000000,
4431 0x401C000000000000,
4432 0x4020000000000000,
4433 0x4022000000000000,
4434 0xBFF0000000000000
4435 ], array);
2100 } 4436 }
2101 4437
2102 static testFloat64ListView() { 4438 static testFloat64ListView() {
2103 var array = new Uint64List(12); 4439 var array = new Uint64List(12);
2104 testFloat64ListViewImpl(array); 4440 testFloat64ListViewImpl(array);
2105 } 4441 }
2106 4442
2107 static testMain() { 4443 static testMain() {
2108 testInt8List(); 4444 testInt8List();
2109 testUint8List(); 4445 testUint8List();
(...skipping 13 matching lines...) Expand all
2123 testInt32ListView(); 4459 testInt32ListView();
2124 testUint32ListView(); 4460 testUint32ListView();
2125 testInt64ListView(); 4461 testInt64ListView();
2126 testUint64ListView(); 4462 testUint64ListView();
2127 testFloat32ListView(); 4463 testFloat32ListView();
2128 testFloat64ListView(); 4464 testFloat64ListView();
2129 } 4465 }
2130 } 4466 }
2131 4467
2132 main() { 4468 main() {
2133 for (var i=0; i<20; i++) { 4469 for (var i = 0; i < 20; i++) {
2134 OptimizedByteArrayTest.testMain(); 4470 OptimizedByteArrayTest.testMain();
2135 } 4471 }
2136 } 4472 }
OLDNEW
« no previous file with comments | « runtime/observatory/tests/ui/log.dart ('k') | runtime/tests/vm/dart/byte_array_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698