summaryrefslogtreecommitdiffstats
path: root/vendor/derive_setters/tests/basics.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/derive_setters/tests/basics.rs')
-rw-r--r--vendor/derive_setters/tests/basics.rs156
1 files changed, 156 insertions, 0 deletions
diff --git a/vendor/derive_setters/tests/basics.rs b/vendor/derive_setters/tests/basics.rs
new file mode 100644
index 000000000..0195c7d3c
--- /dev/null
+++ b/vendor/derive_setters/tests/basics.rs
@@ -0,0 +1,156 @@
+use derive_setters::*;
+
+use std::borrow::Cow;
+
+#[derive(Default, Setters, Debug, PartialEq, Eq)]
+#[setters(generate_delegates(ty = "BasicDelegateField", field = "x"))]
+#[setters(generate_delegates(ty = "BasicDelegateMethod", method = "get_x"))]
+struct BasicStruct {
+ #[setters(rename = "test")]
+ a: u32,
+ b: u32,
+ c: u32,
+}
+
+#[derive(Default, Debug, PartialEq, Eq)]
+struct BasicDelegateField {
+ x: BasicStruct,
+}
+
+#[derive(Default, Debug, PartialEq, Eq)]
+struct BasicDelegateMethod {
+ x: Option<BasicStruct>,
+}
+impl BasicDelegateMethod {
+ fn get_x(&mut self) -> &mut BasicStruct {
+ if self.x.is_none() {
+ self.x = Some(BasicStruct::default());
+ }
+ self.x.as_mut().unwrap()
+ }
+}
+
+#[test]
+fn basic_struct() {
+ assert_eq!(
+ BasicStruct::default().test(30).b(10).c(20),
+ BasicStruct { a: 30, b: 10, c: 20 },
+ );
+ assert_eq!(
+ BasicStruct::default().b(15).test(10),
+ BasicStruct { a: 10, b: 15, ..Default::default() },
+ );
+}
+
+#[test]
+fn delegated_structs() {
+ assert_eq!(
+ BasicDelegateField::default().b(15).test(10),
+ BasicDelegateField { x: BasicStruct { a: 10, b: 15, ..Default::default() } },
+ );
+ assert_eq!(
+ BasicDelegateMethod::default().b(15).test(10),
+ BasicDelegateMethod { x: Some(BasicStruct { a: 10, b: 15, ..Default::default() }) },
+ );
+}
+
+#[derive(Default, Setters, Debug, PartialEq, Eq)]
+struct GenericStruct<'a, T> {
+ a: Option<&'a T>,
+ b: Option<&'a T>,
+ c: T,
+}
+
+#[test]
+fn generic_struct() {
+ assert_eq!(
+ GenericStruct::default().a(Some(&30)).b(Some(&10)).c(20),
+ GenericStruct { a: Some(&30), b: Some(&10), c: 20 },
+ );
+ assert_eq!(
+ GenericStruct::default().b(Some(&15)).a(Some(&10)),
+ GenericStruct { a: Some(&10), b: Some(&15), ..Default::default() },
+ );
+}
+
+#[derive(Default, Setters, Debug, PartialEq, Eq)]
+#[setters(strip_option)]
+struct StripOptionStruct {
+ a: Option<u32>,
+ b: core::option::Option<u32>,
+ c: std::option::Option<u32>,
+ d: u32,
+}
+
+#[test]
+fn strip_option_struct() {
+ assert_eq!(
+ StripOptionStruct::default().a(3).b(42).c(43).d(7),
+ StripOptionStruct { a: Some(3), b: Some(42), c: Some(43), d: 7 },
+ );
+ assert_eq!(
+ StripOptionStruct::default().b(6),
+ StripOptionStruct { a: None, b: Some(6), c: None, d: 0 },
+ );
+}
+
+#[derive(Default, Setters, Debug, PartialEq, Eq)]
+#[setters(into, strip_option)]
+struct IntoStruct<'a> {
+ a: Cow<'a, str>,
+ b: Option<Cow<'a, str>>,
+}
+
+#[test]
+fn into_struct() {
+ let testb = "testb".to_string();
+ assert_eq!(
+ IntoStruct::default().a("testa").b(&testb),
+ IntoStruct { a: "testa".into(), b: Some("testb".into()) },
+ );
+ assert_eq!(
+ IntoStruct::default().a("testa").b(testb),
+ IntoStruct { a: "testa".into(), b: Some("testb".into()) },
+ );
+}
+
+#[derive(Default, Setters, Debug, PartialEq, Eq)]
+#[setters(prefix = "with_")]
+struct WithStruct {
+ #[setters(rename = "test")]
+ a: u32,
+ b: u32,
+ c: u32,
+}
+
+#[test]
+fn with_struct() {
+ assert_eq!(
+ WithStruct::default().test(30).with_b(10).with_c(20),
+ WithStruct { a: 30, b: 10, c: 20 },
+ );
+ assert_eq!(
+ WithStruct::default().with_b(15).test(10),
+ WithStruct { a: 10, b: 15, ..Default::default() },
+ );
+}
+
+#[derive(Default, Setters, Debug, PartialEq, Eq)]
+#[setters(bool)]
+struct BoolStruct {
+ a: bool,
+ b: bool,
+ c: bool,
+}
+
+#[test]
+fn bool_struct() {
+ assert_eq!(
+ BoolStruct::default().a().c(),
+ BoolStruct { a: true, b: false, c: true },
+ );
+ assert_eq!(
+ BoolStruct::default().b().a(),
+ BoolStruct { a: true, b: true, c: false },
+ );
+}