Index: tests/corelib/int_modulo_arith_test.dart |
diff --git a/tests/corelib/int_modulo_arith_test.dart b/tests/corelib/int_modulo_arith_test.dart |
index 9b696f36d3770a5f1fe1550f0c454a8153ee7dbf..7ba4d0b046f965c158778967d3c033c73e10b8c6 100644 |
--- a/tests/corelib/int_modulo_arith_test.dart |
+++ b/tests/corelib/int_modulo_arith_test.dart |
@@ -7,14 +7,14 @@ import "package:expect/expect.dart"; |
import "dart:math" show pow; |
var smallNumber = 1234567890; // is 31-bit integer. |
-var mediumNumber = 1234567890123456; // is 53-bit integer |
-var bigNumber = 590295810358705600000; // is > 64-bit integer, exact as double. |
+var mediumNumber = 1234567890123456; // is 53-bit integer |
+var bigNumber = 590295810358705600000; // is > 64-bit integer, exact as double. |
testModPow() { |
test(x, e, m, expectedResult) { |
// Check that expected result is correct, using an unoptimized version. |
assert(() { |
- if (1 is double) return true; // Don't have bignums. |
+ if (1 is double) return true; // Don't have bignums. |
slowModPow(x, e, m) { |
var r = 1; |
while (e > 0) { |
@@ -24,6 +24,7 @@ testModPow() { |
} |
return r; |
} |
+ |
return slowModPow(x, e, m) == expectedResult; |
}); |
var result = x.modPow(e, m); |
@@ -45,31 +46,18 @@ testModPow() { |
test(10000000000000000001, 12345678901234567890, 19, 1); |
test(12345678901234567890, 19, 10000000000000000001, 3239137215315834625); |
test(12345678901234567890, 10000000000000000001, 19, 2); |
- test(123456789012345678901234567890, |
- 123456789012345678901234567891, |
- 123456789012345678901234567899, |
- 116401406051033429924651549616); |
- test(123456789012345678901234567890, |
- 123456789012345678901234567899, |
- 123456789012345678901234567891, |
- 123456789012345678901234567890); |
- test(123456789012345678901234567899, |
- 123456789012345678901234567890, |
- 123456789012345678901234567891, |
- 35088523091000351053091545070); |
- test(123456789012345678901234567899, |
- 123456789012345678901234567891, |
- 123456789012345678901234567890, |
- 18310047270234132455316941949); |
- test(123456789012345678901234567891, |
- 123456789012345678901234567899, |
- 123456789012345678901234567890, |
- 1); |
- test(123456789012345678901234567891, |
- 123456789012345678901234567890, |
- 123456789012345678901234567899, |
- 40128068573873018143207285483); |
- |
+ test(123456789012345678901234567890, 123456789012345678901234567891, |
+ 123456789012345678901234567899, 116401406051033429924651549616); |
+ test(123456789012345678901234567890, 123456789012345678901234567899, |
+ 123456789012345678901234567891, 123456789012345678901234567890); |
+ test(123456789012345678901234567899, 123456789012345678901234567890, |
+ 123456789012345678901234567891, 35088523091000351053091545070); |
+ test(123456789012345678901234567899, 123456789012345678901234567891, |
+ 123456789012345678901234567890, 18310047270234132455316941949); |
+ test(123456789012345678901234567891, 123456789012345678901234567899, |
+ 123456789012345678901234567890, 1); |
+ test(123456789012345678901234567891, 123456789012345678901234567890, |
+ 123456789012345678901234567899, 40128068573873018143207285483); |
} |
testModInverse() { |
@@ -147,6 +135,7 @@ testGcd() { |
assert(expectedResult == 0 || other % expectedResult == 0); |
callCombos(value, other, (a, b) { |
var result = a.gcd(b); |
+ |
/// Check that the result is a divisor. |
Expect.equals(0, result == 0 ? a : a % result, "$result | $a"); |
Expect.equals(0, result == 0 ? b : b % result, "$result | $b"); |
@@ -164,19 +153,19 @@ testGcd() { |
}); |
} |
- testThrows(2.5, 5); // Not a method on double. |
- testThrows(5, 2.5); // Not accepting non-int arguments. |
+ testThrows(2.5, 5); // Not a method on double. |
+ testThrows(5, 2.5); // Not accepting non-int arguments. |
// Format: |
// test(value1, value2, expectedResult); |
test(1, 1, 1); // both are 1 |
test(1, 2, 1); // one is 1 |
test(3, 5, 1); // coprime. |
- test(37, 37, 37); // Same larger prime. |
+ test(37, 37, 37); // Same larger prime. |
- test(9999, 7272, 909); // Larger numbers |
+ test(9999, 7272, 909); // Larger numbers |
- test(0, 1000, 1000); // One operand is zero. |
+ test(0, 1000, 1000); // One operand is zero. |
test(0, 0, 0); // Both operands are zero. |
// Multiplying both operands by a number multiplies result by same number. |
@@ -185,7 +174,7 @@ testGcd() { |
test(693 * 937, 609 * 937, 21 * 937); |
test(693 * pow(2, 32), 609 * pow(2, 32), 21 * pow(2, 32)); |
test(693 * pow(2, 52), 609 * pow(2, 52), 21 * pow(2, 52)); |
- test(693 * pow(2, 53), 609 * pow(2, 53), 21 * pow(2, 53)); // Regression. |
+ test(693 * pow(2, 53), 609 * pow(2, 53), 21 * pow(2, 53)); // Regression. |
test(693 * pow(2, 99), 609 * pow(2, 99), 21 * pow(2, 99)); |
test(1234567890, 19, 1); |
@@ -197,9 +186,8 @@ testGcd() { |
test(pow(2, 54), pow(2, 53), pow(2, 53)); |
- test((pow(2, 52) - 1) * pow(2, 14), |
- (pow(2, 26) - 1) * pow(2, 22), |
- (pow(2, 26) - 1) * pow(2, 14)); |
+ test((pow(2, 52) - 1) * pow(2, 14), (pow(2, 26) - 1) * pow(2, 22), |
+ (pow(2, 26) - 1) * pow(2, 14)); |
} |
main() { |
@@ -207,4 +195,3 @@ main() { |
testModInverse(); |
testGcd(); |
} |
- |