]> git.lizzy.rs Git - rust.git/blob - compiler/rustc_expand/src/tokenstream/tests.rs
Auto merge of #101969 - reez12g:issue-101306, r=reez12g
[rust.git] / compiler / rustc_expand / src / tokenstream / tests.rs
1 use crate::tests::string_to_stream;
2
3 use rustc_ast::token;
4 use rustc_ast::tokenstream::{TokenStream, TokenStreamBuilder};
5 use rustc_span::create_default_session_globals_then;
6 use rustc_span::{BytePos, Span, Symbol};
7
8 fn string_to_ts(string: &str) -> TokenStream {
9     string_to_stream(string.to_owned())
10 }
11
12 fn sp(a: u32, b: u32) -> Span {
13     Span::with_root_ctxt(BytePos(a), BytePos(b))
14 }
15
16 #[test]
17 fn test_concat() {
18     create_default_session_globals_then(|| {
19         let test_res = string_to_ts("foo::bar::baz");
20         let test_fst = string_to_ts("foo::bar");
21         let test_snd = string_to_ts("::baz");
22         let mut builder = TokenStreamBuilder::new();
23         builder.push(test_fst);
24         builder.push(test_snd);
25         let eq_res = builder.build();
26         assert_eq!(test_res.trees().count(), 5);
27         assert_eq!(eq_res.trees().count(), 5);
28         assert_eq!(test_res.eq_unspanned(&eq_res), true);
29     })
30 }
31
32 #[test]
33 fn test_to_from_bijection() {
34     create_default_session_globals_then(|| {
35         let test_start = string_to_ts("foo::bar(baz)");
36         let test_end = test_start.trees().cloned().collect();
37         assert_eq!(test_start, test_end)
38     })
39 }
40
41 #[test]
42 fn test_eq_0() {
43     create_default_session_globals_then(|| {
44         let test_res = string_to_ts("foo");
45         let test_eqs = string_to_ts("foo");
46         assert_eq!(test_res, test_eqs)
47     })
48 }
49
50 #[test]
51 fn test_eq_1() {
52     create_default_session_globals_then(|| {
53         let test_res = string_to_ts("::bar::baz");
54         let test_eqs = string_to_ts("::bar::baz");
55         assert_eq!(test_res, test_eqs)
56     })
57 }
58
59 #[test]
60 fn test_eq_3() {
61     create_default_session_globals_then(|| {
62         let test_res = string_to_ts("");
63         let test_eqs = string_to_ts("");
64         assert_eq!(test_res, test_eqs)
65     })
66 }
67
68 #[test]
69 fn test_diseq_0() {
70     create_default_session_globals_then(|| {
71         let test_res = string_to_ts("::bar::baz");
72         let test_eqs = string_to_ts("bar::baz");
73         assert_eq!(test_res == test_eqs, false)
74     })
75 }
76
77 #[test]
78 fn test_diseq_1() {
79     create_default_session_globals_then(|| {
80         let test_res = string_to_ts("(bar,baz)");
81         let test_eqs = string_to_ts("bar,baz");
82         assert_eq!(test_res == test_eqs, false)
83     })
84 }
85
86 #[test]
87 fn test_is_empty() {
88     create_default_session_globals_then(|| {
89         let test0 = TokenStream::default();
90         let test1 = TokenStream::token_alone(token::Ident(Symbol::intern("a"), false), sp(0, 1));
91         let test2 = string_to_ts("foo(bar::baz)");
92
93         assert_eq!(test0.is_empty(), true);
94         assert_eq!(test1.is_empty(), false);
95         assert_eq!(test2.is_empty(), false);
96     })
97 }
98
99 #[test]
100 fn test_dotdotdot() {
101     create_default_session_globals_then(|| {
102         let mut builder = TokenStreamBuilder::new();
103         builder.push(TokenStream::token_joint(token::Dot, sp(0, 1)));
104         builder.push(TokenStream::token_joint(token::Dot, sp(1, 2)));
105         builder.push(TokenStream::token_alone(token::Dot, sp(2, 3)));
106         let stream = builder.build();
107         assert!(stream.eq_unspanned(&string_to_ts("...")));
108         assert_eq!(stream.trees().count(), 1);
109     })
110 }