1
+ use std:: mem:: size_of;
2
+
3
+ #[ test]
4
+ fn test_format_int_zero ( ) {
5
+ assert_eq ! ( format!( "{}" , 0 ) , "0" ) ;
6
+ assert_eq ! ( format!( "{:?}" , 0 ) , "0" ) ;
7
+ assert_eq ! ( format!( "{:b}" , 0 ) , "0" ) ;
8
+ assert_eq ! ( format!( "{:o}" , 0 ) , "0" ) ;
9
+ assert_eq ! ( format!( "{:x}" , 0 ) , "0" ) ;
10
+ assert_eq ! ( format!( "{:X}" , 0 ) , "0" ) ;
11
+ assert_eq ! ( format!( "{:e}" , 0 ) , "0e0" ) ;
12
+ assert_eq ! ( format!( "{:E}" , 0 ) , "0E0" ) ;
13
+
14
+ // again, with unsigned
15
+ assert_eq ! ( format!( "{}" , 0u32 ) , "0" ) ;
16
+ assert_eq ! ( format!( "{:?}" , 0u32 ) , "0" ) ;
17
+ assert_eq ! ( format!( "{:b}" , 0u32 ) , "0" ) ;
18
+ assert_eq ! ( format!( "{:o}" , 0u32 ) , "0" ) ;
19
+ assert_eq ! ( format!( "{:x}" , 0u32 ) , "0" ) ;
20
+ assert_eq ! ( format!( "{:X}" , 0u32 ) , "0" ) ;
21
+ assert_eq ! ( format!( "{:e}" , 0u32 ) , "0e0" ) ;
22
+ assert_eq ! ( format!( "{:E}" , 0u32 ) , "0E0" ) ;
23
+ }
24
+
1
25
#[ test]
2
- fn test_format_int ( ) {
26
+ fn test_format_int_one ( ) {
3
27
// Formatting integers should select the right implementation based off
4
28
// the type of the argument. Also, hex/octal/binary should be defined
5
29
// for integers, but they shouldn't emit the negative sign.
@@ -8,87 +32,157 @@ fn test_format_int() {
8
32
assert_eq ! ( format!( "{}" , 1i16 ) , "1" ) ;
9
33
assert_eq ! ( format!( "{}" , 1i32 ) , "1" ) ;
10
34
assert_eq ! ( format!( "{}" , 1i64 ) , "1" ) ;
11
- assert_eq ! ( format!( "{}" , -1isize ) , "-1" ) ;
12
- assert_eq ! ( format!( "{}" , -1i8 ) , "-1" ) ;
13
- assert_eq ! ( format!( "{}" , -1i16 ) , "-1" ) ;
14
- assert_eq ! ( format!( "{}" , -1i32 ) , "-1" ) ;
15
- assert_eq ! ( format!( "{}" , -1i64 ) , "-1" ) ;
35
+ assert_eq ! ( format!( "{}" , 1i128 ) , "1" ) ;
16
36
assert_eq ! ( format!( "{:?}" , 1isize ) , "1" ) ;
17
37
assert_eq ! ( format!( "{:?}" , 1i8 ) , "1" ) ;
18
38
assert_eq ! ( format!( "{:?}" , 1i16 ) , "1" ) ;
19
39
assert_eq ! ( format!( "{:?}" , 1i32 ) , "1" ) ;
20
40
assert_eq ! ( format!( "{:?}" , 1i64 ) , "1" ) ;
41
+ assert_eq ! ( format!( "{:?}" , 1i128 ) , "1" ) ;
21
42
assert_eq ! ( format!( "{:b}" , 1isize ) , "1" ) ;
22
43
assert_eq ! ( format!( "{:b}" , 1i8 ) , "1" ) ;
23
44
assert_eq ! ( format!( "{:b}" , 1i16 ) , "1" ) ;
24
45
assert_eq ! ( format!( "{:b}" , 1i32 ) , "1" ) ;
25
46
assert_eq ! ( format!( "{:b}" , 1i64 ) , "1" ) ;
47
+ assert_eq ! ( format!( "{:b}" , 1i128 ) , "1" ) ;
26
48
assert_eq ! ( format!( "{:x}" , 1isize ) , "1" ) ;
27
49
assert_eq ! ( format!( "{:x}" , 1i8 ) , "1" ) ;
28
50
assert_eq ! ( format!( "{:x}" , 1i16 ) , "1" ) ;
29
51
assert_eq ! ( format!( "{:x}" , 1i32 ) , "1" ) ;
30
52
assert_eq ! ( format!( "{:x}" , 1i64 ) , "1" ) ;
53
+ assert_eq ! ( format!( "{:x}" , 1i128 ) , "1" ) ;
31
54
assert_eq ! ( format!( "{:X}" , 1isize ) , "1" ) ;
32
55
assert_eq ! ( format!( "{:X}" , 1i8 ) , "1" ) ;
33
56
assert_eq ! ( format!( "{:X}" , 1i16 ) , "1" ) ;
34
57
assert_eq ! ( format!( "{:X}" , 1i32 ) , "1" ) ;
35
58
assert_eq ! ( format!( "{:X}" , 1i64 ) , "1" ) ;
59
+ assert_eq ! ( format!( "{:X}" , 1i128 ) , "1" ) ;
36
60
assert_eq ! ( format!( "{:o}" , 1isize ) , "1" ) ;
37
61
assert_eq ! ( format!( "{:o}" , 1i8 ) , "1" ) ;
38
62
assert_eq ! ( format!( "{:o}" , 1i16 ) , "1" ) ;
39
63
assert_eq ! ( format!( "{:o}" , 1i32 ) , "1" ) ;
40
64
assert_eq ! ( format!( "{:o}" , 1i64 ) , "1" ) ;
65
+ assert_eq ! ( format!( "{:o}" , 1i128 ) , "1" ) ;
41
66
assert_eq ! ( format!( "{:e}" , 1isize ) , "1e0" ) ;
42
67
assert_eq ! ( format!( "{:e}" , 1i8 ) , "1e0" ) ;
43
68
assert_eq ! ( format!( "{:e}" , 1i16 ) , "1e0" ) ;
44
69
assert_eq ! ( format!( "{:e}" , 1i32 ) , "1e0" ) ;
45
70
assert_eq ! ( format!( "{:e}" , 1i64 ) , "1e0" ) ;
71
+ assert_eq ! ( format!( "{:e}" , 1i128 ) , "1e0" ) ;
46
72
assert_eq ! ( format!( "{:E}" , 1isize ) , "1E0" ) ;
47
73
assert_eq ! ( format!( "{:E}" , 1i8 ) , "1E0" ) ;
48
74
assert_eq ! ( format!( "{:E}" , 1i16 ) , "1E0" ) ;
49
75
assert_eq ! ( format!( "{:E}" , 1i32 ) , "1E0" ) ;
50
76
assert_eq ! ( format!( "{:E}" , 1i64 ) , "1E0" ) ;
77
+ assert_eq ! ( format!( "{:E}" , 1i128 ) , "1E0" ) ;
51
78
79
+ // again, with unsigned
52
80
assert_eq ! ( format!( "{}" , 1usize ) , "1" ) ;
53
81
assert_eq ! ( format!( "{}" , 1u8 ) , "1" ) ;
54
82
assert_eq ! ( format!( "{}" , 1u16 ) , "1" ) ;
55
83
assert_eq ! ( format!( "{}" , 1u32 ) , "1" ) ;
56
84
assert_eq ! ( format!( "{}" , 1u64 ) , "1" ) ;
85
+ assert_eq ! ( format!( "{}" , 1u128 ) , "1" ) ;
57
86
assert_eq ! ( format!( "{:?}" , 1usize ) , "1" ) ;
58
87
assert_eq ! ( format!( "{:?}" , 1u8 ) , "1" ) ;
59
88
assert_eq ! ( format!( "{:?}" , 1u16 ) , "1" ) ;
60
89
assert_eq ! ( format!( "{:?}" , 1u32 ) , "1" ) ;
61
90
assert_eq ! ( format!( "{:?}" , 1u64 ) , "1" ) ;
91
+ assert_eq ! ( format!( "{:?}" , 1u128 ) , "1" ) ;
62
92
assert_eq ! ( format!( "{:b}" , 1usize ) , "1" ) ;
63
93
assert_eq ! ( format!( "{:b}" , 1u8 ) , "1" ) ;
64
94
assert_eq ! ( format!( "{:b}" , 1u16 ) , "1" ) ;
65
95
assert_eq ! ( format!( "{:b}" , 1u32 ) , "1" ) ;
66
96
assert_eq ! ( format!( "{:b}" , 1u64 ) , "1" ) ;
97
+ assert_eq ! ( format!( "{:b}" , 1u128 ) , "1" ) ;
67
98
assert_eq ! ( format!( "{:x}" , 1usize ) , "1" ) ;
68
99
assert_eq ! ( format!( "{:x}" , 1u8 ) , "1" ) ;
69
100
assert_eq ! ( format!( "{:x}" , 1u16 ) , "1" ) ;
70
101
assert_eq ! ( format!( "{:x}" , 1u32 ) , "1" ) ;
71
102
assert_eq ! ( format!( "{:x}" , 1u64 ) , "1" ) ;
103
+ assert_eq ! ( format!( "{:x}" , 1u128 ) , "1" ) ;
72
104
assert_eq ! ( format!( "{:X}" , 1usize ) , "1" ) ;
73
105
assert_eq ! ( format!( "{:X}" , 1u8 ) , "1" ) ;
74
106
assert_eq ! ( format!( "{:X}" , 1u16 ) , "1" ) ;
75
107
assert_eq ! ( format!( "{:X}" , 1u32 ) , "1" ) ;
76
108
assert_eq ! ( format!( "{:X}" , 1u64 ) , "1" ) ;
109
+ assert_eq ! ( format!( "{:X}" , 1u128 ) , "1" ) ;
77
110
assert_eq ! ( format!( "{:o}" , 1usize ) , "1" ) ;
78
111
assert_eq ! ( format!( "{:o}" , 1u8 ) , "1" ) ;
79
112
assert_eq ! ( format!( "{:o}" , 1u16 ) , "1" ) ;
80
113
assert_eq ! ( format!( "{:o}" , 1u32 ) , "1" ) ;
81
114
assert_eq ! ( format!( "{:o}" , 1u64 ) , "1" ) ;
115
+ assert_eq ! ( format!( "{:o}" , 1u128 ) , "1" ) ;
82
116
assert_eq ! ( format!( "{:e}" , 1u8 ) , "1e0" ) ;
83
117
assert_eq ! ( format!( "{:e}" , 1u16 ) , "1e0" ) ;
84
118
assert_eq ! ( format!( "{:e}" , 1u32 ) , "1e0" ) ;
85
119
assert_eq ! ( format!( "{:e}" , 1u64 ) , "1e0" ) ;
120
+ assert_eq ! ( format!( "{:e}" , 1u128 ) , "1e0" ) ;
86
121
assert_eq ! ( format!( "{:E}" , 1u8 ) , "1E0" ) ;
87
122
assert_eq ! ( format!( "{:E}" , 1u16 ) , "1E0" ) ;
88
123
assert_eq ! ( format!( "{:E}" , 1u32 ) , "1E0" ) ;
89
124
assert_eq ! ( format!( "{:E}" , 1u64 ) , "1E0" ) ;
125
+ assert_eq ! ( format!( "{:E}" , 1u128 ) , "1E0" ) ;
90
126
91
- // Test a larger number
127
+ // again, with negative
128
+ assert_eq ! ( format!( "{}" , -1isize ) , "-1" ) ;
129
+ assert_eq ! ( format!( "{}" , -1i8 ) , "-1" ) ;
130
+ assert_eq ! ( format!( "{}" , -1i16 ) , "-1" ) ;
131
+ assert_eq ! ( format!( "{}" , -1i32 ) , "-1" ) ;
132
+ assert_eq ! ( format!( "{}" , -1i64 ) , "-1" ) ;
133
+ assert_eq ! ( format!( "{}" , -1i128 ) , "-1" ) ;
134
+ assert_eq ! ( format!( "{:?}" , -1isize ) , "-1" ) ;
135
+ assert_eq ! ( format!( "{:?}" , -1i8 ) , "-1" ) ;
136
+ assert_eq ! ( format!( "{:?}" , -1i16 ) , "-1" ) ;
137
+ assert_eq ! ( format!( "{:?}" , -1i32 ) , "-1" ) ;
138
+ assert_eq ! ( format!( "{:?}" , -1i64 ) , "-1" ) ;
139
+ assert_eq ! ( format!( "{:?}" , -1i128 ) , "-1" ) ;
140
+ assert_eq ! ( format!( "{:b}" , -1isize ) , "1" . repeat( size_of:: <isize >( ) * 8 ) ) ;
141
+ assert_eq ! ( format!( "{:b}" , -1i8 ) , "11111111" ) ;
142
+ assert_eq ! ( format!( "{:b}" , -1i16 ) , "1111111111111111" ) ;
143
+ assert_eq ! ( format!( "{:b}" , -1i32 ) , "11111111111111111111111111111111" ) ;
144
+ assert_eq ! (
145
+ format!( "{:b}" , -1i64 ) ,
146
+ "1111111111111111111111111111111111111111111111111111111111111111"
147
+ ) ;
148
+ assert_eq ! (
149
+ format!( "{:b}" , -1i128 ) ,
150
+ "11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"
151
+ ) ;
152
+ assert_eq ! ( format!( "{:x}" , -1isize ) , "ff" . repeat( size_of:: <isize >( ) ) ) ;
153
+ assert_eq ! ( format!( "{:x}" , -1i8 ) , "ff" ) ;
154
+ assert_eq ! ( format!( "{:x}" , -1i16 ) , "ffff" ) ;
155
+ assert_eq ! ( format!( "{:x}" , -1i32 ) , "ffffffff" ) ;
156
+ assert_eq ! ( format!( "{:x}" , -1i64 ) , "ffffffffffffffff" ) ;
157
+ assert_eq ! ( format!( "{:x}" , -1i128 ) , "ffffffffffffffffffffffffffffffff" ) ;
158
+ assert_eq ! ( format!( "{:X}" , -1isize ) , "FF" . repeat( size_of:: <isize >( ) ) ) ;
159
+ assert_eq ! ( format!( "{:X}" , -1i8 ) , "FF" ) ;
160
+ assert_eq ! ( format!( "{:X}" , -1i16 ) , "FFFF" ) ;
161
+ assert_eq ! ( format!( "{:X}" , -1i32 ) , "FFFFFFFF" ) ;
162
+ assert_eq ! ( format!( "{:X}" , -1i64 ) , "FFFFFFFFFFFFFFFF" ) ;
163
+ assert_eq ! ( format!( "{:X}" , -1i128 ) , "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" ) ;
164
+ // octal test for isize omitted
165
+ assert_eq ! ( format!( "{:o}" , -1i8 ) , "377" ) ;
166
+ assert_eq ! ( format!( "{:o}" , -1i16 ) , "177777" ) ;
167
+ assert_eq ! ( format!( "{:o}" , -1i32 ) , "37777777777" ) ;
168
+ assert_eq ! ( format!( "{:o}" , -1i64 ) , "1777777777777777777777" ) ;
169
+ assert_eq ! ( format!( "{:o}" , -1i128 ) , "3777777777777777777777777777777777777777777" ) ;
170
+ assert_eq ! ( format!( "{:e}" , -1isize ) , "-1e0" ) ;
171
+ assert_eq ! ( format!( "{:e}" , -1i8 ) , "-1e0" ) ;
172
+ assert_eq ! ( format!( "{:e}" , -1i16 ) , "-1e0" ) ;
173
+ assert_eq ! ( format!( "{:e}" , -1i32 ) , "-1e0" ) ;
174
+ assert_eq ! ( format!( "{:e}" , -1i64 ) , "-1e0" ) ;
175
+ assert_eq ! ( format!( "{:e}" , -1i128 ) , "-1e0" ) ;
176
+ assert_eq ! ( format!( "{:E}" , -1isize ) , "-1E0" ) ;
177
+ assert_eq ! ( format!( "{:E}" , -1i8 ) , "-1E0" ) ;
178
+ assert_eq ! ( format!( "{:E}" , -1i16 ) , "-1E0" ) ;
179
+ assert_eq ! ( format!( "{:E}" , -1i32 ) , "-1E0" ) ;
180
+ assert_eq ! ( format!( "{:E}" , -1i64 ) , "-1E0" ) ;
181
+ assert_eq ! ( format!( "{:E}" , -1i128 ) , "-1E0" ) ;
182
+ }
183
+
184
+ #[ test]
185
+ fn test_format_int_misc ( ) {
92
186
assert_eq ! ( format!( "{:b}" , 55 ) , "110111" ) ;
93
187
assert_eq ! ( format!( "{:o}" , 55 ) , "67" ) ;
94
188
assert_eq ! ( format!( "{}" , 55 ) , "55" ) ;
@@ -102,6 +196,26 @@ fn test_format_int() {
102
196
assert_eq ! ( format!( "{:E}" , 10000000001u64 ) , "1.0000000001E10" ) ;
103
197
}
104
198
199
+ #[ test]
200
+ fn test_format_int_limits ( ) {
201
+ assert_eq ! ( format!( "{}" , i8 :: MIN ) , "-128" ) ;
202
+ assert_eq ! ( format!( "{}" , i8 :: MAX ) , "127" ) ;
203
+ assert_eq ! ( format!( "{}" , i16 :: MIN ) , "-32768" ) ;
204
+ assert_eq ! ( format!( "{}" , i16 :: MAX ) , "32767" ) ;
205
+ assert_eq ! ( format!( "{}" , i32 :: MIN ) , "-2147483648" ) ;
206
+ assert_eq ! ( format!( "{}" , i32 :: MAX ) , "2147483647" ) ;
207
+ assert_eq ! ( format!( "{}" , i64 :: MIN ) , "-9223372036854775808" ) ;
208
+ assert_eq ! ( format!( "{}" , i64 :: MAX ) , "9223372036854775807" ) ;
209
+ assert_eq ! ( format!( "{}" , i128 :: MIN ) , "-170141183460469231731687303715884105728" ) ;
210
+ assert_eq ! ( format!( "{}" , i128 :: MAX ) , "170141183460469231731687303715884105727" ) ;
211
+
212
+ assert_eq ! ( format!( "{}" , u8 :: MAX ) , "255" ) ;
213
+ assert_eq ! ( format!( "{}" , u16 :: MAX ) , "65535" ) ;
214
+ assert_eq ! ( format!( "{}" , u32 :: MAX ) , "4294967295" ) ;
215
+ assert_eq ! ( format!( "{}" , u64 :: MAX ) , "18446744073709551615" ) ;
216
+ assert_eq ! ( format!( "{}" , u128 :: MAX ) , "340282366920938463463374607431768211455" ) ;
217
+ }
218
+
105
219
#[ test]
106
220
fn test_format_int_exp_limits ( ) {
107
221
assert_eq ! ( format!( "{:e}" , i8 :: MIN ) , "-1.28e2" ) ;
@@ -167,27 +281,6 @@ fn test_format_int_exp_precision() {
167
281
}
168
282
}
169
283
170
- #[ test]
171
- fn test_format_int_zero ( ) {
172
- assert_eq ! ( format!( "{}" , 0 ) , "0" ) ;
173
- assert_eq ! ( format!( "{:?}" , 0 ) , "0" ) ;
174
- assert_eq ! ( format!( "{:b}" , 0 ) , "0" ) ;
175
- assert_eq ! ( format!( "{:o}" , 0 ) , "0" ) ;
176
- assert_eq ! ( format!( "{:x}" , 0 ) , "0" ) ;
177
- assert_eq ! ( format!( "{:X}" , 0 ) , "0" ) ;
178
- assert_eq ! ( format!( "{:e}" , 0 ) , "0e0" ) ;
179
- assert_eq ! ( format!( "{:E}" , 0 ) , "0E0" ) ;
180
-
181
- assert_eq ! ( format!( "{}" , 0u32 ) , "0" ) ;
182
- assert_eq ! ( format!( "{:?}" , 0u32 ) , "0" ) ;
183
- assert_eq ! ( format!( "{:b}" , 0u32 ) , "0" ) ;
184
- assert_eq ! ( format!( "{:o}" , 0u32 ) , "0" ) ;
185
- assert_eq ! ( format!( "{:x}" , 0u32 ) , "0" ) ;
186
- assert_eq ! ( format!( "{:X}" , 0u32 ) , "0" ) ;
187
- assert_eq ! ( format!( "{:e}" , 0u32 ) , "0e0" ) ;
188
- assert_eq ! ( format!( "{:E}" , 0u32 ) , "0E0" ) ;
189
- }
190
-
191
284
#[ test]
192
285
fn test_format_int_flags ( ) {
193
286
assert_eq ! ( format!( "{:3}" , 1 ) , " 1" ) ;
@@ -225,14 +318,6 @@ fn test_format_int_sign_padding() {
225
318
assert_eq ! ( format!( "{:+05}" , -1 ) , "-0001" ) ;
226
319
}
227
320
228
- #[ test]
229
- fn test_format_int_twos_complement ( ) {
230
- assert_eq ! ( format!( "{}" , i8 :: MIN ) , "-128" ) ;
231
- assert_eq ! ( format!( "{}" , i16 :: MIN ) , "-32768" ) ;
232
- assert_eq ! ( format!( "{}" , i32 :: MIN ) , "-2147483648" ) ;
233
- assert_eq ! ( format!( "{}" , i64 :: MIN ) , "-9223372036854775808" ) ;
234
- }
235
-
236
321
#[ test]
237
322
fn test_format_debug_hex ( ) {
238
323
assert_eq ! ( format!( "{:02x?}" , b"Foo\0 " ) , "[46, 6f, 6f, 00]" ) ;
0 commit comments