blob: c624c6202dcfcb64189016194d2f34337dbf7c71 [file] [log] [blame]
// Copyright (c) 2012, 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.
import 'dart:html';
import 'dart:typed_data';
import 'package:expect/minitest.dart';
main() {
var isList = predicate((x) => x is List, 'is a List');
var isNumList = predicate((x) => x is List<num>, 'is a List<num>');
var isNotStringList =
predicate((x) => x is! List<String>, 'is not a List<String>');
var expectation = Platform.supportsTypedData ? returnsNormally : throws;
group('supported', () {
test('supported', () {
expect(Platform.supportsTypedData, true);
});
});
group('arrays', () {
test('createByLengthTest', () {
expect(() {
var a = new Float32List(10);
expect(a.length, 10);
expect(a.lengthInBytes, 40);
expect(a[4], 0);
}, expectation);
});
test('aliasTest', () {
expect(() {
var a1 = new Uint8List.fromList([0, 0, 1, 0x45]);
var a2 = new Float32List.view(a1.buffer);
expect(a1.lengthInBytes, a2.lengthInBytes);
expect(a2.length, 1);
// 0x45010000 = 2048+16
expect(a2[0], 2048 + 16);
a1[2] = 0;
// 0x45000000 = 2048
expect(a2[0], 2048);
a1[3]--;
a1[2] += 128;
// 0x44800000 = 1024
expect(a2[0], 1024);
}, expectation);
});
// Generic type checking is not available in dart2js, so use this check to
// see if we should check for it.
var supportsTypeTest = !(new List<String>.empty() is List<int>);
if (supportsTypeTest) {
test('typeTests', () {
expect(() {
var a = new Float32List(10);
expect(a, isList);
expect(a, isNumList);
expect(a, isNotStringList);
}, expectation);
});
}
});
}