| use super::*; | |
| use crate::create_default_session_globals_then; | |
| #[test] | |
| fn interner_tests() { | |
| let i = Interner::prefill(&[], &[]); | |
| // first one is zero: | |
| assert_eq!(i.intern_str("dog"), Symbol::new(0)); | |
| // re-use gets the same entry, even with a `ByteSymbol` | |
| assert_eq!(i.intern_byte_str(b"dog"), ByteSymbol::new(0)); | |
| // different string gets a different #: | |
| assert_eq!(i.intern_byte_str(b"cat"), ByteSymbol::new(1)); | |
| assert_eq!(i.intern_str("cat"), Symbol::new(1)); | |
| // dog is still at zero | |
| assert_eq!(i.intern_str("dog"), Symbol::new(0)); | |
| } | |
| #[test] | |
| fn interner_get() { | |
| let i = Interner::prefill(&["chicken"], &["cow"]); | |
| let dog_idx = i.intern_str("dog"); // 2 | |
| let cat_idx = i.intern_str("cat"); // 3 | |
| assert_eq!(i.get_str(Symbol::new(0)), "chicken"); | |
| assert_eq!(i.get_str(Symbol::new(1)), "cow"); | |
| assert_eq!(i.get_str(cat_idx), "cat"); | |
| assert_eq!(i.get_str(dog_idx), "dog"); | |
| } | |
| #[test] | |
| fn without_first_quote_test() { | |
| create_default_session_globals_then(|| { | |
| let i = Ident::from_str("'break"); | |
| assert_eq!(i.without_first_quote().name, kw::Break); | |
| }); | |
| } |