summaryrefslogtreecommitdiffstats
path: root/vendor/derive_builder/tests/setter_pattern.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-30 18:31:44 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-30 18:31:44 +0000
commitc23a457e72abe608715ac76f076f47dc42af07a5 (patch)
tree2772049aaf84b5c9d0ed12ec8d86812f7a7904b6 /vendor/derive_builder/tests/setter_pattern.rs
parentReleasing progress-linux version 1.73.0+dfsg1-1~progress7.99u1. (diff)
downloadrustc-c23a457e72abe608715ac76f076f47dc42af07a5.tar.xz
rustc-c23a457e72abe608715ac76f076f47dc42af07a5.zip
Merging upstream version 1.74.1+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/derive_builder/tests/setter_pattern.rs')
-rw-r--r--vendor/derive_builder/tests/setter_pattern.rs107
1 files changed, 107 insertions, 0 deletions
diff --git a/vendor/derive_builder/tests/setter_pattern.rs b/vendor/derive_builder/tests/setter_pattern.rs
new file mode 100644
index 000000000..b4454891e
--- /dev/null
+++ b/vendor/derive_builder/tests/setter_pattern.rs
@@ -0,0 +1,107 @@
+#[macro_use]
+extern crate pretty_assertions;
+#[macro_use]
+extern crate derive_builder;
+
+#[derive(Debug, PartialEq, Default, Builder, Clone)]
+#[builder(pattern = "immutable")]
+struct Lorem {
+ immutable: u32,
+ #[builder(pattern = "mutable")]
+ mutable_override: u32,
+}
+
+#[derive(Debug, PartialEq, Default, Builder, Clone)]
+#[builder(pattern = "mutable")]
+struct Ipsum {
+ mutable: u32,
+ #[builder(pattern = "owned")]
+ owned_override: u32,
+}
+
+#[derive(Debug, PartialEq, Default, Builder, Clone)]
+#[builder(pattern = "owned")]
+struct Dolor {
+ #[builder(pattern = "immutable")]
+ immutable_override: u32,
+ owned: u32,
+}
+
+#[derive(Debug, PartialEq, Default, Builder, Clone)]
+struct Sit {
+ default: u32,
+}
+
+type ImmutableSetter<T, U> = fn(&T, U) -> T;
+type OwnedSetter<T, U> = fn(T, U) -> T;
+type MutableSetter<T, U> = fn(&mut T, U) -> &mut T;
+
+#[test]
+fn mutable_by_default() {
+ // the setter must have the correct signature
+ let mutable_setter: MutableSetter<SitBuilder, u32> = SitBuilder::default;
+
+ let mut old = <SitBuilder as Default>::default();
+ mutable_setter(&mut old, 42);
+ assert_eq!(old.default, Some(42));
+}
+
+#[test]
+fn mutable() {
+ // the setter must have the correct signature
+ let mutable_setter: MutableSetter<IpsumBuilder, u32> = IpsumBuilder::mutable;
+
+ let mut old = IpsumBuilder::default();
+ mutable_setter(&mut old, 42);
+ assert_eq!(old.mutable, Some(42));
+}
+
+#[test]
+fn mutable_override() {
+ // the setter must have the correct signature
+ let mutable_setter: MutableSetter<LoremBuilder, u32> = LoremBuilder::mutable_override;
+
+ let mut old = LoremBuilder::default();
+ mutable_setter(&mut old, 42);
+ assert_eq!(old.mutable_override, Some(42));
+}
+
+#[test]
+fn immutable() {
+ // the setter must have the correct signature
+ let immutable_setter: ImmutableSetter<LoremBuilder, u32> = LoremBuilder::immutable;
+
+ let old = LoremBuilder::default();
+ let new = immutable_setter(&old, 42);
+ assert_eq!(new.immutable, Some(42));
+}
+
+#[test]
+fn immutable_override() {
+ // the setter must have the correct signature
+ let immutable_setter: ImmutableSetter<DolorBuilder, u32> = DolorBuilder::immutable_override;
+
+ let old = DolorBuilder::default();
+ let new = immutable_setter(&old, 42);
+ assert_eq!(new.immutable_override, Some(42));
+}
+
+#[test]
+fn owned() {
+ // the setter must have the correct signature
+ let owned_setter: OwnedSetter<DolorBuilder, u32> = DolorBuilder::owned;
+
+ let old = DolorBuilder::default();
+ let new = owned_setter(old, 42);
+ assert_eq!(new.owned, Some(42));
+}
+
+#[test]
+fn owned_override() {
+ // the setter must have the correct signature
+ let owned_setter: OwnedSetter<IpsumBuilder, u32> = IpsumBuilder::owned_override;
+
+ let old = IpsumBuilder::default();
+ let new = owned_setter(old, 42);
+ assert_eq!(new.owned_override, Some(42));
+}