| OLD | NEW |
| (Empty) | |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. |
| 4 |
| 5 import "package:expect/expect.dart"; |
| 6 |
| 7 main() { |
| 8 /// Test that converting [value] to a string gives [expect]. |
| 9 /// Also test that `-value` gives `"-"+expect`. |
| 10 test(int value, String expect) { |
| 11 Expect.equals(expect, value.toString()); |
| 12 Expect.equals(expect, "$value"); |
| 13 Expect.equals(expect, (new StringBuffer()..write(value)).toString()); |
| 14 if (value == 0) return; |
| 15 expect = "-$expect"; |
| 16 value = -value; |
| 17 Expect.equals(expect, value.toString()); |
| 18 Expect.equals(expect, "$value"); |
| 19 Expect.equals(expect, (new StringBuffer()..write(value)).toString()); |
| 20 } |
| 21 |
| 22 // Null. |
| 23 test(0, "0"); |
| 24 test(1, "1"); |
| 25 test(2, "2"); |
| 26 test(5, "5"); |
| 27 |
| 28 // Binary special cases. |
| 29 |
| 30 // ~2^30. |
| 31 test(0x3fffffff, "1073741823"); |
| 32 test(0x40000000, "1073741824"); |
| 33 test(0x40000001, "1073741825"); |
| 34 // ~2^31. |
| 35 test(0x7fffffff, "2147483647"); |
| 36 test(0x80000000, "2147483648"); |
| 37 test(0x80000001, "2147483649"); |
| 38 // ~2^32. |
| 39 test(0xffffffff, "4294967295"); |
| 40 test(0x100000000, "4294967296"); |
| 41 test(0x100000001, "4294967297"); |
| 42 |
| 43 // ~2^51. |
| 44 test(0x7ffffffffffff, "2251799813685247"); |
| 45 test(0x8000000000000, "2251799813685248"); |
| 46 test(0x8000000000001, "2251799813685249"); |
| 47 // ~2^52. |
| 48 test(0xfffffffffffff, "4503599627370495"); |
| 49 test(0x10000000000000, "4503599627370496"); |
| 50 test(0x10000000000001, "4503599627370497"); |
| 51 // ~2^53. |
| 52 test(0x1fffffffffffff, "9007199254740991"); |
| 53 test(0x20000000000000, "9007199254740992"); |
| 54 test(0x20000000000001, "9007199254740993"); /// 01: ok |
| 55 // ~2^62. |
| 56 test(0x3fffffffffffffff, "4611686018427387903"); /// 01: continued |
| 57 test(0x4000000000000000, "4611686018427387904"); /// 01: continued |
| 58 test(0x4000000000000001, "4611686018427387905"); /// 01: continued |
| 59 // ~2^63. |
| 60 test(0x7fffffffffffffff, "9223372036854775807"); /// 01: continued |
| 61 test(0x8000000000000000, "9223372036854775808"); /// 01: continued |
| 62 test(0x8000000000000001, "9223372036854775809"); /// 01: continued |
| 63 // ~2^64. |
| 64 test(0xffffffffffffffff, "18446744073709551615"); /// 01: continued |
| 65 test(0x10000000000000000, "18446744073709551616"); /// 01: continued |
| 66 test(0x10000000000000001, "18446744073709551617"); /// 01: continued |
| 67 // Big bignum. |
| 68 test(123456789012345678901234567890, /// 01: continued |
| 69 "123456789012345678901234567890"); /// 01: continued |
| 70 |
| 71 // Decimal special cases. |
| 72 |
| 73 int number = 10; |
| 74 // Numbers 99..99, 100...00, and 100..01 up to 23 digits. |
| 75 for (int i = 1; i < 15; i++) { // Works in dart2js up to 10^15. |
| 76 test(number - 1, "9" * i); |
| 77 test(number, "1" + "0" * i); |
| 78 test(number + 1, "1" + "0" * (i - 1) + "1"); |
| 79 number *= 10; |
| 80 } |
| 81 // Fails to represent exactly in dart2js. |
| 82 for (int i = 15; i < 22; i++) { /// 01: continued |
| 83 test(number - 1, "9" * i); /// 01: continued |
| 84 test(number, "1" + "0" * i); /// 01: continued |
| 85 test(number + 1, "1" + "0" * (i - 1) + "1"); /// 01: continued |
| 86 number *= 10; /// 01: continued |
| 87 } /// 01: continued |
| 88 } |
| OLD | NEW |