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

Side by Side Diff: tests/standalone/byte_array_test.dart

Issue 11881031: Add Dart class for _ExternalUint8ClampedArray and API to allocate it. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 11 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 | Annotate | Revision Log
« runtime/include/dart_api.h ('K') | « runtime/vm/dart_api_impl_test.cc ('k') | no next file » | 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 // 4 //
5 // Dart test program for testing native byte arrays. 5 // Dart test program for testing native byte arrays.
6 6
7 // Library tag to be able to run in html test framework. 7 // Library tag to be able to run in html test framework.
8 library ByteArrayTest; 8 library ByteArrayTest;
9 9
10 import 'dart:scalarlist'; 10 import 'dart:scalarlist';
(...skipping 13 matching lines...) Expand all
24 } 24 }
25 } 25 }
26 26
27 void testCreateClampedUint8ByteArray() { 27 void testCreateClampedUint8ByteArray() {
28 Uint8ClampedList clampedByteArray; 28 Uint8ClampedList clampedByteArray;
29 29
30 clampedByteArray = new Uint8ClampedList(0); 30 clampedByteArray = new Uint8ClampedList(0);
31 Expect.isTrue(clampedByteArray is Uint8ClampedList); 31 Expect.isTrue(clampedByteArray is Uint8ClampedList);
32 Expect.isFalse(clampedByteArray is Uint8List); 32 Expect.isFalse(clampedByteArray is Uint8List);
33 Expect.equals(0, clampedByteArray.length); 33 Expect.equals(0, clampedByteArray.length);
34 Expect.equals(0, clampedByteArray.lengthInBytes());
34 35
35 clampedByteArray = new Uint8ClampedList(10); 36 clampedByteArray = new Uint8ClampedList(10);
36 Expect.equals(10, clampedByteArray.length); 37 Expect.equals(10, clampedByteArray.length);
37 for (int i = 0; i < 10; i++) { 38 for (int i = 0; i < 10; i++) {
38 Expect.equals(0, clampedByteArray[i]); 39 Expect.equals(0, clampedByteArray[i]);
39 } 40 }
40 } 41 }
41 42
43 void testCreateExternalClampedUint8ByteArray() {
44 List externalClampedByteArray;
45
46 externalClampedByteArray = new Uint8ClampedList.transferable(0);
47 Expect.isTrue(externalClampedByteArray is Uint8ClampedList);
48 Expect.isFalse(externalClampedByteArray is Uint8List);
49 Expect.equals(0, externalClampedByteArray.length);
50 Expect.equals(0, externalClampedByteArray.lengthInBytes());
51
52 externalClampedByteArray = new Uint8ClampedList.transferable(10);
53 Expect.equals(10, externalClampedByteArray.length);
54 for (int i = 0; i < 10; i++) {
55 Expect.equals(0, externalClampedByteArray[i]);
56 }
57
58 }
59
42 void testUnsignedByteArrayRange(bool check_throws) { 60 void testUnsignedByteArrayRange(bool check_throws) {
43 Uint8List byteArray; 61 Uint8List byteArray;
44 byteArray = new Uint8List(10); 62 byteArray = new Uint8List(10);
45 63
46 byteArray[1] = 255; 64 byteArray[1] = 255;
47 Expect.equals(255, byteArray[1]); 65 Expect.equals(255, byteArray[1]);
48 byteArray[1] = 0; 66 byteArray[1] = 0;
49 Expect.equals(0, byteArray[1]); 67 Expect.equals(0, byteArray[1]);
50 68
51 for (int i = 0; i < byteArray.length; i++) { 69 for (int i = 0; i < byteArray.length; i++) {
52 byteArray[i] = i; 70 byteArray[i] = i;
53 } 71 }
54 for (int i = 0; i < byteArray.length; i++) { 72 for (int i = 0; i < byteArray.length; i++) {
55 Expect.equals(i, byteArray[i]); 73 Expect.equals(i, byteArray[i]);
56 } 74 }
57 75
58 // These should eventually throw. 76 // These should eventually throw.
59 byteArray[1] = 256; 77 byteArray[1] = 256;
60 byteArray[1] = -1; 78 byteArray[1] = -1;
61 byteArray[2] = -129; 79 byteArray[2] = -129;
62 if (check_throws) { 80 if (check_throws) {
63 Expect.throws(() { 81 Expect.throws(() {
64 byteArray[1] = 1.2; 82 byteArray[1] = 1.2;
65 }); 83 });
66 } 84 }
67 } 85 }
68 86
69 void testClampedUnsignedByteArrayRange(bool check_throws) { 87 void testClampedUnsignedByteArrayRangeHelper(Uint8ClampedList byteArray,
88 bool check_throws) {
70 Uint8ClampedList byteArray; 89 Uint8ClampedList byteArray;
71 byteArray = new Uint8ClampedList(10); 90 byteArray = new Uint8ClampedList(10);
72 91
73 byteArray[1] = 255; 92 byteArray[1] = 255;
74 Expect.equals(255, byteArray[1]); 93 Expect.equals(255, byteArray[1]);
75 byteArray[1] = 0; 94 byteArray[1] = 0;
76 Expect.equals(0, byteArray[1]); 95 Expect.equals(0, byteArray[1]);
77 for (int i = 0; i < byteArray.length; i++) { 96 for (int i = 0; i < byteArray.length; i++) {
78 byteArray[i] = i; 97 byteArray[i] = i;
79 } 98 }
80 for (int i = 0; i < byteArray.length; i++) { 99 for (int i = 0; i < byteArray.length; i++) {
81 Expect.equals(i, byteArray[i]); 100 Expect.equals(i, byteArray[i]);
82 } 101 }
83 102
84 // These should eventually throw. 103 // These should eventually throw.
85 byteArray[1] = 256; 104 byteArray[1] = 256;
86 byteArray[2] = -129; 105 byteArray[2] = -129;
87 Expect.equals(255, byteArray[1]); 106 Expect.equals(255, byteArray[1]);
88 Expect.equals(0, byteArray[2]); 107 Expect.equals(0, byteArray[2]);
89 } 108 }
90 109
110 void testClampedUnsignedByteArrayRange(bool check_throws) {
111 testClampedUnsignedByteArrayRangeHelper(new Uint8ClampedList(10),
112 check_throws);
113 }
114
115
116 void testExternalClampedUnsignedByteArrayRange(bool check_throws) {
117 testClampedUnsignedByteArrayRangeHelper(new Uint8ClampedList.transferable(10),
118 check_throws);
119 }
120
121
91 void testByteArrayRange(bool check_throws) { 122 void testByteArrayRange(bool check_throws) {
92 Int8List byteArray; 123 Int8List byteArray;
93 byteArray = new Int8List(10); 124 byteArray = new Int8List(10);
94 byteArray[1] = 0; 125 byteArray[1] = 0;
95 Expect.equals(0, byteArray[1]); 126 Expect.equals(0, byteArray[1]);
96 byteArray[2] = -128; 127 byteArray[2] = -128;
97 Expect.equals(-128, byteArray[2]); 128 Expect.equals(-128, byteArray[2]);
98 byteArray[3] = 127; 129 byteArray[3] = 127;
99 Expect.equals(127, byteArray[3]); 130 Expect.equals(127, byteArray[3]);
100 // This should eventually throw. 131 // This should eventually throw.
101 byteArray[0] = 128; 132 byteArray[0] = 128;
102 byteArray[4] = -129; 133 byteArray[4] = -129;
103 if (check_throws) { 134 if (check_throws) {
104 Expect.throws(() { 135 Expect.throws(() {
105 byteArray[1] = 1.2; 136 byteArray[1] = 1.2;
106 }); 137 });
107 } 138 }
108 } 139 }
109 140
110
111 void testSetRangeHelper(byteArray) { 141 void testSetRangeHelper(byteArray) {
112 List<int> list = [10, 11, 12]; 142 List<int> list = [10, 11, 12];
113 byteArray.setRange(0, 3, list); 143 byteArray.setRange(0, 3, list);
114 for (int i = 0; i < 3; i++) { 144 for (int i = 0; i < 3; i++) {
115 Expect.equals(10 + i, byteArray[i]); 145 Expect.equals(10 + i, byteArray[i]);
116 } 146 }
117 147
118 byteArray[0] = 20; 148 byteArray[0] = 20;
119 byteArray[1] = 21; 149 byteArray[1] = 21;
120 byteArray[2] = 22; 150 byteArray[2] = 22;
121 list.setRange(0, 3, byteArray); 151 list.setRange(0, 3, byteArray);
122 for (int i = 0; i < 3; i++) { 152 for (int i = 0; i < 3; i++) {
123 Expect.equals(20 + i, list[i]); 153 Expect.equals(20 + i, list[i]);
124 } 154 }
125 155
126 byteArray.setRange(1, 2, const [8, 9]); 156 byteArray.setRange(1, 2, const [8, 9]);
127 Expect.equals(20, byteArray[0]); 157 Expect.equals(20, byteArray[0]);
128 Expect.equals(8, byteArray[1]); 158 Expect.equals(8, byteArray[1]);
129 Expect.equals(9, byteArray[2]); 159 Expect.equals(9, byteArray[2]);
130 } 160 }
131 161
132
133 void testSetRange() { 162 void testSetRange() {
134 testSetRangeHelper(new Uint8List(3)); 163 testSetRangeHelper(new Uint8List(3));
164 testSetRangeHelper(new Uint8List.transferable(3));
135 testSetRangeHelper(new Uint8ClampedList(3)); 165 testSetRangeHelper(new Uint8ClampedList(3));
166 testSetRangeHelper(new Uint8ClampedList.transferable(3));
136 } 167 }
137 168
138 void testIndexOutOfRangeHelper(byteArray) { 169 void testIndexOutOfRangeHelper(byteArray) {
139 List<int> list = const [0, 1, 2, 3]; 170 List<int> list = const [0, 1, 2, 3];
140 171
141 Expect.throws(() { 172 Expect.throws(() {
142 byteArray.setRange(0, 4, list); 173 byteArray.setRange(0, 4, list);
143 }); 174 });
144 175
145 Expect.throws(() { 176 Expect.throws(() {
146 byteArray.setRange(3, 1, list); 177 byteArray.setRange(3, 1, list);
147 }); 178 });
148 } 179 }
149 180
150 void testIndexOutOfRange() { 181 void testIndexOutOfRange() {
151 testIndexOutOfRangeHelper(new Uint8List(3)); 182 testIndexOutOfRangeHelper(new Uint8List(3));
183 testIndexOutOfRangeHelper(new Uint8List.transferable(3));
152 testIndexOutOfRangeHelper(new Uint8ClampedList(3)); 184 testIndexOutOfRangeHelper(new Uint8ClampedList(3));
185 testIndexOutOfRangeHelper(new Uint8ClampedList.transferable(3));
153 } 186 }
154 187
155 void testIndexOfHelper(list) { 188 void testIndexOfHelper(list) {
156 for (int i = 0; i < list.length; i++) { 189 for (int i = 0; i < list.length; i++) {
157 list[i] = i + 10; 190 list[i] = i + 10;
158 } 191 }
159 Expect.equals(0, list.indexOf(10)); 192 Expect.equals(0, list.indexOf(10));
160 Expect.equals(5, list.indexOf(15)); 193 Expect.equals(5, list.indexOf(15));
161 Expect.equals(9, list.indexOf(19)); 194 Expect.equals(9, list.indexOf(19));
162 Expect.equals(-1, list.indexOf(20)); 195 Expect.equals(-1, list.indexOf(20));
163 196
164 list = new Float32List(10); 197 list = new Float32List(10);
165 for (int i = 0; i < list.length; i++) { 198 for (int i = 0; i < list.length; i++) {
166 list[i] = i + 10.0; 199 list[i] = i + 10.0;
167 } 200 }
168 Expect.equals(0, list.indexOf(10.0)); 201 Expect.equals(0, list.indexOf(10.0));
169 Expect.equals(5, list.indexOf(15.0)); 202 Expect.equals(5, list.indexOf(15.0));
170 Expect.equals(9, list.indexOf(19.0)); 203 Expect.equals(9, list.indexOf(19.0));
171 Expect.equals(-1, list.indexOf(20.0)); 204 Expect.equals(-1, list.indexOf(20.0));
172 } 205 }
173 206
174 void testIndexOf() { 207 void testIndexOf() {
175 testIndexOfHelper(new Uint8List(10)); 208 testIndexOfHelper(new Uint8List(10));
209 testIndexOfHelper(new Uint8List.transferable(10));
176 testIndexOfHelper(new Uint8ClampedList(10)); 210 testIndexOfHelper(new Uint8ClampedList(10));
211 testIndexOfHelper(new Uint8ClampedList.transferable(10));
177 } 212 }
178 213
179 void testSubArrayHelper(list) { 214 void testSubArrayHelper(list) {
180 var array = list.asByteArray(); 215 var array = list.asByteArray();
181 Expect.equals(0, array.subByteArray(0, 0).lengthInBytes()); 216 Expect.equals(0, array.subByteArray(0, 0).lengthInBytes());
182 Expect.equals(0, array.subByteArray(5, 0).lengthInBytes()); 217 Expect.equals(0, array.subByteArray(5, 0).lengthInBytes());
183 Expect.equals(0, array.subByteArray(10, 0).lengthInBytes()); 218 Expect.equals(0, array.subByteArray(10, 0).lengthInBytes());
184 Expect.equals(0, array.subByteArray(10).lengthInBytes()); 219 Expect.equals(0, array.subByteArray(10).lengthInBytes());
185 Expect.equals(0, array.subByteArray(10, null).lengthInBytes()); 220 Expect.equals(0, array.subByteArray(10, null).lengthInBytes());
186 Expect.equals(5, array.subByteArray(0, 5).lengthInBytes()); 221 Expect.equals(5, array.subByteArray(0, 5).lengthInBytes());
(...skipping 25 matching lines...) Expand all
212 Expect.throws(() => array.subByteArray(0, "5"), (e) => e is ArgumentError); 247 Expect.throws(() => array.subByteArray(0, "5"), (e) => e is ArgumentError);
213 Expect.throws(() => array.subByteArray("0", 5), (e) => e is ArgumentError); 248 Expect.throws(() => array.subByteArray("0", 5), (e) => e is ArgumentError);
214 Expect.throws(() => array.subByteArray("0"), (e) => e is ArgumentError); 249 Expect.throws(() => array.subByteArray("0"), (e) => e is ArgumentError);
215 } 250 }
216 Expect.throws(() => array.subByteArray(null), (e) => e is ArgumentError); 251 Expect.throws(() => array.subByteArray(null), (e) => e is ArgumentError);
217 } 252 }
218 253
219 254
220 void testSubArray() { 255 void testSubArray() {
221 testSubArrayHelper(new Uint8List(10)); 256 testSubArrayHelper(new Uint8List(10));
257 testSubArrayHelper(new Uint8List.transferable(10));
222 testSubArrayHelper(new Uint8ClampedList(10)); 258 testSubArrayHelper(new Uint8ClampedList(10));
259 testSubArrayHelper(new Uint8ClampedList.transferable(10));
223 } 260 }
224 261
225 main() { 262 main() {
226 for (int i = 0; i < 2000; i++) { 263 for (int i = 0; i < 2000; i++) {
227 testCreateUint8ByteArray(); 264 testCreateUint8ByteArray();
228 testCreateClampedUint8ByteArray(); 265 testCreateClampedUint8ByteArray();
266 testCreateExternalClampedUint8ByteArray();
229 testByteArrayRange(false); 267 testByteArrayRange(false);
230 testUnsignedByteArrayRange(false); 268 testUnsignedByteArrayRange(false);
231 testClampedUnsignedByteArrayRange(false); 269 testClampedUnsignedByteArrayRange(false);
270 testExternalClampedUnsignedByteArrayRange(false);
232 testSetRange(); 271 testSetRange();
233 testIndexOutOfRange(); 272 testIndexOutOfRange();
234 testIndexOf(); 273 testIndexOf();
235 testSubArray(); 274 testSubArray();
236 } 275 }
237 testByteArrayRange(true); 276 testByteArrayRange(true);
238 testUnsignedByteArrayRange(true); 277 testUnsignedByteArrayRange(true);
278 testExternalClampedUnsignedByteArrayRange(true);
239 } 279 }
240 280
OLDNEW
« runtime/include/dart_api.h ('K') | « runtime/vm/dart_api_impl_test.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698