summaryrefslogtreecommitdiff
path: root/tests/get.rs
diff options
context:
space:
mode:
authorJohn Turner <jturner.usa@gmail.com>2023-04-20 01:48:17 -0400
committerJohn Turner <jturner.usa@gmail.com>2023-04-20 01:48:17 -0400
commit66e43c415713dc112d52247b758bf8254756ebde (patch)
tree995c89c2fe7cf42ce1dccf965052e45aaf4ac34c /tests/get.rs
parent76f5fef8e35d5698d163c062fe2082f8949491f6 (diff)
downloadget-66e43c415713dc112d52247b758bf8254756ebde.tar.gz
added GetCopy derive macro
Diffstat (limited to 'tests/get.rs')
-rw-r--r--tests/get.rs111
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(), ()));
+ }
+}