summaryrefslogtreecommitdiffstats
path: root/vendor/derive_builder/tests/generic_structs.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/derive_builder/tests/generic_structs.rs')
-rw-r--r--vendor/derive_builder/tests/generic_structs.rs59
1 files changed, 59 insertions, 0 deletions
diff --git a/vendor/derive_builder/tests/generic_structs.rs b/vendor/derive_builder/tests/generic_structs.rs
new file mode 100644
index 000000000..f5119f55c
--- /dev/null
+++ b/vendor/derive_builder/tests/generic_structs.rs
@@ -0,0 +1,59 @@
+#[macro_use]
+extern crate pretty_assertions;
+#[macro_use]
+extern crate derive_builder;
+
+use std::clone::Clone;
+use std::fmt::Display;
+
+#[derive(Debug, PartialEq, Default, Builder, Clone)]
+struct Generic<T: Display>
+where
+ T: Clone,
+{
+ ipsum: &'static str,
+ pub dolor: T,
+}
+
+#[derive(Debug, PartialEq, Default, Builder, Clone)]
+pub struct GenericReference<'a, T: 'a + Default>
+where
+ T: Display,
+{
+ pub bar: Option<&'a T>,
+}
+
+#[test]
+fn error_if_uninitialized() {
+ let error = GenericBuilder::<String>::default().build().unwrap_err();
+ assert_eq!(&error.to_string(), "`ipsum` must be initialized");
+}
+
+#[test]
+fn generic_builder() {
+ let x = GenericBuilder::default()
+ .ipsum("Generic")
+ .dolor(true)
+ .build()
+ .unwrap();
+
+ assert_eq!(
+ x,
+ Generic {
+ ipsum: "Generic".into(),
+ dolor: true,
+ }
+ );
+}
+
+#[test]
+fn generic_reference_builder() {
+ static BAR: u32 = 42;
+
+ let x = GenericReferenceBuilder::<'static, u32>::default()
+ .bar(Some(&BAR))
+ .build()
+ .unwrap();
+
+ assert_eq!(x, GenericReference { bar: Some(&BAR) });
+}