Skip to content

Commit d61aa37

Browse files
committed
format integer tests regrouped, min/max coverage and 128-bit coverage
1 parent 5958825 commit d61aa37

File tree

1 file changed

+121
-36
lines changed
  • library/coretests/tests/fmt

1 file changed

+121
-36
lines changed

library/coretests/tests/fmt/num.rs

Lines changed: 121 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,29 @@
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+
125
#[test]
2-
fn test_format_int() {
26+
fn test_format_int_one() {
327
// Formatting integers should select the right implementation based off
428
// the type of the argument. Also, hex/octal/binary should be defined
529
// for integers, but they shouldn't emit the negative sign.
@@ -8,87 +32,157 @@ fn test_format_int() {
832
assert_eq!(format!("{}", 1i16), "1");
933
assert_eq!(format!("{}", 1i32), "1");
1034
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");
1636
assert_eq!(format!("{:?}", 1isize), "1");
1737
assert_eq!(format!("{:?}", 1i8), "1");
1838
assert_eq!(format!("{:?}", 1i16), "1");
1939
assert_eq!(format!("{:?}", 1i32), "1");
2040
assert_eq!(format!("{:?}", 1i64), "1");
41+
assert_eq!(format!("{:?}", 1i128), "1");
2142
assert_eq!(format!("{:b}", 1isize), "1");
2243
assert_eq!(format!("{:b}", 1i8), "1");
2344
assert_eq!(format!("{:b}", 1i16), "1");
2445
assert_eq!(format!("{:b}", 1i32), "1");
2546
assert_eq!(format!("{:b}", 1i64), "1");
47+
assert_eq!(format!("{:b}", 1i128), "1");
2648
assert_eq!(format!("{:x}", 1isize), "1");
2749
assert_eq!(format!("{:x}", 1i8), "1");
2850
assert_eq!(format!("{:x}", 1i16), "1");
2951
assert_eq!(format!("{:x}", 1i32), "1");
3052
assert_eq!(format!("{:x}", 1i64), "1");
53+
assert_eq!(format!("{:x}", 1i128), "1");
3154
assert_eq!(format!("{:X}", 1isize), "1");
3255
assert_eq!(format!("{:X}", 1i8), "1");
3356
assert_eq!(format!("{:X}", 1i16), "1");
3457
assert_eq!(format!("{:X}", 1i32), "1");
3558
assert_eq!(format!("{:X}", 1i64), "1");
59+
assert_eq!(format!("{:X}", 1i128), "1");
3660
assert_eq!(format!("{:o}", 1isize), "1");
3761
assert_eq!(format!("{:o}", 1i8), "1");
3862
assert_eq!(format!("{:o}", 1i16), "1");
3963
assert_eq!(format!("{:o}", 1i32), "1");
4064
assert_eq!(format!("{:o}", 1i64), "1");
65+
assert_eq!(format!("{:o}", 1i128), "1");
4166
assert_eq!(format!("{:e}", 1isize), "1e0");
4267
assert_eq!(format!("{:e}", 1i8), "1e0");
4368
assert_eq!(format!("{:e}", 1i16), "1e0");
4469
assert_eq!(format!("{:e}", 1i32), "1e0");
4570
assert_eq!(format!("{:e}", 1i64), "1e0");
71+
assert_eq!(format!("{:e}", 1i128), "1e0");
4672
assert_eq!(format!("{:E}", 1isize), "1E0");
4773
assert_eq!(format!("{:E}", 1i8), "1E0");
4874
assert_eq!(format!("{:E}", 1i16), "1E0");
4975
assert_eq!(format!("{:E}", 1i32), "1E0");
5076
assert_eq!(format!("{:E}", 1i64), "1E0");
77+
assert_eq!(format!("{:E}", 1i128), "1E0");
5178

79+
// again, with unsigned
5280
assert_eq!(format!("{}", 1usize), "1");
5381
assert_eq!(format!("{}", 1u8), "1");
5482
assert_eq!(format!("{}", 1u16), "1");
5583
assert_eq!(format!("{}", 1u32), "1");
5684
assert_eq!(format!("{}", 1u64), "1");
85+
assert_eq!(format!("{}", 1u128), "1");
5786
assert_eq!(format!("{:?}", 1usize), "1");
5887
assert_eq!(format!("{:?}", 1u8), "1");
5988
assert_eq!(format!("{:?}", 1u16), "1");
6089
assert_eq!(format!("{:?}", 1u32), "1");
6190
assert_eq!(format!("{:?}", 1u64), "1");
91+
assert_eq!(format!("{:?}", 1u128), "1");
6292
assert_eq!(format!("{:b}", 1usize), "1");
6393
assert_eq!(format!("{:b}", 1u8), "1");
6494
assert_eq!(format!("{:b}", 1u16), "1");
6595
assert_eq!(format!("{:b}", 1u32), "1");
6696
assert_eq!(format!("{:b}", 1u64), "1");
97+
assert_eq!(format!("{:b}", 1u128), "1");
6798
assert_eq!(format!("{:x}", 1usize), "1");
6899
assert_eq!(format!("{:x}", 1u8), "1");
69100
assert_eq!(format!("{:x}", 1u16), "1");
70101
assert_eq!(format!("{:x}", 1u32), "1");
71102
assert_eq!(format!("{:x}", 1u64), "1");
103+
assert_eq!(format!("{:x}", 1u128), "1");
72104
assert_eq!(format!("{:X}", 1usize), "1");
73105
assert_eq!(format!("{:X}", 1u8), "1");
74106
assert_eq!(format!("{:X}", 1u16), "1");
75107
assert_eq!(format!("{:X}", 1u32), "1");
76108
assert_eq!(format!("{:X}", 1u64), "1");
109+
assert_eq!(format!("{:X}", 1u128), "1");
77110
assert_eq!(format!("{:o}", 1usize), "1");
78111
assert_eq!(format!("{:o}", 1u8), "1");
79112
assert_eq!(format!("{:o}", 1u16), "1");
80113
assert_eq!(format!("{:o}", 1u32), "1");
81114
assert_eq!(format!("{:o}", 1u64), "1");
115+
assert_eq!(format!("{:o}", 1u128), "1");
82116
assert_eq!(format!("{:e}", 1u8), "1e0");
83117
assert_eq!(format!("{:e}", 1u16), "1e0");
84118
assert_eq!(format!("{:e}", 1u32), "1e0");
85119
assert_eq!(format!("{:e}", 1u64), "1e0");
120+
assert_eq!(format!("{:e}", 1u128), "1e0");
86121
assert_eq!(format!("{:E}", 1u8), "1E0");
87122
assert_eq!(format!("{:E}", 1u16), "1E0");
88123
assert_eq!(format!("{:E}", 1u32), "1E0");
89124
assert_eq!(format!("{:E}", 1u64), "1E0");
125+
assert_eq!(format!("{:E}", 1u128), "1E0");
90126

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() {
92186
assert_eq!(format!("{:b}", 55), "110111");
93187
assert_eq!(format!("{:o}", 55), "67");
94188
assert_eq!(format!("{}", 55), "55");
@@ -102,6 +196,26 @@ fn test_format_int() {
102196
assert_eq!(format!("{:E}", 10000000001u64), "1.0000000001E10");
103197
}
104198

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+
105219
#[test]
106220
fn test_format_int_exp_limits() {
107221
assert_eq!(format!("{:e}", i8::MIN), "-1.28e2");
@@ -167,27 +281,6 @@ fn test_format_int_exp_precision() {
167281
}
168282
}
169283

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-
191284
#[test]
192285
fn test_format_int_flags() {
193286
assert_eq!(format!("{:3}", 1), " 1");
@@ -225,14 +318,6 @@ fn test_format_int_sign_padding() {
225318
assert_eq!(format!("{:+05}", -1), "-0001");
226319
}
227320

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-
236321
#[test]
237322
fn test_format_debug_hex() {
238323
assert_eq!(format!("{:02x?}", b"Foo\0"), "[46, 6f, 6f, 00]");

0 commit comments

Comments
 (0)