test_case_core/
comment.rs

1use crate::TokenStream2;
2use quote::ToTokens;
3use syn::parse::{Parse, ParseStream};
4use syn::{LitStr, Token};
5
6#[derive(Clone, Debug)]
7pub struct TestCaseComment {
8    _semicolon: Token![;],
9    pub comment: LitStr,
10}
11
12impl Parse for TestCaseComment {
13    fn parse(input: ParseStream) -> syn::Result<Self> {
14        Ok(Self {
15            _semicolon: input.parse()?,
16            comment: input.parse()?,
17        })
18    }
19}
20
21impl ToTokens for TestCaseComment {
22    fn to_tokens(&self, tokens: &mut TokenStream2) {
23        self._semicolon.to_tokens(tokens);
24        self.comment.to_tokens(tokens);
25    }
26}
27
28#[cfg(test)]
29mod tests {
30    use crate::comment::TestCaseComment;
31    use proc_macro2::TokenStream;
32    use syn::parse_quote;
33
34    #[test]
35    fn parses_token_stream() {
36        let input: TokenStream = parse_quote! { ; "abcdef" };
37        let actual: TestCaseComment = syn::parse2(input).unwrap();
38        assert_eq!(actual.comment.value(), "abcdef")
39    }
40}