From 77d617f9a0393b9d9327dd66f6d256d2fec14866 Mon Sep 17 00:00:00 2001 From: unspeaker Date: Mon, 17 Feb 2025 23:51:26 +0200 Subject: [PATCH] 38.54% coverage --- Cargo.lock | 2 ++ output/src/measure.rs | 42 +++++++++++++++++++++++++++++++++++------- tek/Cargo.toml | 4 ++++ tek/src/cli.rs | 8 +++++++- tek/src/view_meter.rs | 23 ++++++++++++++++++++--- 5 files changed, 68 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c1fea3af..ba45884c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1482,6 +1482,8 @@ dependencies = [ "backtrace", "clap", "palette", + "proptest", + "proptest-derive", "rand", "tek_jack", "tek_midi", diff --git a/output/src/measure.rs b/output/src/measure.rs index d097f421..784f0a28 100644 --- a/output/src/measure.rs +++ b/output/src/measure.rs @@ -43,13 +43,6 @@ impl std::fmt::Debug for Measure { } } impl Measure { - pub fn w (&self) -> usize { self.x.load(Relaxed) } - pub fn h (&self) -> usize { self.y.load(Relaxed) } - pub fn wh (&self) -> [usize;2] { [self.w(), self.h()] } - pub fn set_w (&self, w: impl Into) { self.x.store(w.into(), Relaxed) } - pub fn set_h (&self, h: impl Into) { self.y.store(h.into(), Relaxed) } - pub fn set_wh (&self, w: impl Into, h: impl Into) { self.set_w(w); self.set_h(h); } - pub fn format (&self) -> Arc { format!("{}x{}", self.w(), self.h()).into() } pub fn new () -> Self { Self { _engine: PhantomData::default(), @@ -57,10 +50,45 @@ impl Measure { y: Arc::new(0.into()), } } + pub fn set_w (&self, w: impl Into) -> &Self { + self.x.store(w.into(), Relaxed); + self + } + pub fn set_h (&self, h: impl Into) -> &Self { + self.y.store(h.into(), Relaxed); + self + } + pub fn set_wh (&self, w: impl Into, h: impl Into) -> &Self { + self.set_w(w); + self.set_h(h); + self + } + pub fn w (&self) -> usize { + self.x.load(Relaxed) + } + pub fn h (&self) -> usize { + self.y.load(Relaxed) + } + pub fn wh (&self) -> [usize;2] { + [self.w(), self.h()] + } + pub fn format (&self) -> Arc { + format!("{}x{}", self.w(), self.h()).into() + } pub fn of > (&self, item: T) -> Bsp, T> { Bsp::b(Fill::xy(self), item) } } +//#[cfg(test)] #[test] fn test_measure () { + //use tek_tui::*; + //let size: Measure = Measure::default().set_w(1usize).set_h(1usize).clone(); + //let size: Measure = (&Measure::new().set_wh(2usize, 1usize)).clone(); + //let _ = format!("{:?}", &size); + //let _ = size.wh(); + //let _ = size.format(); + //let _ = size.of(()); +//} + ///// A scrollable area. //pub struct Scroll(pub F, pub Direction, pub u64, PhantomData) //where diff --git a/tek/Cargo.toml b/tek/Cargo.toml index bbb59610..a7956b33 100644 --- a/tek/Cargo.toml +++ b/tek/Cargo.toml @@ -17,6 +17,10 @@ rand = "0.8.5" toml = "0.8.12" clap = { optional = true, version = "4.5.4", features = [ "derive" ] } +[dev-dependencies] +proptest = "^1" +proptest-derive = "^0.5.1" + [features] default = ["cli"] cli = ["clap"] diff --git a/tek/src/cli.rs b/tek/src/cli.rs index bfdd714b..9643d25d 100644 --- a/tek/src/cli.rs +++ b/tek/src/cli.rs @@ -200,7 +200,13 @@ impl Tek { Ok(tek) } } -#[cfg(test)] fn test_tek_cli () { +#[cfg(test)] #[test] fn test_tek_cli () { use clap::CommandFactory; TekCli::command().debug_assert(); + let jack = Jack::default(); + //TODO: + //let _ = Tek::new_clock(&jack, None, false, false, &[], &[]); + //let _ = Tek::new_sequencer(&jack, None, false, false, &[], &[]); + //let _ = Tek::new_groovebox(&jack, None, false, false, &[], &[], &[&[], &[]], &[&[], &[]]); + //let _ = Tek::new_arranger(&jack, None, false, false, &[], &[], &[&[], &[]], &[&[], &[]], 0, 0, 0); } diff --git a/tek/src/view_meter.rs b/tek/src/view_meter.rs index 298bf46f..378de0a9 100644 --- a/tek/src/view_meter.rs +++ b/tek/src/view_meter.rs @@ -25,7 +25,24 @@ fn view_meters (values: &[f32;2]) -> impl Content + use<'_> { format!("R/{:>+9.3}", values[1]), ) } -#[cfg(test)] #[test] fn test_view_meter () { - let _ = view_meter("", 0.0); - let _ = view_meters(&[0.0, 0.0]); +#[cfg(test)] mod test_view_meter { + use super::*; + use proptest::prelude::*; + #[test] fn test_view_meter () { + let _ = view_meter("", 0.0); + let _ = view_meters(&[0.0, 0.0]); + } + proptest! { + #[test] fn proptest_view_meter ( + label in "\\PC*", value in f32::MIN..f32::MAX + ) { + let _ = view_meter(&label, value); + } + #[test] fn proptest_view_meters ( + value1 in f32::MIN..f32::MAX, + value2 in f32::MIN..f32::MAX + ) { + let _ = view_meters(&[value1, value2]); + } + } }