From e8fa9dd35fd44402a708b4dda26cc62e4fb17903 Mon Sep 17 00:00:00 2001 From: noahbaculi Date: Wed, 26 Jul 2023 12:29:12 -0700 Subject: [PATCH] test_create_guitar_compositions --- .github/workflows/rust_build_and_test.yml | 4 +-- src/lib.rs | 42 ++++++++++++++++++++++- 2 files changed, 43 insertions(+), 3 deletions(-) diff --git a/.github/workflows/rust_build_and_test.yml b/.github/workflows/rust_build_and_test.yml index 8f891e9..b37be3e 100644 --- a/.github/workflows/rust_build_and_test.yml +++ b/.github/workflows/rust_build_and_test.yml @@ -14,8 +14,8 @@ jobs: runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v3 - - run: cargo build - - run: cargo clippy -- -D warnings + - run: cargo build --examples --benches + - run: cargo clippy --examples --benches -- -D warnings test: name: Test diff --git a/src/lib.rs b/src/lib.rs index abba2fb..64fc7e9 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -25,7 +25,7 @@ pub struct CompositionInput { } #[wasm_bindgen(getter_with_clone)] -#[derive(Debug, Serialize, Deserialize)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] pub struct Composition { pub tab: String, pub max_fret_span: u8, @@ -75,3 +75,43 @@ pub fn create_guitar_compositions(composition_input: CompositionInput) -> Result Ok(compositions) } +#[cfg(test)] +mod test_create_guitar_compositions { + use super::*; + + #[test] + fn test_create_guitar_compositions_valid_input() { + let composition_input = CompositionInput { + pitches: "E2\nA2\nD3\nG3\nB3\nE4".to_owned(), + tuning_name: "standard".to_string(), + guitar_num_frets: 20, + guitar_capo: 0, + num_arrangements: 1, + width: 24, + padding: 2, + playback_index: Some(3), + }; + + let compositions = create_guitar_compositions(composition_input).unwrap(); + let expected_composition = Composition { + tab: " ▼\n-----------------0------\n--------------0---------\n-----------0------------\n--------0---------------\n-----0------------------\n--0---------------------\n ▲\n".to_owned(), + max_fret_span: 0, + }; + + assert_eq!(compositions[0], expected_composition); + } + #[test] + fn test_error() { + let composition_input = CompositionInput { + pitches: "E2\nA2\nD3\n???\nG3\nB3\nE4".to_owned(), + tuning_name: "standard".to_string(), + guitar_num_frets: 20, + guitar_capo: 0, + num_arrangements: 1, + width: 20, + padding: 2, + playback_index: Some(3), + }; + assert!(create_guitar_compositions(composition_input).is_err()); + } +}