| 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");
|
| + }
|
| + }
|
| +}
|
|
|