-
- #[test]
- fn test_extend_empty() {
- with_globals(|| {
- // Append a token onto an empty token stream.
- let mut stream = TokenStream::empty();
- stream.extend(vec![string_to_ts("t")]);
-
- let expected = string_to_ts("t");
- assert!(stream.eq_unspanned(&expected));
- });
- }
-
- #[test]
- fn test_extend_nothing() {
- with_globals(|| {
- // Append nothing onto a token stream containing one token.
- let mut stream = string_to_ts("t");
- stream.extend(vec![]);
-
- let expected = string_to_ts("t");
- assert!(stream.eq_unspanned(&expected));
- });
- }
-
- #[test]
- fn test_extend_single() {
- with_globals(|| {
- // Append a token onto token stream containing a single token.
- let mut stream = string_to_ts("t1");
- stream.extend(vec![string_to_ts("t2")]);
-
- let expected = string_to_ts("t1 t2");
- assert!(stream.eq_unspanned(&expected));
- });
- }
-
- #[test]
- fn test_extend_in_place() {
- with_globals(|| {
- // Append a token onto token stream containing a reference counted
- // vec of tokens. The token stream has a reference count of 1 so
- // this can happen in place.
- let mut stream = string_to_ts("t1 t2");
- stream.extend(vec![string_to_ts("t3")]);
-
- let expected = string_to_ts("t1 t2 t3");
- assert!(stream.eq_unspanned(&expected));
- });
- }
-
- #[test]
- fn test_extend_copy() {
- with_globals(|| {
- // Append a token onto token stream containing a reference counted
- // vec of tokens. The token stream is shared so the extend takes
- // place on a copy.
- let mut stream = string_to_ts("t1 t2");
- let _incref = stream.clone();
- stream.extend(vec![string_to_ts("t3")]);
-
- let expected = string_to_ts("t1 t2 t3");
- assert!(stream.eq_unspanned(&expected));
- });
- }
-
- #[test]
- fn test_extend_no_join() {
- with_globals(|| {
- let first = TokenTree::Token(DUMMY_SP, Token::Dot);
- let second = TokenTree::Token(DUMMY_SP, Token::Dot);
-
- // Append a dot onto a token stream containing a dot, but do not
- // join them.
- let mut stream = TokenStream::from(first);
- stream.extend(vec![TokenStream::from(second)]);
-
- let expected = string_to_ts(". .");
- assert!(stream.eq_unspanned(&expected));
-
- let unexpected = string_to_ts("..");
- assert!(!stream.eq_unspanned(&unexpected));
- });
- }
-
- #[test]
- fn test_extend_join() {
- with_globals(|| {
- let first = TokenTree::Token(DUMMY_SP, Token::Dot).joint();
- let second = TokenTree::Token(DUMMY_SP, Token::Dot);
-
- // Append a dot onto a token stream containing a dot, forming a
- // dotdot.
- let mut stream = first;
- stream.extend(vec![TokenStream::from(second)]);
-
- let expected = string_to_ts("..");
- assert!(stream.eq_unspanned(&expected));
-
- let unexpected = string_to_ts(". .");
- assert!(!stream.eq_unspanned(&unexpected));
- });
- }