test_ident.rs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. use proc_macro2::{Ident, Span, TokenStream};
  2. use std::str::FromStr;
  3. use syn::Result;
  4. fn parse(s: &str) -> Result<Ident> {
  5. syn::parse2(TokenStream::from_str(s).unwrap())
  6. }
  7. fn new(s: &str) -> Ident {
  8. Ident::new(s, Span::call_site())
  9. }
  10. #[test]
  11. fn ident_parse() {
  12. parse("String").unwrap();
  13. }
  14. #[test]
  15. fn ident_parse_keyword() {
  16. parse("abstract").unwrap_err();
  17. }
  18. #[test]
  19. fn ident_parse_empty() {
  20. parse("").unwrap_err();
  21. }
  22. #[test]
  23. fn ident_parse_lifetime() {
  24. parse("'static").unwrap_err();
  25. }
  26. #[test]
  27. fn ident_parse_underscore() {
  28. parse("_").unwrap_err();
  29. }
  30. #[test]
  31. fn ident_parse_number() {
  32. parse("255").unwrap_err();
  33. }
  34. #[test]
  35. fn ident_parse_invalid() {
  36. parse("a#").unwrap_err();
  37. }
  38. #[test]
  39. fn ident_new() {
  40. new("String");
  41. }
  42. #[test]
  43. fn ident_new_keyword() {
  44. new("abstract");
  45. }
  46. #[test]
  47. #[should_panic(expected = "use Option<Ident>")]
  48. fn ident_new_empty() {
  49. new("");
  50. }
  51. #[test]
  52. #[should_panic(expected = "not a valid Ident")]
  53. fn ident_new_lifetime() {
  54. new("'static");
  55. }
  56. #[test]
  57. fn ident_new_underscore() {
  58. new("_");
  59. }
  60. #[test]
  61. #[should_panic(expected = "use Literal instead")]
  62. fn ident_new_number() {
  63. new("255");
  64. }
  65. #[test]
  66. #[should_panic(expected = "\"a#\" is not a valid Ident")]
  67. fn ident_new_invalid() {
  68. new("a#");
  69. }