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

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

Issue 14332002: Add endian parameter to the get/set functions in ByteData. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 8 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
OLDNEW
(Empty)
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
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.
4 //
5 // Dart test program for testing typed data.
6
7 // Library tag to be able to run in html test framework.
8 library ByteDataTest;
9
10 import "package:expect/expect.dart";
11 import 'dart:typeddata';
12
13 testGetters() {
14 bool host_is_little_endian =
15 (new Uint8List.view(new Uint16List.fromList([1]).buffer))[0] == 1;
16
17 var list = new Uint8List(8);
18 list[0] = 0xf1;
19 list[1] = 0xf2;
20 list[2] = 0xf3;
21 list[3] = 0xf4;
22 list[4] = 0xf5;
23 list[5] = 0xf6;
24 list[6] = 0xf7;
25 list[7] = 0xf8;
26 var ba = list.buffer;
27
28 ByteData bd = new ByteData.view(ba);
29 int value;
30 int expected_value_be = -3598;
31 int expected_value_le = -3343;
32
33 value = bd.getInt16(0); // Default is big endian access.
34 Expect.equals(expected_value_be, value);
35 value = bd.getInt16(0, Endianness.BIG_ENDIAN);
36 Expect.equals(expected_value_be, value);
37 value = bd.getInt16(0, Endianness.LITTLE_ENDIAN);
38 Expect.equals(expected_value_le, value);
39 value = bd.getInt16(0, Endianness.HOST_ENDIAN);
40 if (host_is_little_endian) {
41 Expect.isTrue(Endianness.HOST_ENDIAN === Endianness.LITTLE_ENDIAN);
42 Expect.equals(expected_value_le, value);
43 } else {
44 Expect.isTrue(Endianness.HOST_ENDIAN === Endianness.BIG_ENDIAN);
45 Expect.equals(expected_value_be, value);
46 }
47
48 value = bd.getUint16(0); // Default is big endian access.
49 Expect.equals(0xf1f2, value);
50 value = bd.getUint16(0, Endianness.BIG_ENDIAN);
51 Expect.equals(0xf1f2, value);
52 value = bd.getUint16(0, Endianness.LITTLE_ENDIAN);
53 Expect.equals(0xf2f1, value);
54 if (host_is_little_endian) {
55 Expect.isTrue(Endianness.HOST_ENDIAN === Endianness.LITTLE_ENDIAN);
56 Expect.equals(0xf2f1, value);
57 } else {
58 Expect.isTrue(Endianness.HOST_ENDIAN === Endianness.BIG_ENDIAN);
59 Expect.equals(0xf1f2, value);
60 }
61
62 expected_value_be = -235736076;
63 expected_value_le = -185339151;
64
65 value = bd.getInt32(0); // Default is big endian access.
66 Expect.equals(expected_value_be, value);
67 value = bd.getInt32(0, Endianness.BIG_ENDIAN);
68 Expect.equals(expected_value_be, value);
69 value = bd.getInt32(0, Endianness.LITTLE_ENDIAN);
70 Expect.equals(expected_value_le, value);
71 if (host_is_little_endian) {
72 Expect.isTrue(Endianness.HOST_ENDIAN === Endianness.LITTLE_ENDIAN);
73 Expect.equals(expected_value_le, value);
74 } else {
75 Expect.isTrue(Endianness.HOST_ENDIAN === Endianness.BIG_ENDIAN);
76 Expect.equals(expected_value_be, value);
77 }
78
79 value = bd.getUint32(0); // Default is big endian access.
80 Expect.equals(0xf1f2f3f4, value);
81 value = bd.getUint32(0, Endianness.BIG_ENDIAN);
82 Expect.equals(0xf1f2f3f4, value);
83 value = bd.getUint32(0, Endianness.LITTLE_ENDIAN);
84 Expect.equals(0xf4f3f2f1, value);
85 if (host_is_little_endian) {
86 Expect.isTrue(Endianness.HOST_ENDIAN === Endianness.LITTLE_ENDIAN);
87 Expect.equals(0xf4f3f2f1, value);
88 } else {
89 Expect.isTrue(Endianness.HOST_ENDIAN === Endianness.BIG_ENDIAN);
90 Expect.equals(0xf1f2f3f4, value);
91 }
92
93 expected_value_be = -1012478732780767240;
94 expected_value_le = -506664896818842895;
95
96 value = bd.getInt64(0); // Default is big endian access.
97 Expect.equals(expected_value_be, value);
98 value = bd.getInt64(0, Endianness.BIG_ENDIAN);
99 Expect.equals(expected_value_be, value);
100 value = bd.getInt64(0, Endianness.LITTLE_ENDIAN);
101 Expect.equals(expected_value_le, value);
102 if (Endianness.HOST_ENDIAN === Endianness.LITTLE_ENDIAN) {
103 Expect.isTrue(Endianness.HOST_ENDIAN === Endianness.LITTLE_ENDIAN);
104 Expect.equals(expected_value_le, value);
105 } else {
106 Expect.isTrue(Endianness.HOST_ENDIAN === Endianness.BIG_ENDIAN);
107 Expect.equals(expected_value_be, value);
108 }
109
110 value = bd.getUint64(0); // Default is big endian access.
111 Expect.equals(0xf1f2f3f4f5f6f7f8, value);
112 value = bd.getUint64(0, Endianness.BIG_ENDIAN);
113 Expect.equals(0xf1f2f3f4f5f6f7f8, value);
114 value = bd.getUint64(0, Endianness.LITTLE_ENDIAN);
115 Expect.equals(0xf8f7f6f5f4f3f2f1, value);
116 if (host_is_little_endian) {
117 Expect.isTrue(Endianness.HOST_ENDIAN === Endianness.LITTLE_ENDIAN);
118 Expect.equals(0xf8f7f6f5f4f3f2f1, value);
119 } else {
120 Expect.isTrue(Endianness.HOST_ENDIAN === Endianness.BIG_ENDIAN);
121 Expect.equals(0xf1f2f3f4f5f6f7f8, value);
122 }
123
124 double expected_be_value = -2.4060893954673178e+30;
125 double expected_le_value = -1.5462104171572421e+32;
126 value = bd.getFloat32(0); // Default is big endian access.
127 Expect.equals(expected_be_value, value);
128 value = bd.getFloat32(0, Endianness.BIG_ENDIAN);
129 Expect.equals(expected_be_value, value);
130 value = bd.getFloat32(0, Endianness.LITTLE_ENDIAN);
131 Expect.equals(expected_le_value, value);
132 if (host_is_little_endian) {
133 Expect.isTrue(Endianness.HOST_ENDIAN === Endianness.LITTLE_ENDIAN);
134 Expect.equals(expected_le_value, value);
135 } else {
136 Expect.isTrue(Endianness.HOST_ENDIAN === Endianness.BIG_ENDIAN);
137 Expect.equals(expected_be_value, value);
138 }
139
140
141 expected_be_value = -7.898661740976602e+240;
142 expected_le_value = -5.185705956736366e+274;
143 value = bd.getFloat64(0); // Default is big endian access.
144 Expect.equals(expected_be_value, value);
145 value = bd.getFloat64(0, Endianness.BIG_ENDIAN);
146 Expect.equals(expected_be_value, value);
147 value = bd.getFloat64(0, Endianness.LITTLE_ENDIAN);
148 Expect.equals(expected_le_value, value);
149 if (host_is_little_endian) {
150 Expect.isTrue(Endianness.HOST_ENDIAN === Endianness.LITTLE_ENDIAN);
151 Expect.equals(expected_le_value, value);
152 } else {
153 Expect.isTrue(Endianness.HOST_ENDIAN === Endianness.BIG_ENDIAN);
154 Expect.equals(expected_be_value, value);
155 }
156 }
157
158
159 validate16be(var list) {
160 Expect.equals(0xf1, list[0]);
161 Expect.equals(0xf2, list[1]);
162 }
163
164
165 validate16le(var list) {
166 Expect.equals(0xf2, list[0]);
167 Expect.equals(0xf1, list[1]);
168 }
169
170
171 validate32be(var list) {
172 Expect.equals(0xf1, list[0]);
173 Expect.equals(0xf2, list[1]);
174 Expect.equals(0xf3, list[2]);
175 Expect.equals(0xf4, list[3]);
176 }
177
178
179 validate32le(var list) {
180 Expect.equals(0xf4, list[0]);
181 Expect.equals(0xf3, list[1]);
182 Expect.equals(0xf2, list[2]);
183 Expect.equals(0xf1, list[3]);
184 }
185
186
187 validate64be(var list) {
188 Expect.equals(0xf1, list[0]);
189 Expect.equals(0xf2, list[1]);
190 Expect.equals(0xf3, list[2]);
191 Expect.equals(0xf4, list[3]);
192 Expect.equals(0xf5, list[4]);
193 Expect.equals(0xf6, list[5]);
194 Expect.equals(0xf7, list[6]);
195 Expect.equals(0xf8, list[7]);
196 }
197
198
199 validate64le(var list) {
200 Expect.equals(0xf8, list[0]);
201 Expect.equals(0xf7, list[1]);
202 Expect.equals(0xf6, list[2]);
203 Expect.equals(0xf5, list[3]);
204 Expect.equals(0xf4, list[4]);
205 Expect.equals(0xf3, list[5]);
206 Expect.equals(0xf2, list[6]);
207 Expect.equals(0xf1, list[7]);
208 }
209
210
211 testSetters() {
212 bool host_is_little_endian =
213 (new Uint8List.view(new Uint16List.fromList([1]).buffer))[0] == 1;
214
215 var list = new Uint8List(8);
216 for (int i = 0; i < list.length; i++) {
217 list[i] = 0;
218 }
219 var ba = list.buffer;
220 ByteData bd = new ByteData.view(ba);
221
222 bd.setInt16(0, 0xf1f2); // Default is big endian access.
223 validate16be(list);
224 bd.setInt16(0, 0xf1f2, Endianness.BIG_ENDIAN);
225 validate16be(list);
226 bd.setInt16(0, 0xf1f2, Endianness.LITTLE_ENDIAN);
227 validate16le(list);
228 bd.setInt16(0, 0xf1f2, Endianness.HOST_ENDIAN);
229 if (host_is_little_endian) {
230 Expect.isTrue(Endianness.HOST_ENDIAN === Endianness.LITTLE_ENDIAN);
231 validate16le(list);
232 } else {
233 Expect.isTrue(Endianness.HOST_ENDIAN === Endianness.BIG_ENDIAN);
234 validate16be(list);
235 }
236
237 bd.setUint16(0, 0xf1f2); // Default is big endian access.
238 validate16be(list);
239 bd.setUint16(0, 0xf1f2, Endianness.BIG_ENDIAN);
240 validate16be(list);
241 bd.setUint16(0, 0xf1f2, Endianness.LITTLE_ENDIAN);
242 validate16le(list);
243 bd.setUint16(0, 0xf1f2, Endianness.HOST_ENDIAN);
244 if (host_is_little_endian) {
245 Expect.isTrue(Endianness.HOST_ENDIAN === Endianness.LITTLE_ENDIAN);
246 validate16le(list);
247 } else {
248 Expect.isTrue(Endianness.HOST_ENDIAN === Endianness.BIG_ENDIAN);
249 validate16be(list);
250 }
251
252 bd.setInt32(0, 0xf1f2f3f4); // Default is big endian access.
253 validate32be(list);
254 bd.setInt32(0, 0xf1f2f3f4, Endianness.BIG_ENDIAN);
255 validate32be(list);
256 bd.setInt32(0, 0xf1f2f3f4, Endianness.LITTLE_ENDIAN);
257 validate32le(list);
258 bd.setInt32(0, 0xf1f2f3f4, Endianness.HOST_ENDIAN);
259 if (host_is_little_endian) {
260 Expect.isTrue(Endianness.HOST_ENDIAN === Endianness.LITTLE_ENDIAN);
261 validate32le(list);
262 } else {
263 Expect.isTrue(Endianness.HOST_ENDIAN === Endianness.BIG_ENDIAN);
264 validate32be(list);
265 }
266
267 bd.setUint32(0, 0xf1f2f3f4); // Default is big endian access.
268 validate32be(list);
269 bd.setUint32(0, 0xf1f2f3f4, Endianness.BIG_ENDIAN);
270 validate32be(list);
271 bd.setUint32(0, 0xf1f2f3f4, Endianness.LITTLE_ENDIAN);
272 validate32le(list);
273 bd.setUint32(0, 0xf1f2f3f4, Endianness.HOST_ENDIAN);
274 if (host_is_little_endian) {
275 Expect.isTrue(Endianness.HOST_ENDIAN === Endianness.LITTLE_ENDIAN);
276 validate32le(list);
277 } else {
278 Expect.isTrue(Endianness.HOST_ENDIAN === Endianness.BIG_ENDIAN);
279 validate32be(list);
280 }
281
282 bd.setInt64(0, 0xf1f2f3f4f5f6f7f8); // Default is big endian access.
283 validate64be(list);
284 bd.setInt64(0, 0xf1f2f3f4f5f6f7f8, Endianness.BIG_ENDIAN);
285 validate64be(list);
286 bd.setInt64(0, 0xf1f2f3f4f5f6f7f8, Endianness.LITTLE_ENDIAN);
287 validate64le(list);
288 bd.setInt64(0, 0xf1f2f3f4f5f6f7f8, Endianness.HOST_ENDIAN);
289 if (host_is_little_endian) {
290 Expect.isTrue(Endianness.HOST_ENDIAN === Endianness.LITTLE_ENDIAN);
291 validate64le(list);
292 } else {
293 Expect.isTrue(Endianness.HOST_ENDIAN === Endianness.BIG_ENDIAN);
294 validate64be(list);
295 }
296
297 bd.setUint64(0, 0xf1f2f3f4f5f6f7f8); // Default is big endian access.
298 validate64be(list);
299 bd.setUint64(0, 0xf1f2f3f4f5f6f7f8, Endianness.BIG_ENDIAN);
300 validate64be(list);
301 bd.setUint64(0, 0xf1f2f3f4f5f6f7f8, Endianness.LITTLE_ENDIAN);
302 validate64le(list);
303 bd.setUint64(0, 0xf1f2f3f4f5f6f7f8, Endianness.HOST_ENDIAN);
304 if (host_is_little_endian) {
305 Expect.isTrue(Endianness.HOST_ENDIAN === Endianness.LITTLE_ENDIAN);
306 validate64le(list);
307 } else {
308 Expect.isTrue(Endianness.HOST_ENDIAN === Endianness.BIG_ENDIAN);
309 validate64be(list);
310 }
311
312 bd.setFloat32(0, -2.4060893954673178e+30); // Default is big endian access.
313 validate32be(list);
314 bd.setFloat32(0, -2.4060893954673178e+30, Endianness.BIG_ENDIAN);
315 validate32be(list);
316 bd.setFloat32(0, -2.4060893954673178e+30, Endianness.LITTLE_ENDIAN);
317 validate32le(list);
318 bd.setFloat32(0, -2.4060893954673178e+30, Endianness.HOST_ENDIAN);
319 if (host_is_little_endian) {
320 Expect.isTrue(Endianness.HOST_ENDIAN === Endianness.LITTLE_ENDIAN);
321 validate32le(list);
322 } else {
323 Expect.isTrue(Endianness.HOST_ENDIAN === Endianness.BIG_ENDIAN);
324 validate32be(list);
325 }
326
327 bd.setFloat64(0, -7.898661740976602e+240); // Default is big endian access.
328 validate64be(list);
329 bd.setFloat64(0, -7.898661740976602e+240, Endianness.BIG_ENDIAN);
330 validate64be(list);
331 bd.setFloat64(0, -7.898661740976602e+240, Endianness.LITTLE_ENDIAN);
332 validate64le(list);
333 bd.setFloat64(0, -7.898661740976602e+240, Endianness.HOST_ENDIAN);
334 if (host_is_little_endian) {
335 Expect.isTrue(Endianness.HOST_ENDIAN === Endianness.LITTLE_ENDIAN);
336 validate64le(list);
337 } else {
338 Expect.isTrue(Endianness.HOST_ENDIAN === Endianness.BIG_ENDIAN);
339 validate64be(list);
340 }
341
342 }
343
344
345 main() {
346 testGetters();
347 testSetters();
348 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698