diff options
Diffstat (limited to 'tests/get.rs')
| -rw-r--r-- | tests/get.rs | 111 |
1 files changed, 75 insertions, 36 deletions
diff --git a/tests/get.rs b/tests/get.rs index b446ff4..937ddf5 100644 --- a/tests/get.rs +++ b/tests/get.rs @@ -1,45 +1,9 @@ -use get::Get; - macro_rules! testcase { ($test:literal) => { concat!("tests/trybuild/", $test) }; } -#[derive(Get)] -pub struct Cat<'a, T> { - name: &'a str, - age: u64, - owner: T, -} - -#[derive(Get)] -pub struct CatTuple<'a, T>( - #[get(method = "name")] &'a str, - #[get(method = "age")] u64, - #[get(method = "owner")] T, -); - -#[test] -fn cat_struct() { - let cat = Cat { - name: "cat", - age: 1, - owner: (), - }; - assert_eq!(*cat.name(), "cat"); - assert_eq!(*cat.age(), 1); - assert!(matches!(cat.owner(), ())); -} - -#[test] -fn cat_tuple_struct() { - let cat = CatTuple("cat", 1, ()); - assert_eq!(*cat.name(), "cat"); - assert_eq!(*cat.age(), 1); - assert!(matches!(cat.owner(), ())); -} - #[test] fn trybuild() { let tests = trybuild::TestCases::new(); @@ -47,3 +11,78 @@ fn trybuild() { tests.compile_fail(testcase!("tuple-struct-without-attribute.rs")); tests.compile_fail(testcase!("invalid-attribute.rs")); } + +mod get { + use get::Get; + #[derive(Get)] + pub struct Cat<'a, T> { + name: &'a str, + age: u64, + owner: T, + } + + #[derive(Get)] + pub struct CatTuple<'a, T>( + #[get(method = "name")] &'a str, + #[get(method = "age")] u64, + #[get(method = "owner")] T, + ); + + #[test] + fn cat_struct() { + let cat = Cat { + name: "cat", + age: 1, + owner: (), + }; + assert_eq!(*cat.name(), "cat"); + assert_eq!(*cat.age(), 1); + assert!(matches!(cat.owner(), ())); + } + + #[test] + fn cat_tuple_struct() { + let cat = CatTuple("cat", 1, ()); + assert_eq!(*cat.name(), "cat"); + assert_eq!(*cat.age(), 1); + assert!(matches!(cat.owner(), ())); + } +} + +mod get_copy { + use get::GetCopy; + + #[derive(Clone, Copy, GetCopy)] + pub struct Cat<'a, T> { + name: &'a str, + age: u64, + owner: T, + } + + #[derive(Clone, Copy, GetCopy)] + pub struct CatTuple<'a, T>( + #[get(method = "name")] &'a str, + #[get(method = "age")] u64, + #[get(method = "owner")] T, + ); + + #[test] + fn cat_struct() { + let cat = Cat { + name: "cat", + age: 1, + owner: (), + }; + assert_eq!(cat.name(), "cat"); + assert_eq!(cat.age(), 1); + assert!(matches!(cat.owner(), ())); + } + + #[test] + fn cat_tuple_struct() { + let cat = CatTuple("cat", 1, ()); + assert_eq!(cat.name(), "cat"); + assert_eq!(cat.age(), 1); + assert!(matches!(cat.owner(), ())); + } +} |
