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 // Very simple tests. | |
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++) { | |
76 // Works in dart2js up to 10^15. | |
77 test(number - 1, "9" * i); | |
78 test(number, "1" + "0" * i); | |
79 test(number + 1, "1" + "0" * (i - 1) + "1"); | |
80 number *= 10; | |
81 } | |
82 // Fails to represent exactly in dart2js. | |
83 for (int i = 15; i < 22; i++) { // //# 01: continued | |
84 test(number - 1, "9" * i); // //# 01: continued | |
85 test(number, "1" + "0" * i); // //# 01: continued | |
86 test(number + 1, "1" + "0" * (i - 1) + "1"); // //# 01: continued | |
87 number *= 10; // //# 01: continued | |
88 } // //# 01: continued | |
89 } | |
OLD | NEW |