summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2021-04-24 13:23:05 +0200
committerMatthias Beyer <mail@beyermatthias.de>2021-04-24 13:23:05 +0200
commit851a1adf02093cdb094f85978bc1433fd18a28ec (patch)
tree5cb0cbc45af0e3704af8f1292385566bf4971dbd
parent8e4d1f43c5383c5efc112e39f035476a4e63713e (diff)
Add test for Vec<bool>
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
-rw-r--r--src/lib.rs104
1 files changed, 104 insertions, 0 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 6d62617..21d5ab4 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -95,3 +95,107 @@ mod dummy_bool_test {
}
}
+
+#[cfg(test)]
+mod vec_test {
+ use super::*;
+
+ struct DummyBackend;
+ impl Backend for DummyBackend {
+ type Error = ();
+
+ fn bool_builder(&self) -> Box<dyn ValueBuilder<Output = bool, Error = Self::Error>> {
+ Box::new(BoolValBuilder)
+ }
+ fn u8_builder(&self) -> Box<dyn ValueBuilder<Output = u8, Error = Self::Error>> {
+ unimplemented!()
+ }
+ fn u16_builder(&self) -> Box<dyn ValueBuilder<Output = u16, Error = Self::Error>> {
+ unimplemented!()
+ }
+ fn u32_builder(&self) -> Box<dyn ValueBuilder<Output = u32, Error = Self::Error>> {
+ unimplemented!()
+ }
+ fn u64_builder(&self) -> Box<dyn ValueBuilder<Output = u64, Error = Self::Error>> {
+ unimplemented!()
+ }
+ fn u128_builder(&self) -> Box<dyn ValueBuilder<Output = u128, Error = Self::Error>> {
+ unimplemented!()
+ }
+ fn i8_builder(&self) -> Box<dyn ValueBuilder<Output = i8, Error = Self::Error>> {
+ unimplemented!()
+ }
+ fn i16_builder(&self) -> Box<dyn ValueBuilder<Output = i16, Error = Self::Error>> {
+ unimplemented!()
+ }
+ fn i32_builder(&self) -> Box<dyn ValueBuilder<Output = i32, Error = Self::Error>> {
+ unimplemented!()
+ }
+ fn i64_builder(&self) -> Box<dyn ValueBuilder<Output = i64, Error = Self::Error>> {
+ unimplemented!()
+ }
+ fn i128_builder(&self) -> Box<dyn ValueBuilder<Output = i128, Error = Self::Error>> {
+ unimplemented!()
+ }
+ fn usize_builder(&self) -> Box<dyn ValueBuilder<Output = usize, Error = Self::Error>> {
+ unimplemented!()
+ }
+ fn isize_builder(&self) -> Box<dyn ValueBuilder<Output = isize, Error = Self::Error>> {
+ unimplemented!()
+ }
+ fn f32_builder(&self) -> Box<dyn ValueBuilder<Output = f32, Error = Self::Error>> {
+ unimplemented!()
+ }
+ fn f64_builder(&self) -> Box<dyn ValueBuilder<Output = f64, Error = Self::Error>> {
+ unimplemented!()
+ }
+ fn char_builder(&self) -> Box<dyn ValueBuilder<Output = char, Error = Self::Error>> {
+ unimplemented!()
+ }
+ fn string_builder(&self) -> Box<dyn ValueBuilder<Output = String, Error = Self::Error>> {
+ unimplemented!()
+ }
+ fn vec_builder<T>(&self) -> Box<dyn CollectionBuilder<Output = Vec<T>, Error = Self::Error>>
+ where T: 'static + BuildableValue
+ {
+ Box::new(VecBuilder::<T>(std::marker::PhantomData))
+ }
+ }
+
+ struct BoolValBuilder;
+ impl ValueBuilder for BoolValBuilder {
+ type Output = bool;
+ type Error = ();
+
+ fn build_value(&self, _question: &str) -> Result<Self::Output, Self::Error> {
+ Ok(true)
+ }
+ }
+
+ pub struct VecBuilder<T: 'static + BuildableValue>(std::marker::PhantomData<T>);
+ impl<T: BuildableValue> CollectionBuilder for VecBuilder<T> {
+ type Output = Vec<T>;
+ type Error = ();
+
+ fn build_collection(&self, value_desc: &str) -> Result<Self::Output, Self::Error> {
+ 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::<bool>::builder(DummyBackend).build_collection("flag").unwrap();
+ assert_eq!(v, vec![true, true, true]);
+ }
+}