| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| // |
| // Dart test program for testing typed data. |
| |
| // Library tag to be able to run in html test framework. |
| library TypedDataTest; |
| |
| import "package:expect/expect.dart"; |
| import 'dart:typed_data'; |
| |
| validate(List list, num expected) { |
| for (int i = 0; i < list.length; i++) { |
| Expect.equals(expected, list[i]); |
| } |
| } |
| |
| testView() { |
| var list = new Int8List(128); |
| for (var i = 0; i < list.length; i++) { |
| list[i] = 42; |
| } |
| var ba = list.buffer; |
| |
| var slist = new Int16List.view(ba, 0, 32); |
| validate(slist, 10794); |
| var uslist = new Uint16List.view(ba, 0, 32); |
| validate(uslist, 10794); |
| |
| var ilist = new Int32List.view(ba, 0, 16); |
| validate(ilist, 707406378); |
| var uilist = new Uint32List.view(ba, 0, 16); |
| validate(uilist, 707406378); |
| |
| var llist = new Int64List.view(ba, 0, 8); |
| validate(llist, 3038287259199220266); |
| var ullist = new Uint64List.view(ba, 0, 8); |
| validate(ullist, 3038287259199220266); |
| |
| var flist = new Float32List.view(ba, 0, 16); |
| validate(flist, 1.511366173271439e-13); |
| var dlist = new Float64List.view(ba, 0, 8); |
| validate(dlist, 1.4260258159703532e-105); |
| } |
| |
| testSetters() { |
| var blist = new ByteData(128); |
| blist.setInt8(0, 0xffff); |
| Expect.equals(-1, blist.getInt8(0)); |
| blist.setUint8(0, 0xffff); |
| Expect.equals(0xff, blist.getUint8(0)); |
| blist.setInt16(0, 0xffffffff); |
| Expect.equals(-1, blist.getInt16(0, Endian.little)); |
| blist.setUint16(0, 0xffffffff, Endian.little); |
| Expect.equals(0xffff, blist.getUint16(0, Endian.little)); |
| blist.setInt32(0, 0xffffffffffff, Endian.little); |
| Expect.equals(-1, blist.getInt32(0, Endian.little)); |
| blist.setUint32(0, 0xffffffffffff, Endian.little); |
| Expect.equals(0xffffffff, blist.getUint32(0, Endian.little)); |
| blist.setInt64(0, 0xffffffffffffffff, Endian.little); |
| Expect.equals(-1, blist.getInt64(0, Endian.little)); |
| blist.setUint64(0, 0xffffffffffffffff, Endian.little); |
| Expect.equals(0xffffffffffffffff, blist.getUint64(0, Endian.little)); |
| blist.setInt32(0, 0xaabbccddfffffffe, Endian.little); |
| Expect.equals(-2, blist.getInt32(0, Endian.little)); |
| blist.setUint32(0, 0xaabbccddfffffffe, Endian.little); |
| Expect.equals(0xfffffffe, blist.getUint32(0, Endian.little)); |
| blist.setInt64(0, 0xfffffffffffffffe, Endian.little); |
| Expect.equals(-2, blist.getInt64(0, Endian.little)); |
| blist.setUint64(0, 0xfffffffffffffffe, Endian.little); |
| Expect.equals(0xfffffffffffffffe, blist.getUint64(0, Endian.little)); |
| |
| blist.setFloat32(0, 18446744073709551614.0, Endian.little); |
| Expect.equals(18446744073709551614.0, blist.getFloat32(0, Endian.little)); |
| blist.setFloat64(0, 18446744073709551614.0, Endian.little); |
| Expect.equals(18446744073709551614.0, blist.getFloat64(0, Endian.little)); |
| } |
| |
| main() { |
| testView(); |
| testSetters(); |
| } |