1 use crate::tests::string_to_stream;
4 use rustc_ast::tokenstream::{TokenStream, TokenStreamBuilder};
5 use rustc_span::create_default_session_globals_then;
6 use rustc_span::{BytePos, Span, Symbol};
8 fn string_to_ts(string: &str) -> TokenStream {
9 string_to_stream(string.to_owned())
12 fn sp(a: u32, b: u32) -> Span {
13 Span::with_root_ctxt(BytePos(a), BytePos(b))
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);
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)
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)
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)
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)
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)
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)
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)");
93 assert_eq!(test0.is_empty(), true);
94 assert_eq!(test1.is_empty(), false);
95 assert_eq!(test2.is_empty(), false);
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);