From 9946502098742151d54acf3133af17c67429204e Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Sat, 24 Apr 2021 17:24:26 +0200 Subject: Move tests to /tests Signed-off-by: Matthias Beyer --- src/lib.rs | 354 ---------------------------------------------------- tests/bool.rs | 11 ++ tests/common/mod.rs | 118 ++++++++++++++++++ tests/struct.rs | 41 ++++++ tests/vec.rs | 10 ++ 5 files changed, 180 insertions(+), 354 deletions(-) create mode 100644 tests/bool.rs create mode 100644 tests/common/mod.rs create mode 100644 tests/struct.rs create mode 100644 tests/vec.rs diff --git a/src/lib.rs b/src/lib.rs index c649ed8..9801318 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -14,357 +14,3 @@ pub mod value_builder; pub use crate::value_builder::*; -#[cfg(test)] -mod dummy_bool_test { - use super::*; - - struct DummyBackend; - impl Backend for DummyBackend { - fn bool_builder(&self) -> Box> { - Box::new(BoolValBuilder) - } - fn u8_builder(&self) -> Box> { - unimplemented!() - } - fn u16_builder(&self) -> Box> { - unimplemented!() - } - fn u32_builder(&self) -> Box> { - unimplemented!() - } - fn u64_builder(&self) -> Box> { - unimplemented!() - } - fn u128_builder(&self) -> Box> { - unimplemented!() - } - fn i8_builder(&self) -> Box> { - unimplemented!() - } - fn i16_builder(&self) -> Box> { - unimplemented!() - } - fn i32_builder(&self) -> Box> { - unimplemented!() - } - fn i64_builder(&self) -> Box> { - unimplemented!() - } - fn i128_builder(&self) -> Box> { - unimplemented!() - } - fn usize_builder(&self) -> Box> { - unimplemented!() - } - fn isize_builder(&self) -> Box> { - unimplemented!() - } - fn f32_builder(&self) -> Box> { - unimplemented!() - } - fn f64_builder(&self) -> Box> { - unimplemented!() - } - fn char_builder(&self) -> Box> { - unimplemented!() - } - fn string_builder(&self) -> Box> { - unimplemented!() - } - - fn option_builder(&self) -> Box>> { - unimplemented!() - } - - fn vec_builder(&self) -> Box>> - where T: 'static + BuildableValue - { - unimplemented!() - } - - fn struct_builder(&self) -> Box> { - unimplemented!() - } - } - - struct BoolValBuilder; - impl ValueBuilder for BoolValBuilder { - type Output = bool; - - fn build_value(&self, _question: &str) -> Result { - Ok(true) - } - } - - #[test] - fn test_build_value() { - let v = bool::builder(DummyBackend).build_value("Are you sure?").unwrap(); - assert!(v); - } - -} - -#[cfg(test)] -mod vec_test { - use super::*; - - struct DummyBackend; - impl Backend for DummyBackend { - fn bool_builder(&self) -> Box> { - Box::new(BoolValBuilder) - } - fn u8_builder(&self) -> Box> { - unimplemented!() - } - fn u16_builder(&self) -> Box> { - unimplemented!() - } - fn u32_builder(&self) -> Box> { - unimplemented!() - } - fn u64_builder(&self) -> Box> { - unimplemented!() - } - fn u128_builder(&self) -> Box> { - unimplemented!() - } - fn i8_builder(&self) -> Box> { - unimplemented!() - } - fn i16_builder(&self) -> Box> { - unimplemented!() - } - fn i32_builder(&self) -> Box> { - unimplemented!() - } - fn i64_builder(&self) -> Box> { - unimplemented!() - } - fn i128_builder(&self) -> Box> { - unimplemented!() - } - fn usize_builder(&self) -> Box> { - unimplemented!() - } - fn isize_builder(&self) -> Box> { - unimplemented!() - } - fn f32_builder(&self) -> Box> { - unimplemented!() - } - fn f64_builder(&self) -> Box> { - unimplemented!() - } - fn char_builder(&self) -> Box> { - unimplemented!() - } - fn string_builder(&self) -> Box> { - unimplemented!() - } - fn option_builder(&self) -> Box>> { - unimplemented!() - } - fn vec_builder(&self) -> Box>> - where T: 'static + BuildableValue - { - Box::new(VecBuilder::(std::marker::PhantomData)) - } - fn struct_builder(&self) -> Box> { - unimplemented!() - } - } - - struct BoolValBuilder; - impl ValueBuilder for BoolValBuilder { - type Output = bool; - - fn build_value(&self, _question: &str) -> Result { - Ok(true) - } - } - - pub struct VecBuilder(std::marker::PhantomData); - impl CollectionBuilder for VecBuilder { - type Output = Vec; - - fn build_collection(&self, value_desc: &str) -> Result { - let mut buf = vec![]; - - loop { - let v: T = T::builder(DummyBackend).build_value(value_desc)?; - buf.push(v); - - if buf.len() == 3 { - break - } - } - - Ok(buf) - } - } - - #[test] - fn test_build_vec() { - let v = Vec::::builder(DummyBackend).build_collection("flag").unwrap(); - assert_eq!(v, vec![true, true, true]); - } -} - - -#[cfg(test)] -mod struct_test { - use super::*; - - struct DummyBackend; - impl Backend for DummyBackend { - fn bool_builder(&self) -> Box> { - Box::new(BoolValBuilder) - } - fn u8_builder(&self) -> Box> { - Box::new(U8ValueBuilder) - } - fn u16_builder(&self) -> Box> { - unimplemented!() - } - fn u32_builder(&self) -> Box> { - unimplemented!() - } - fn u64_builder(&self) -> Box> { - unimplemented!() - } - fn u128_builder(&self) -> Box> { - unimplemented!() - } - fn i8_builder(&self) -> Box> { - unimplemented!() - } - fn i16_builder(&self) -> Box> { - unimplemented!() - } - fn i32_builder(&self) -> Box> { - unimplemented!() - } - fn i64_builder(&self) -> Box> { - unimplemented!() - } - fn i128_builder(&self) -> Box> { - unimplemented!() - } - fn usize_builder(&self) -> Box> { - unimplemented!() - } - fn isize_builder(&self) -> Box> { - unimplemented!() - } - fn f32_builder(&self) -> Box> { - unimplemented!() - } - fn f64_builder(&self) -> Box> { - unimplemented!() - } - fn char_builder(&self) -> Box> { - unimplemented!() - } - fn string_builder(&self) -> Box> { - unimplemented!() - } - fn option_builder(&self) -> Box>> { - unimplemented!() - } - fn vec_builder(&self) -> Box>> - where T: 'static + BuildableValue - { - Box::new(VecBuilder::(std::marker::PhantomData)) - } - - fn struct_builder(&self) -> Box> - where T: 'static + BuildableCollection - { - Box::new(StructBuilder::(std::marker::PhantomData)) - } - } - - struct BoolValBuilder; - impl ValueBuilder for BoolValBuilder { - type Output = bool; - - fn build_value(&self, _question: &str) -> Result { - Ok(true) - } - } - - struct U8ValueBuilder; - impl ValueBuilder for U8ValueBuilder { - type Output = u8; - - fn build_value(&self, _question: &str) -> Result { - Ok(42) - } - } - - pub struct VecBuilder(std::marker::PhantomData); - impl CollectionBuilder for VecBuilder { - type Output = Vec; - - fn build_collection(&self, value_desc: &str) -> Result { - let mut buf = vec![]; - - loop { - let v: T = T::builder(DummyBackend).build_value(value_desc)?; - buf.push(v); - - if buf.len() == 3 { - break - } - } - - Ok(buf) - } - } - - pub struct StructBuilder(std::marker::PhantomData); - impl CollectionBuilder for StructBuilder { - type Output = T; - - fn build_collection(&self, value_desc: &str) -> Result { - T::builder(DummyBackend).build_collection(value_desc) - } - } - - pub struct Configuration { - verbose: bool, - values: Vec, - } - - impl BuildableCollection for Configuration { - fn builder(_backend: B) -> Box> - where B: Backend - { - Box::new(ConfigStructBuilder) - } - } - - pub struct ConfigStructBuilder; - impl CollectionBuilder for ConfigStructBuilder { - type Output = Configuration; - - fn build_collection(&self, value_desc: &str) -> Result { - println!("Building {}", value_desc); - - let verbose = bool::builder(DummyBackend).build_value(value_desc)?; - let values = Vec::::builder(DummyBackend).build_collection(value_desc)?; - - Ok(Configuration { - verbose, - values, - }) - } - } - - #[test] - fn test_struct() { - let c = Configuration::builder(DummyBackend).build_collection("config").unwrap(); - assert!(c.verbose); - assert_eq!(c.values, [42, 42, 42]); - } -} diff --git a/tests/bool.rs b/tests/bool.rs new file mode 100644 index 0000000..17d23e8 --- /dev/null +++ b/tests/bool.rs @@ -0,0 +1,11 @@ +mod common; +use common::DummyBackend; + +use interactive_object_builder::*; + +#[test] +fn test_build_value() { + let v = bool::builder(DummyBackend).build_value("Are you sure?").unwrap(); + assert!(v); +} + diff --git a/tests/common/mod.rs b/tests/common/mod.rs new file mode 100644 index 0000000..26e0066 --- /dev/null +++ b/tests/common/mod.rs @@ -0,0 +1,118 @@ +use interactive_object_builder::*; + +pub struct DummyBackend; +impl Backend for DummyBackend { + fn bool_builder(&self) -> Box> { + Box::new(BoolValBuilder) + } + fn u8_builder(&self) -> Box> { + Box::new(U8ValueBuilder) + } + fn u16_builder(&self) -> Box> { + unimplemented!() + } + fn u32_builder(&self) -> Box> { + unimplemented!() + } + fn u64_builder(&self) -> Box> { + unimplemented!() + } + fn u128_builder(&self) -> Box> { + unimplemented!() + } + fn i8_builder(&self) -> Box> { + unimplemented!() + } + fn i16_builder(&self) -> Box> { + unimplemented!() + } + fn i32_builder(&self) -> Box> { + unimplemented!() + } + fn i64_builder(&self) -> Box> { + unimplemented!() + } + fn i128_builder(&self) -> Box> { + unimplemented!() + } + fn usize_builder(&self) -> Box> { + unimplemented!() + } + fn isize_builder(&self) -> Box> { + unimplemented!() + } + fn f32_builder(&self) -> Box> { + unimplemented!() + } + fn f64_builder(&self) -> Box> { + unimplemented!() + } + fn char_builder(&self) -> Box> { + unimplemented!() + } + fn string_builder(&self) -> Box> { + unimplemented!() + } + fn option_builder(&self) -> Box>> { + unimplemented!() + } + fn vec_builder(&self) -> Box>> + where T: 'static + BuildableValue + { + Box::new(VecBuilder::(std::marker::PhantomData)) + } + + fn struct_builder(&self) -> Box> + where T: 'static + BuildableCollection + { + Box::new(StructBuilder::(std::marker::PhantomData)) + } +} + +pub struct BoolValBuilder; +impl ValueBuilder for BoolValBuilder { + type Output = bool; + + fn build_value(&self, _question: &str) -> Result { + Ok(true) + } +} + +pub struct U8ValueBuilder; +impl ValueBuilder for U8ValueBuilder { + type Output = u8; + + fn build_value(&self, _question: &str) -> Result { + Ok(42) + } +} + +pub struct VecBuilder(std::marker::PhantomData); +impl CollectionBuilder for VecBuilder { + type Output = Vec; + + fn build_collection(&self, value_desc: &str) -> Result { + let mut buf = vec![]; + + loop { + let v: T = T::builder(DummyBackend).build_value(value_desc)?; + buf.push(v); + + if buf.len() == 3 { + break + } + } + + Ok(buf) + } +} + +pub struct StructBuilder(std::marker::PhantomData); +impl CollectionBuilder for StructBuilder { + type Output = T; + + fn build_collection(&self, value_desc: &str) -> Result { + T::builder(DummyBackend).build_collection(value_desc) + } +} + diff --git a/tests/struct.rs b/tests/struct.rs new file mode 100644 index 0000000..415c2dc --- /dev/null +++ b/tests/struct.rs @@ -0,0 +1,41 @@ +mod common; +use common::DummyBackend; + +use interactive_object_builder::*; + +pub struct Configuration { + verbose: bool, + values: Vec, +} + +impl BuildableCollection for Configuration { + fn builder(_backend: B) -> Box> + where B: Backend + { + Box::new(ConfigStructBuilder) + } +} + +pub struct ConfigStructBuilder; +impl CollectionBuilder for ConfigStructBuilder { + type Output = Configuration; + + fn build_collection(&self, value_desc: &str) -> Result { + println!("Building {}", value_desc); + + let verbose = bool::builder(DummyBackend).build_value(value_desc)?; + let values = Vec::::builder(DummyBackend).build_collection(value_desc)?; + + Ok(Configuration { + verbose, + values, + }) + } +} + +#[test] +fn test_struct() { + let c = Configuration::builder(DummyBackend).build_collection("config").unwrap(); + assert!(c.verbose); + assert_eq!(c.values, [42, 42, 42]); +} diff --git a/tests/vec.rs b/tests/vec.rs new file mode 100644 index 0000000..19a72dd --- /dev/null +++ b/tests/vec.rs @@ -0,0 +1,10 @@ +mod common; +use common::DummyBackend; + +use interactive_object_builder::*; + +#[test] +fn test_build_vec() { + let v = Vec::::builder(DummyBackend).build_collection("flag").unwrap(); + assert_eq!(v, vec![true, true, true]); +} -- cgit v1.2.3