From fd32cbc34c57cd9d529b1910c2c04799d6154b63 Mon Sep 17 00:00:00 2001 From: unspeaker Date: Sat, 15 Feb 2025 19:30:32 +0000 Subject: [PATCH] add just cov-md and bump total coverage to 29.26% --- Justfile | 7 ++++++- edn/src/iter.rs | 41 +++++++++++++++++++++++++++-------------- midi/src/midi_edit.rs | 25 +++++++++++++++++++++++++ midi/src/midi_range.rs | 15 +++++++++++++++ midi/src/piano_h.rs | 7 ++++--- 5 files changed, 77 insertions(+), 18 deletions(-) diff --git a/Justfile b/Justfile index ca8ff164..7cea9f46 100644 --- a/Justfile +++ b/Justfile @@ -22,10 +22,15 @@ prof: doc: cargo doc -j4 --workspace --document-private-items covfig := "CARGO_INCREMENTAL=0 RUSTFLAGS='-Cinstrument-coverage' RUSTDOCFLAGS='-Cinstrument-coverage' LLVM_PROFILE_FILE='cov/cargo-test-%p-%m.profraw'" +grcov-binary := "--binary-path ./target/coverage/deps/" +grcov-ignore := "--ignore-not-existing --ignore '../*' --ignore \"/*\" --ignore 'target/*'" cov: rm -rf target/coverage/html || true {{covfig}} time cargo test -j4 --workspace --exclude jack --profile coverage - {{covfig}} time grcov . --binary-path ./target/coverage/deps/ -s . -t html --ignore-not-existing --ignore '../*' --ignore "/*" --ignore 'target/*' -o target/coverage/html + {{covfig}} time grcov . -s . {{grcov-binary}} {{grcov-ignore}} -t html -o target/coverage/html +cov-md: + {{covfig}} time cargo test -j4 --workspace --exclude jack --profile coverage + {{covfig}} time grcov . -s . {{grcov-binary}} {{grcov-ignore}} -t markdown llcov: time cargo llvm-cov --workspace --exclude jack --profile coverage --no-report time cargo llvm-cov --workspace --exclude jack --profile coverage --no-report --doc diff --git a/edn/src/iter.rs b/edn/src/iter.rs index 33da5a91..bf6d6096 100644 --- a/edn/src/iter.rs +++ b/edn/src/iter.rs @@ -109,19 +109,32 @@ pub const fn to_digit (c: char) -> Result { }) } #[cfg(test)] mod test_token_iter { - use proptest::prelude::*; - proptest! { - #[test] fn proptest_source_iter ( - source in "\\PC*" - ) { - let mut iter = crate::SourceIter::new(&source); - //let _ = iter.next(); - } - #[test] fn proptest_token_iter ( - source in "\\PC*" - ) { - let mut iter = crate::TokenIter::new(&source); - //let _ = iter.next(); - } + use super::*; + //use proptest::prelude::*; + //proptest! { + //#[test] fn proptest_source_iter ( + //source in "\\PC*" + //) { + //let mut iter = crate::SourceIter::new(&source); + ////let _ = iter.next(); + //} + //#[test] fn proptest_token_iter ( + //source in "\\PC*" + //) { + //let mut iter = crate::TokenIter::new(&source); + ////let _ = iter.next(); + //} + //} + #[test] fn test_iters () { + let mut iter = crate::SourceIter::new(&":foo :bar"); + let _ = iter.next(); + let mut iter = crate::TokenIter::new(&":foo :bar"); + let _ = iter.next(); + } + #[test] fn test_num () { + let digit = to_digit('0'); + let digit = to_digit('x'); + let number = to_number(&"123"); + let number = to_number(&"12asdf3"); } } diff --git a/midi/src/midi_edit.rs b/midi/src/midi_edit.rs index 5e3b6679..f5c5d557 100644 --- a/midi/src/midi_edit.rs +++ b/midi/src/midi_edit.rs @@ -279,3 +279,28 @@ impl Command for MidiEditCommand { ////// TODO: kpat!(Char('/')) => // toggle 3plet ////// TODO: kpat!(Char('?')) => // toggle dotted //}); + +#[cfg(test)] #[test] fn test_midi_edit () { + let mut editor = MidiEditor { + mode: PianoHorizontal::new(Some(&Arc::new(RwLock::new(MidiClip::stop_all())))), + size: Default::default(), + keys: Default::default(), + }; + let _ = editor.put_note(true); + let _ = editor.put_note(false); + let _ = editor.clip_status(); + let _ = editor.edit_status(); + struct TestEditorHost(Option); + has_editor!(|self: TestEditorHost|{ + editor = self.0; + editor_w = 0; + editor_h = 0; + is_editing = false; + }); + let mut host = TestEditorHost(Some(editor)); + let _ = host.editor(); + let _ = host.editor_mut(); + let _ = host.is_editing(); + let _ = host.editor_w(); + let _ = host.editor_h(); +} diff --git a/midi/src/midi_range.rs b/midi/src/midi_range.rs index 308a4ae2..5ce55a73 100644 --- a/midi/src/midi_range.rs +++ b/midi/src/midi_range.rs @@ -62,3 +62,18 @@ impl NoteRange for MidiRangeModel { fn note_lo (&self) -> &AtomicUsize { &self.note_lo } fn note_axis (&self) -> &AtomicUsize { &self.note_axis } } + +#[cfg(test)] #[test] fn test_midi_range () { + let model = MidiRangeModel::from((1, false)); + + let _ = model.time_len(); + let _ = model.time_zoom(); + let _ = model.time_lock(); + let _ = model.time_start(); + let _ = model.time_axis(); + let _ = model.time_end(); + + let _ = model.note_lo(); + let _ = model.note_axis(); + let _ = model.note_hi(); +} diff --git a/midi/src/piano_h.rs b/midi/src/piano_h.rs index 08414212..e879d758 100644 --- a/midi/src/piano_h.rs +++ b/midi/src/piano_h.rs @@ -104,9 +104,10 @@ impl PianoHorizontal { match event { MidiMessage::NoteOn { key, .. } => { let note = key.as_int() as usize; - let cell = buf.get_mut(x, note).unwrap(); - cell.set_char('█'); - cell.set_style(style); + if let Some(cell) = buf.get_mut(x, note) { + cell.set_char('█'); + cell.set_style(style); + } notes_on[note] = true }, MidiMessage::NoteOff { key, .. } => {