Index: test/codegen/corelib/integer_to_radix_string_test.dart |
diff --git a/test/codegen/corelib/integer_to_radix_string_test.dart b/test/codegen/corelib/integer_to_radix_string_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..80d30ccbb9e91364e69797213dd29fae92dae8e0 |
--- /dev/null |
+++ b/test/codegen/corelib/integer_to_radix_string_test.dart |
@@ -0,0 +1,61 @@ |
+// 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. |
+ |
+import "package:expect/expect.dart"; |
+ |
+main() { |
+ // Test that we accept radix 2 to 36 and that we use lower-case |
+ // letters. |
+ var expected = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', |
+ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', |
+ 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', |
+ 'u', 'v', 'w', 'x', 'y', 'z']; |
+ for (var radix = 2; radix <= 36; radix++) { |
+ for (var i = 0; i < radix; i++) { |
+ Expect.equals(expected[i], i.toRadixString(radix)); |
+ } |
+ } |
+ |
+ var illegalRadices = [ -1, 0, 1, 37 ]; |
+ for (var radix in illegalRadices) { |
+ try { |
+ 42.toRadixString(radix); |
+ Expect.fail("Exception expected"); |
+ } on ArgumentError catch (e) { |
+ // Nothing to do. |
+ } |
+ } |
+ |
+ // Try large numbers (regression test for issue 15316). |
+ var bignums = [ |
+ 0x80000000, |
+ 0x100000000, |
+ 0x10000000000000, |
+ 0x10000000000001, // 53 significant bits. |
+ 0x20000000000000, |
+ 0x20000000000002, |
+ 0x1000000000000000, |
+ 0x1000000000000100, |
+ 0x2000000000000000, |
+ 0x2000000000000200, |
+ 0x8000000000000000, |
+ 0x8000000000000800, |
+ 0x10000000000000000, |
+ 0x10000000000001000, |
+ 0x100000000000010000, |
+ 0x1000000000000100000, |
+ 0x10000000000001000000, |
+ 0x100000000000010000000, |
+ 0x1000000000000100000000, |
+ 0x10000000000001000000000, |
+ ]; |
+ for (var bignum in bignums) { |
+ for (int radix = 2; radix <= 36; radix++) { |
+ String digits = bignum.toRadixString(radix); |
+ int result = int.parse(digits, radix: radix); |
+ Expect.equals(bignum, result, |
+ "${bignum.toRadixString(16)} -> $digits/$radix"); |
+ } |
+ } |
+} |