Skip to content

Commit 0c9449e

Browse files
committed
Import some Literal tests from libproc_macro
1 parent 28c87ad commit 0c9449e

File tree

1 file changed

+145
-84
lines changed

1 file changed

+145
-84
lines changed

tests/test.rs

Lines changed: 145 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -97,12 +97,22 @@ fn lifetime_invalid() {
9797

9898
#[test]
9999
fn literal_string() {
100-
assert_eq!(Literal::string("foo").to_string(), "\"foo\"");
101-
assert_eq!(Literal::string("\"").to_string(), "\"\\\"\"");
102-
assert_eq!(Literal::string("didn't").to_string(), "\"didn't\"");
103-
assert_eq!(
104-
Literal::string("a\00b\07c\08d\0e\0").to_string(),
105-
"\"a\\x000b\\x007c\\08d\\0e\\0\"",
100+
#[track_caller]
101+
fn assert(literal: Literal, expected: &str) {
102+
assert_eq!(literal.to_string(), expected.trim());
103+
}
104+
105+
assert(Literal::string(""), r#" "" "#);
106+
assert(Literal::string("aA"), r#" "aA" "#);
107+
assert(Literal::string("\t"), r#" "\t" "#);
108+
assert(Literal::string("❤"), r#" "❤" "#);
109+
assert(Literal::string("'"), r#" "'" "#);
110+
assert(Literal::string("\""), r#" "\"" "#);
111+
assert(Literal::string("\0"), r#" "\0" "#);
112+
assert(Literal::string("\u{1}"), r#" "\u{1}" "#);
113+
assert(
114+
Literal::string("a\00b\07c\08d\0e\0"),
115+
r#" "a\x000b\x007c\08d\0e\0" "#,
106116
);
107117

108118
"\"\\\r\n x\"".parse::<TokenStream>().unwrap();
@@ -135,26 +145,41 @@ fn literal_raw_string() {
135145

136146
#[test]
137147
fn literal_byte_character() {
138-
assert_eq!(Literal::byte_character(b'\0').to_string(), r"b'\0'");
139-
assert_eq!(Literal::byte_character(b'\t').to_string(), r"b'\t'");
140-
assert_eq!(Literal::byte_character(b'\n').to_string(), r"b'\n'");
141-
assert_eq!(Literal::byte_character(b'\r').to_string(), r"b'\r'");
142-
assert_eq!(Literal::byte_character(b'\'').to_string(), r"b'\''");
143-
assert_eq!(Literal::byte_character(b'\\').to_string(), r"b'\\'");
144-
assert_eq!(Literal::byte_character(b'\x1f').to_string(), r"b'\x1F'");
145-
assert_eq!(Literal::byte_character(b'"').to_string(), "b'\"'");
148+
#[track_caller]
149+
fn assert(literal: Literal, expected: &str) {
150+
assert_eq!(literal.to_string(), expected.trim());
151+
}
152+
153+
assert(Literal::byte_character(b'a'), r#" b'a' "#);
154+
assert(Literal::byte_character(b'\0'), r#" b'\0' "#);
155+
assert(Literal::byte_character(b'\t'), r#" b'\t' "#);
156+
assert(Literal::byte_character(b'\n'), r#" b'\n' "#);
157+
assert(Literal::byte_character(b'\r'), r#" b'\r' "#);
158+
assert(Literal::byte_character(b'\''), r#" b'\'' "#);
159+
assert(Literal::byte_character(b'\\'), r#" b'\\' "#);
160+
assert(Literal::byte_character(b'\x1f'), r#" b'\x1F' "#);
161+
assert(Literal::byte_character(b'"'), r#" b'"' "#);
146162
}
147163

148164
#[test]
149165
fn literal_byte_string() {
150-
assert_eq!(Literal::byte_string(b"").to_string(), "b\"\"");
151-
assert_eq!(
152-
Literal::byte_string(b"\0\t\n\r\"\\2\x10").to_string(),
153-
"b\"\\0\\t\\n\\r\\\"\\\\2\\x10\"",
154-
);
155-
assert_eq!(
156-
Literal::byte_string(b"a\00b\07c\08d\0e\0").to_string(),
157-
"b\"a\\x000b\\x007c\\08d\\0e\\0\"",
166+
#[track_caller]
167+
fn assert(literal: Literal, expected: &str) {
168+
assert_eq!(literal.to_string(), expected.trim());
169+
}
170+
171+
assert(Literal::byte_string(b""), r#" b"" "#);
172+
assert(Literal::byte_string(b"\0"), r#" b"\0" "#);
173+
assert(Literal::byte_string(b"\t"), r#" b"\t" "#);
174+
assert(Literal::byte_string(b"\n"), r#" b"\n" "#);
175+
assert(Literal::byte_string(b"\r"), r#" b"\r" "#);
176+
assert(Literal::byte_string(b"\""), r#" b"\"" "#);
177+
assert(Literal::byte_string(b"\\"), r#" b"\\" "#);
178+
assert(Literal::byte_string(b"\x1f"), r#" b"\x1F" "#);
179+
assert(Literal::byte_string(b"'"), r#" b"'" "#);
180+
assert(
181+
Literal::byte_string(b"a\00b\07c\08d\0e\0"),
182+
r#" b"a\x000b\x007c\08d\0e\0" "#,
158183
);
159184

160185
"b\"\\\r\n x\"".parse::<TokenStream>().unwrap();
@@ -165,27 +190,39 @@ fn literal_byte_string() {
165190

166191
#[test]
167192
fn literal_c_string() {
168-
assert_eq!(Literal::c_string(<&CStr>::default()).to_string(), "c\"\"");
169-
170-
let cstr = CStr::from_bytes_with_nul(b"aA\0").unwrap();
171-
assert_eq!(Literal::c_string(cstr).to_string(), r#" c"aA" "#.trim());
172-
173-
let cstr = CStr::from_bytes_with_nul(b"\t\0").unwrap();
174-
assert_eq!(Literal::c_string(cstr).to_string(), r#" c"\t" "#.trim());
175-
176-
let cstr = CStr::from_bytes_with_nul(b"\xE2\x9D\xA4\0").unwrap();
177-
assert_eq!(Literal::c_string(cstr).to_string(), r#" c"❤" "#.trim());
178-
179-
let cstr = CStr::from_bytes_with_nul(b"'\0").unwrap();
180-
assert_eq!(Literal::c_string(cstr).to_string(), r#" c"'" "#.trim());
181-
182-
let cstr = CStr::from_bytes_with_nul(b"\"\0").unwrap();
183-
assert_eq!(Literal::c_string(cstr).to_string(), r#" c"\"" "#.trim());
193+
#[track_caller]
194+
fn assert(literal: Literal, expected: &str) {
195+
assert_eq!(literal.to_string(), expected.trim());
196+
}
184197

185-
let cstr = CStr::from_bytes_with_nul(b"\x7F\xFF\xFE\xCC\xB3\0").unwrap();
186-
assert_eq!(
187-
Literal::c_string(cstr).to_string(),
188-
r#" c"\u{7f}\xFF\xFE\u{333}" "#.trim(),
198+
assert(Literal::c_string(<&CStr>::default()), r#" c"" "#);
199+
assert(
200+
Literal::c_string(CStr::from_bytes_with_nul(b"aA\0").unwrap()),
201+
r#" c"aA" "#,
202+
);
203+
assert(
204+
Literal::c_string(CStr::from_bytes_with_nul(b"aA\0").unwrap()),
205+
r#" c"aA" "#,
206+
);
207+
assert(
208+
Literal::c_string(CStr::from_bytes_with_nul(b"\t\0").unwrap()),
209+
r#" c"\t" "#,
210+
);
211+
assert(
212+
Literal::c_string(CStr::from_bytes_with_nul(b"\xE2\x9D\xA4\0").unwrap()),
213+
r#" c"❤" "#,
214+
);
215+
assert(
216+
Literal::c_string(CStr::from_bytes_with_nul(b"'\0").unwrap()),
217+
r#" c"'" "#,
218+
);
219+
assert(
220+
Literal::c_string(CStr::from_bytes_with_nul(b"\"\0").unwrap()),
221+
r#" c"\"" "#,
222+
);
223+
assert(
224+
Literal::c_string(CStr::from_bytes_with_nul(b"\x7F\xFF\xFE\xCC\xB3\0").unwrap()),
225+
r#" c"\u{7f}\xFF\xFE\u{333}" "#,
189226
);
190227

191228
let strings = r###"
@@ -224,56 +261,80 @@ fn literal_c_string() {
224261

225262
#[test]
226263
fn literal_character() {
227-
assert_eq!(Literal::character('x').to_string(), "'x'");
228-
assert_eq!(Literal::character('\'').to_string(), r"'\''");
229-
assert_eq!(Literal::character('"').to_string(), "'\"'");
264+
#[track_caller]
265+
fn assert(literal: Literal, expected: &str) {
266+
assert_eq!(literal.to_string(), expected.trim());
267+
}
268+
269+
assert(Literal::character('a'), r#" 'a' "#);
270+
assert(Literal::character('\t'), r#" '\t' "#);
271+
assert(Literal::character('❤'), r#" '❤' "#);
272+
assert(Literal::character('\''), r#" '\'' "#);
273+
assert(Literal::character('"'), r#" '"' "#);
274+
assert(Literal::character('\0'), r#" '\0' "#);
275+
assert(Literal::character('\u{1}'), r#" '\u{1}' "#);
230276
}
231277

232278
#[test]
233279
fn literal_integer() {
234-
assert_eq!(Literal::u8_suffixed(10).to_string(), "10u8");
235-
assert_eq!(Literal::u16_suffixed(10).to_string(), "10u16");
236-
assert_eq!(Literal::u32_suffixed(10).to_string(), "10u32");
237-
assert_eq!(Literal::u64_suffixed(10).to_string(), "10u64");
238-
assert_eq!(Literal::u128_suffixed(10).to_string(), "10u128");
239-
assert_eq!(Literal::usize_suffixed(10).to_string(), "10usize");
240-
241-
assert_eq!(Literal::i8_suffixed(10).to_string(), "10i8");
242-
assert_eq!(Literal::i16_suffixed(10).to_string(), "10i16");
243-
assert_eq!(Literal::i32_suffixed(10).to_string(), "10i32");
244-
assert_eq!(Literal::i64_suffixed(10).to_string(), "10i64");
245-
assert_eq!(Literal::i128_suffixed(10).to_string(), "10i128");
246-
assert_eq!(Literal::isize_suffixed(10).to_string(), "10isize");
247-
248-
assert_eq!(Literal::u8_unsuffixed(10).to_string(), "10");
249-
assert_eq!(Literal::u16_unsuffixed(10).to_string(), "10");
250-
assert_eq!(Literal::u32_unsuffixed(10).to_string(), "10");
251-
assert_eq!(Literal::u64_unsuffixed(10).to_string(), "10");
252-
assert_eq!(Literal::u128_unsuffixed(10).to_string(), "10");
253-
assert_eq!(Literal::usize_unsuffixed(10).to_string(), "10");
254-
255-
assert_eq!(Literal::i8_unsuffixed(10).to_string(), "10");
256-
assert_eq!(Literal::i16_unsuffixed(10).to_string(), "10");
257-
assert_eq!(Literal::i32_unsuffixed(10).to_string(), "10");
258-
assert_eq!(Literal::i64_unsuffixed(10).to_string(), "10");
259-
assert_eq!(Literal::i128_unsuffixed(10).to_string(), "10");
260-
assert_eq!(Literal::isize_unsuffixed(10).to_string(), "10");
261-
262-
assert_eq!(Literal::i32_suffixed(-10).to_string(), "-10i32");
263-
assert_eq!(Literal::i32_unsuffixed(-10).to_string(), "-10");
280+
#[track_caller]
281+
fn assert(literal: Literal, expected: &str) {
282+
assert_eq!(literal.to_string(), expected);
283+
}
284+
285+
assert(Literal::u8_suffixed(10), "10u8");
286+
assert(Literal::u16_suffixed(10), "10u16");
287+
assert(Literal::u32_suffixed(10), "10u32");
288+
assert(Literal::u64_suffixed(10), "10u64");
289+
assert(Literal::u128_suffixed(10), "10u128");
290+
assert(Literal::usize_suffixed(10), "10usize");
291+
292+
assert(Literal::i8_suffixed(10), "10i8");
293+
assert(Literal::i16_suffixed(10), "10i16");
294+
assert(Literal::i32_suffixed(10), "10i32");
295+
assert(Literal::i64_suffixed(10), "10i64");
296+
assert(Literal::i128_suffixed(10), "10i128");
297+
assert(Literal::isize_suffixed(10), "10isize");
298+
299+
assert(Literal::u8_unsuffixed(10), "10");
300+
assert(Literal::u16_unsuffixed(10), "10");
301+
assert(Literal::u32_unsuffixed(10), "10");
302+
assert(Literal::u64_unsuffixed(10), "10");
303+
assert(Literal::u128_unsuffixed(10), "10");
304+
assert(Literal::usize_unsuffixed(10), "10");
305+
306+
assert(Literal::i8_unsuffixed(10), "10");
307+
assert(Literal::i16_unsuffixed(10), "10");
308+
assert(Literal::i32_unsuffixed(10), "10");
309+
assert(Literal::i64_unsuffixed(10), "10");
310+
assert(Literal::i128_unsuffixed(10), "10");
311+
assert(Literal::isize_unsuffixed(10), "10");
312+
313+
assert(Literal::i32_suffixed(-10), "-10i32");
314+
assert(Literal::i32_unsuffixed(-10), "-10");
264315
}
265316

266317
#[test]
267318
fn literal_float() {
268-
assert_eq!(Literal::f32_suffixed(10.0).to_string(), "10f32");
269-
assert_eq!(Literal::f32_suffixed(-10.0).to_string(), "-10f32");
270-
assert_eq!(Literal::f64_suffixed(10.0).to_string(), "10f64");
271-
assert_eq!(Literal::f64_suffixed(-10.0).to_string(), "-10f64");
272-
273-
assert_eq!(Literal::f32_unsuffixed(10.0).to_string(), "10.0");
274-
assert_eq!(Literal::f32_unsuffixed(-10.0).to_string(), "-10.0");
275-
assert_eq!(Literal::f64_unsuffixed(10.0).to_string(), "10.0");
276-
assert_eq!(Literal::f64_unsuffixed(-10.0).to_string(), "-10.0");
319+
#[track_caller]
320+
fn assert(literal: Literal, expected: &str) {
321+
assert_eq!(literal.to_string(), expected);
322+
}
323+
324+
assert(Literal::f32_suffixed(10.0), "10f32");
325+
assert(Literal::f32_suffixed(-10.0), "-10f32");
326+
assert(Literal::f64_suffixed(10.0), "10f64");
327+
assert(Literal::f64_suffixed(-10.0), "-10f64");
328+
329+
assert(Literal::f32_unsuffixed(10.0), "10.0");
330+
assert(Literal::f32_unsuffixed(-10.0), "-10.0");
331+
assert(Literal::f64_unsuffixed(10.0), "10.0");
332+
assert(Literal::f64_unsuffixed(-10.0), "-10.0");
333+
334+
assert(
335+
Literal::f64_unsuffixed(1e100),
336+
"10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0",
337+
);
277338
}
278339

279340
#[test]

0 commit comments

Comments
 (0)