mirror of
https://github.com/dart-lang/sdk
synced 2024-09-05 16:41:07 +00:00
![Leaf Petersen](/assets/img/avatar_default.png)
Change-Id: Ib33169c3e0ffc870915c189404074a1dea472546 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/196548 Reviewed-by: Bob Nystrom <rnystrom@google.com> Commit-Queue: Leaf Petersen <leafp@google.com>
142 lines
3.5 KiB
Dart
142 lines
3.5 KiB
Dart
// 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.
|
|
//
|
|
// Dart test program for testing native int arrays.
|
|
|
|
// @dart = 2.9
|
|
|
|
// Library tag to be able to run in html test framework.
|
|
library IntArrayTest;
|
|
|
|
import "package:expect/expect.dart";
|
|
import 'dart:typed_data';
|
|
|
|
void testInt16() {
|
|
Int16List intArray = new Int16List(4);
|
|
intArray[0] = 0;
|
|
intArray[1] = -1;
|
|
intArray[2] = -2;
|
|
intArray[3] = -3;
|
|
for (int i = 0; i < intArray.length; i++) {
|
|
intArray[i]++;
|
|
}
|
|
var x = intArray[0];
|
|
var y = intArray[1];
|
|
var z = intArray[2];
|
|
var w = intArray[3];
|
|
Expect.equals(1, x);
|
|
Expect.equals(0, y);
|
|
Expect.equals(-1, z);
|
|
Expect.equals(-2, w);
|
|
var t = y + 1;
|
|
intArray[0] = t;
|
|
Expect.equals(t, intArray[0]);
|
|
}
|
|
|
|
void testUint16() {
|
|
Uint16List intArray = new Uint16List(4);
|
|
intArray[0] = 0;
|
|
intArray[1] = 1;
|
|
intArray[2] = 2;
|
|
intArray[3] = 3;
|
|
for (int i = 0; i < intArray.length; i++) {
|
|
intArray[i]--;
|
|
}
|
|
var x = intArray[0];
|
|
var y = intArray[1];
|
|
var z = intArray[2];
|
|
var w = intArray[3];
|
|
Expect.equals(65535, x);
|
|
Expect.equals(0, y);
|
|
Expect.equals(1, z);
|
|
Expect.equals(2, w);
|
|
var t = y + 1;
|
|
intArray[0] = t;
|
|
Expect.equals(t, intArray[0]);
|
|
}
|
|
|
|
void testInt32ToSmi() {
|
|
Int32List intArray;
|
|
|
|
intArray = new Int32List(4);
|
|
intArray[0] = 1073741823; // SmiMax
|
|
intArray[1] = -1073741824; // SmiMin
|
|
intArray[2] = 1073741824; // SmiMax+1
|
|
intArray[3] = -1073741825; // SmiMin-1
|
|
var x = intArray[0];
|
|
var y = intArray[1];
|
|
var z = intArray[2];
|
|
var w = intArray[3];
|
|
Expect.equals(1073741823, x);
|
|
Expect.equals(-1073741824, y);
|
|
Expect.equals(1073741824, z);
|
|
Expect.equals(-1073741825, w);
|
|
}
|
|
|
|
void testUint32ToSmi() {
|
|
Uint32List intArray;
|
|
|
|
intArray = new Uint32List(4);
|
|
intArray[0] = 1073741823; // SmiMax
|
|
intArray[1] = -1; // 0xFFFFFFFF : 4294967295
|
|
intArray[2] = 1073741830; // SmiMax+7
|
|
intArray[3] = -1073741825; // 0xbfffffff : 3221225471
|
|
var x = intArray[0];
|
|
var y = intArray[1];
|
|
var z = intArray[2];
|
|
var w = intArray[3];
|
|
Expect.equals(1073741823, x);
|
|
Expect.equals(4294967295, y);
|
|
Expect.equals(1073741830, z);
|
|
Expect.equals(3221225471, w);
|
|
}
|
|
|
|
void testInt64ToSmi() {
|
|
Int64List intArray;
|
|
|
|
intArray = new Int64List(4);
|
|
intArray[0] = 4611686018427387903; // SmiMax
|
|
intArray[1] = -4611686018427387904; // SmiMin
|
|
intArray[2] = 4611686018427387904; // SmiMax+1
|
|
intArray[3] = -4611686018427387905; // SmiMin-1
|
|
var x = intArray[0];
|
|
var y = intArray[1];
|
|
var z = intArray[2];
|
|
var w = intArray[3];
|
|
Expect.equals(4611686018427387903, x);
|
|
Expect.equals(-4611686018427387904, y);
|
|
Expect.equals(4611686018427387904, z);
|
|
Expect.equals(-4611686018427387905, w);
|
|
}
|
|
|
|
void testUint64ToSmi() {
|
|
Uint64List intArray;
|
|
|
|
intArray = new Uint64List(4);
|
|
intArray[0] = 4611686018427387903; // SmiMax
|
|
intArray[1] = -1; // 0xFFFFFFFFFFFFFFFF : 18446744073709551615
|
|
intArray[2] = 4611686018427387904; // SmiMax+1
|
|
intArray[3] = -9223372036854775808;
|
|
var x = intArray[0];
|
|
var y = intArray[1];
|
|
var z = intArray[2];
|
|
var w = intArray[3];
|
|
Expect.equals(4611686018427387903, x);
|
|
Expect.equals(-1, y);
|
|
Expect.equals(4611686018427387904, z);
|
|
Expect.equals(-9223372036854775808, w);
|
|
}
|
|
|
|
main() {
|
|
testUint64ToSmi();
|
|
for (int i = 0; i < 2000; i++) {
|
|
testInt16();
|
|
testUint16();
|
|
testInt32ToSmi();
|
|
testUint32ToSmi();
|
|
testInt64ToSmi();
|
|
testUint64ToSmi();
|
|
}
|
|
}
|