aboutsummaryrefslogtreecommitdiff
path: root/tests/test.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test.rs')
-rw-r--r--tests/test.rs60
1 files changed, 45 insertions, 15 deletions
diff --git a/tests/test.rs b/tests/test.rs
index 957d470..d5a3490 100644
--- a/tests/test.rs
+++ b/tests/test.rs
@@ -4,7 +4,7 @@ use std::borrow::Cow;
use std::collections::BTreeSet;
use proc_macro2::{Ident, Span, TokenStream};
-use quote::{format_ident, quote, TokenStreamExt};
+use quote::{format_ident, quote, quote_spanned, TokenStreamExt};
struct X;
@@ -26,8 +26,30 @@ fn test_quote_impl() {
let expected = concat!(
"impl < 'a , T : ToTokens > ToTokens for & 'a T { ",
- "fn to_tokens ( & self , tokens : & mut TokenStream ) { ",
- "( * * self ) . to_tokens ( tokens ) ",
+ "fn to_tokens (& self , tokens : & mut TokenStream) { ",
+ "(* * self) . to_tokens (tokens) ",
+ "} ",
+ "}"
+ );
+
+ assert_eq!(expected, tokens.to_string());
+}
+
+#[test]
+fn test_quote_spanned_impl() {
+ let span = Span::call_site();
+ let tokens = quote_spanned! {span=>
+ impl<'a, T: ToTokens> ToTokens for &'a T {
+ fn to_tokens(&self, tokens: &mut TokenStream) {
+ (**self).to_tokens(tokens)
+ }
+ }
+ };
+
+ let expected = concat!(
+ "impl < 'a , T : ToTokens > ToTokens for & 'a T { ",
+ "fn to_tokens (& self , tokens : & mut TokenStream) { ",
+ "(* * self) . to_tokens (tokens) ",
"} ",
"}"
);
@@ -40,7 +62,7 @@ fn test_substitution() {
let x = X;
let tokens = quote!(#x <#x> (#x) [#x] {#x});
- let expected = "X < X > ( X ) [ X ] { X }";
+ let expected = "X < X > (X) [X] { X }";
assert_eq!(expected, tokens.to_string());
}
@@ -96,10 +118,10 @@ fn test_advanced() {
"phantom : :: std :: marker :: PhantomData < Cow < 'a , str > > , ",
"} ",
"impl < 'a , T > :: serde :: Serialize for SerializeWith < 'a , T > where T : Serialize { ",
- "fn serialize < S > ( & self , s : & mut S ) -> Result < ( ) , S :: Error > ",
+ "fn serialize < S > (& self , s : & mut S) -> Result < () , S :: Error > ",
"where S : :: serde :: Serializer ",
"{ ",
- "SomeTrait :: serialize_with ( self . value , s ) ",
+ "SomeTrait :: serialize_with (self . value , s) ",
"} ",
"} ",
"SerializeWith { ",
@@ -130,7 +152,7 @@ fn test_integer() {
#ii8 #ii16 #ii32 #ii64 #ii128 #iisize
#uu8 #uu16 #uu32 #uu64 #uu128 #uusize
};
- let expected = "-1i8 -1i16 -1i32 -1i64 -1i128 -1isize 1u8 1u16 1u32 1u64 1u128 1usize";
+ let expected = "- 1i8 - 1i16 - 1i32 - 1i64 - 1i128 - 1isize 1u8 1u16 1u32 1u64 1u128 1usize";
assert_eq!(expected, tokens.to_string());
}
@@ -160,7 +182,7 @@ fn test_char() {
let tokens = quote! {
#zero #pound #quote #apost #newline #heart
};
- let expected = "'\\u{0}' '#' '\"' '\\'' '\\n' '\\u{2764}'";
+ let expected = "'\\u{0}' '#' '\"' '\\'' '\\n' '\u{2764}'";
assert_eq!(expected, tokens.to_string());
}
@@ -341,12 +363,14 @@ fn test_format_ident() {
let id2 = format_ident!("Hello{x}", x = 5usize);
let id3 = format_ident!("Hello{}_{x}", id0, x = 10usize);
let id4 = format_ident!("Aa", span = Span::call_site());
+ let id5 = format_ident!("Hello{}", Cow::Borrowed("World"));
assert_eq!(id0, "Aa");
assert_eq!(id1, "HelloAa");
assert_eq!(id2, "Hello5");
assert_eq!(id3, "HelloAa_10");
assert_eq!(id4, "Aa");
+ assert_eq!(id5, "HelloWorld");
}
#[test]
@@ -365,7 +389,7 @@ fn test_outer_line_comment() {
let tokens = quote! {
/// doc
};
- let expected = "# [ doc = r\" doc\" ]";
+ let expected = "# [doc = r\" doc\"]";
assert_eq!(expected, tokens.to_string());
}
@@ -374,7 +398,7 @@ fn test_inner_line_comment() {
let tokens = quote! {
//! doc
};
- let expected = "# ! [ doc = r\" doc\" ]";
+ let expected = "# ! [doc = r\" doc\"]";
assert_eq!(expected, tokens.to_string());
}
@@ -383,7 +407,7 @@ fn test_outer_block_comment() {
let tokens = quote! {
/** doc */
};
- let expected = "# [ doc = r\" doc \" ]";
+ let expected = "# [doc = r\" doc \"]";
assert_eq!(expected, tokens.to_string());
}
@@ -392,7 +416,7 @@ fn test_inner_block_comment() {
let tokens = quote! {
/*! doc */
};
- let expected = "# ! [ doc = r\" doc \" ]";
+ let expected = "# ! [doc = r\" doc \"]";
assert_eq!(expected, tokens.to_string());
}
@@ -401,7 +425,7 @@ fn test_outer_attr() {
let tokens = quote! {
#[inline]
};
- let expected = "# [ inline ]";
+ let expected = "# [inline]";
assert_eq!(expected, tokens.to_string());
}
@@ -410,7 +434,7 @@ fn test_inner_attr() {
let tokens = quote! {
#![no_std]
};
- let expected = "# ! [ no_std ]";
+ let expected = "# ! [no_std]";
assert_eq!(expected, tokens.to_string());
}
@@ -424,6 +448,12 @@ fn test_star_after_repetition() {
)*
*out = None;
};
- let expected = "f ( '0' ) ; f ( '1' ) ; * out = None ;";
+ let expected = "f ('0') ; f ('1') ; * out = None ;";
assert_eq!(expected, tokens.to_string());
}
+
+#[test]
+fn test_quote_raw_id() {
+ let id = quote!(r#raw_id);
+ assert_eq!(id.to_string(), "r#raw_id");
+}