dart-sdk/tests/standalone_2/float_array_static_test.dart
Robert Nystrom 105a0f30d6 Migrate standalone tests off @compile-error.
The "@compile-error" comment is an old not-great way of defining static
error tests.

Note that the behavior of the code under test here had changed
significantly, but the test didn't catch it at all because
"@compile-error" is too coarse-grained.

See: https://github.com/dart-lang/sdk/issues/45634
Change-Id: I4b6c4e1fd36770e13f7b5ca100b42b0b8b2983ae
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/296121
Commit-Queue: Jake Macdonald <jakemac@google.com>
Reviewed-by: Jake Macdonald <jakemac@google.com>
Auto-Submit: Bob Nystrom <rnystrom@google.com>
2023-04-19 14:17:39 +00:00

70 lines
2.1 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 float arrays.
// @dart = 2.9
// VMOptions=--optimization_counter_threshold=10 --no-background_compilation
// Library tag to be able to run in html test framework.
library FloatArrayTest;
import "package:expect/expect.dart";
import 'dart:typed_data';
void testIndexOf32() {
var list = new Float32List(10);
for (int i = 0; i < list.length; i++) {
list[i] = i + 10.0;
}
// These used to be type errors when passing integers to indexOf() which
// expects a double, but are no longer an error because of int-to-double.
Expect.equals(0, list.indexOf(10));
Expect.equals(5, list.indexOf(15));
Expect.equals(9, list.indexOf(19));
Expect.equals(-1, list.indexOf(20));
}
void testBadValues32() {
var list = new Float32List(10);
list[0] = 2.0;
list[0] = 2; // Not an error because of int-to-double.
list[0] = "hello";
// ^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.INVALID_ASSIGNMENT
// [cfe] A value of type 'String' can't be assigned to a variable of type 'double'.
}
void testIndexOf64() {
var list = new Float64List(10);
for (int i = 0; i < list.length; i++) {
list[i] = i + 10.0;
}
// These used to be type errors when passing integers to indexOf() which
// expects a double, but are no longer an error because of int-to-double.
Expect.equals(0, list.indexOf(10));
Expect.equals(5, list.indexOf(15));
Expect.equals(9, list.indexOf(19));
Expect.equals(-1, list.indexOf(20));
}
void testBadValues64() {
var list = new Float64List(10);
list[0] = 2.0;
list[0] = 2; // Not an error because of int-to-double.
list[0] = "hello";
// ^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.INVALID_ASSIGNMENT
// [cfe] A value of type 'String' can't be assigned to a variable of type 'double'.
}
main() {
testIndexOf32();
testIndexOf64();
testBadValues32();
testBadValues64();
}