blob: ab21544c704654dc3895db87939dd543f3edc160 [file] [log] [blame]
David Tolnay7d8b3312019-03-10 01:26:11 -08001extern crate syn;
2
3mod features;
4
5#[macro_use]
6mod macros;
7
8use syn::parse::Parser;
9use syn::Attribute;
10
11#[test]
12fn test_meta_item_word() {
13 test("#[foo]")
14}
15
16#[test]
17fn test_meta_item_name_value() {
18 test("#[foo = 5]")
19}
20
21#[test]
22fn test_meta_item_bool_value() {
23 test("#[foo = true]");
24 test("#[foo = false]")
25}
26
27#[test]
28fn test_meta_item_list_lit() {
29 test("#[foo(5)]")
30}
31
32#[test]
33fn test_meta_item_list_word() {
34 test("#[foo(bar)]")
35}
36
37#[test]
38fn test_meta_item_list_name_value() {
39 test("#[foo(bar = 5)]")
40}
41
42#[test]
43fn test_meta_item_list_bool_value() {
44 test("#[foo(bar = true)]")
45}
46
47#[test]
48fn test_meta_item_multiple() {
49 test("#[foo(word, name = 5, list(name2 = 6), word2)]")
50}
51
52#[test]
53fn test_bool_lit() {
54 test("#[foo(true)]")
55}
56
57fn test(input: &str) {
58 let attrs = Attribute::parse_outer.parse_str(input).unwrap();
59
60 assert_eq!(attrs.len(), 1);
61
62 let attr = attrs.into_iter().next().unwrap();
63 let interpret = snapshot!(attr.interpret_meta().unwrap());
64 let parse = snapshot!(attr.parse_meta().unwrap());
65
66 assert_eq!(interpret, parse);
67}