mirror of
https://github.com/dart-lang/sdk
synced 2024-09-18 20:01:19 +00:00
a211134136
Also, --limit-ints-to-64-bits is enabled when running tests in _2 test
suites.
This is the re-landing of 92ebd8aefa
with
fixes:
* Revert changes in pkg/dev_compiler/test/browser/language_tests.js
and tests/language/language_dart2js.status as they describe
'language' test suite, not 'language_2'
* Correct tests/standalone_2/io/fuzz_support.dart as file_fuzz test was
timing out on Windows and failing on android/arm.
Closes https://github.com/dart-lang/sdk/issues/31396
Change-Id: If9ca77fca300ddc605f17a7be39d1707e9724e25
Reviewed-on: https://dart-review.googlesource.com/21700
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
67 lines
2.8 KiB
Dart
67 lines
2.8 KiB
Dart
// Copyright (c) 2011, 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.
|
|
|
|
// Testing integers with and without intrinsics.
|
|
// VMOptions=
|
|
// VMOptions=--no_intrinsify
|
|
|
|
library integer_arithmetic_test;
|
|
|
|
import "package:expect/expect.dart";
|
|
|
|
divRemParsed(String a, String b, String quotient, String remainder) {
|
|
int int_a = int.parse(a);
|
|
int int_b = int.parse(b);
|
|
int int_quotient = int.parse(quotient);
|
|
int int_remainder = int.parse(remainder);
|
|
int computed_quotient = int_a ~/ int_b;
|
|
Expect.equals(int_quotient, computed_quotient);
|
|
String str_quotient = computed_quotient >= 0
|
|
? "0x${computed_quotient.toRadixString(16)}"
|
|
: "-0x${computed_quotient.toRadixString(16).substring(1)}";
|
|
Expect.equals(quotient.toLowerCase(), str_quotient);
|
|
int computed_remainder = int_a.remainder(int_b);
|
|
Expect.equals(int_remainder, computed_remainder);
|
|
String str_remainder = computed_remainder >= 0
|
|
? "0x${computed_remainder.toRadixString(16)}"
|
|
: "-0x${computed_remainder.toRadixString(16).substring(1)}";
|
|
Expect.equals(remainder.toLowerCase(), str_remainder);
|
|
}
|
|
|
|
testDivideRemainder() {
|
|
String zero = "0x0";
|
|
String one = "0x1";
|
|
String minus_one = "-0x1";
|
|
|
|
divRemParsed(one, one, one, zero);
|
|
divRemParsed(zero, one, zero, zero);
|
|
divRemParsed(minus_one, one, minus_one, zero);
|
|
divRemParsed(one, "0x2", zero, one);
|
|
divRemParsed(minus_one, "0x7", zero, minus_one);
|
|
divRemParsed("0xB", "0x7", one, "0x4");
|
|
divRemParsed("0x12345678", "0x7", "0x299C335", "0x5");
|
|
divRemParsed("-0x12345678", "0x7", "-0x299C335", "-0x5");
|
|
divRemParsed("0x12345678", "-0x7", "-0x299C335", "0x5");
|
|
divRemParsed("-0x12345678", "-0x7", "0x299C335", "-0x5");
|
|
divRemParsed("0x7", "0x12345678", zero, "0x7");
|
|
divRemParsed("-0x7", "0x12345678", zero, "-0x7");
|
|
divRemParsed("-0x7", "-0x12345678", zero, "-0x7");
|
|
divRemParsed("0x7", "-0x12345678", zero, "0x7");
|
|
divRemParsed("0x12345678", "0x7", "0x299C335", "0x5");
|
|
divRemParsed("-0x12345678", "0x7", "-0x299C335", "-0x5");
|
|
divRemParsed("0x12345678", "-0x7", "-0x299C335", "0x5");
|
|
divRemParsed("-0x12345678", "-0x7", "0x299C335", "-0x5");
|
|
divRemParsed("9223372036854775807", "0x7", "0x1249249249249249", "0x0");
|
|
divRemParsed("9223372036854775807", "-0x7", "-0x1249249249249249", "0x0");
|
|
divRemParsed("-9223372036854775807", "0x7", "-0x1249249249249249", "0x0");
|
|
divRemParsed("-9223372036854775807", "-0x7", "0x1249249249249249", "0x0");
|
|
divRemParsed("-9223372036854775808", "-1", "-0x8000000000000000", "0x0"); //# 01: ok
|
|
divRemParsed("-9223372036854775808", "0x7", "-0x1249249249249249", "-0x1");
|
|
divRemParsed("-9223372036854775808", "-0x7", "0x1249249249249249", "-0x1");
|
|
}
|
|
|
|
main() {
|
|
testDivideRemainder();
|
|
}
|