Files
sdk/tests/language/vm/math_vm_test.dart
T
Robert Nystrom 2034061433 Migrate language_2/vm to NNBD.
Change-Id: I313a57ed7c7ea2ada75065f55a7367376f6bdae5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/152183
Commit-Queue: Bob Nystrom <rnystrom@google.com>
Auto-Submit: Bob Nystrom <rnystrom@google.com>
Reviewed-by: Srujan Gaddam <srujzs@google.com>
2020-06-25 20:39:23 +00:00

62 lines
1.3 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.
// Tests that the VM does not crash on weird corner cases of class Math.
// VMOptions=--optimization_counter_threshold=100 --no-background_compilation
library math_vm_test;
import "package:expect/expect.dart";
import 'dart:math';
class FakeNumber {
const FakeNumber();
void toDouble() {}
}
class MathTest {
static bool testParseInt(x) {
try {
int.parse(x); // Expects string.
return true;
} catch (e) {
return false;
}
}
static bool testSqrt(x) {
try {
sqrt(x); // Expects number.
return true;
} catch (e) {
return false;
}
}
static void testMain() {
Expect.equals(false, testParseInt(5));
Expect.equals(false, testSqrt(const FakeNumber()));
}
}
testDoublePow() {
Expect.equals((1 << 32).toDouble(), pow(2.0, 32));
}
testSinCos(a) {
double sVal = sin(a);
double cVal = cos(a);
return sVal + cVal;
}
main() {
const double value = 1.54;
final firstRes = testSinCos(value);
for (int i = 0; i < 200; i++) {
MathTest.testMain();
testDoublePow();
testSinCos(value);
}
Expect.equals(firstRes, testSinCos(value));
}