blob: 96e88bc237dcc78f845cb759a609798fe5b44abb [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.
// Tests that the VM does not crash on weird corner cases of class Math.
// VMOptions=--optimization_counter_threshold=100
library math_vm_test;
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));
}
main() {
for (int i = 0; i < 200; i++) {
MathTest.testMain();
testDoublePow();
}
}