From 2f250aa21476fcedf2de757fd6307b76cab5255f Mon Sep 17 00:00:00 2001 From: Andrew Kvapil Date: Mon, 19 Dec 2022 23:22:32 +0100 Subject: [PATCH] Fix seek test --- Cargo.lock | 10 ++++++++++ Cargo.toml | 1 + src/main.rs | 10 ++++++---- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 49beeac..0d525eb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -29,6 +29,7 @@ name = "afx" version = "0.1.0" dependencies = [ "anyhow", + "approx", "base64", "eframe", "kira", @@ -88,6 +89,15 @@ version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6" +[[package]] +name = "approx" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" +dependencies = [ + "num-traits", +] + [[package]] name = "arboard" version = "2.1.1" diff --git a/Cargo.toml b/Cargo.toml index 90692bd..4a92429 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,6 +24,7 @@ tracing-subscriber = "0.3.16" tracing-timing = "0.6.0" [dev-dependencies] +approx = "0.5.1" tempfile = "3.3.0" [profile.release] diff --git a/src/main.rs b/src/main.rs index e9d05b9..8eddb57 100644 --- a/src/main.rs +++ b/src/main.rs @@ -450,6 +450,8 @@ mod test { #[test] fn seek() -> Result<()> { + use approx::assert_relative_eq; + let model = build_test_model(); let mut manager = AudioManager::::new(AudioManagerSettings::default())?; let mut handles = HashMap::new(); @@ -461,11 +463,11 @@ mod test { std::thread::sleep(std::time::Duration::from_millis(100)); assert_eq!(model.read().items[0].status, ItemStatus::Playing); - process_message(ControlMessage::Seek(0, 0.5), &rx, &mut manager, &mut handles, &model)?; - std::thread::sleep(std::time::Duration::from_millis(100)); + process_message(ControlMessage::Seek(0, 1.5), &rx, &mut manager, &mut handles, &model)?; + std::thread::sleep(std::time::Duration::from_millis(600)); + process_message(ControlMessage::SyncPlaybackStatus, &rx, &mut manager, &mut handles, &model)?; assert_eq!(model.read().items[0].status, ItemStatus::Playing); - assert_eq!(model.read().items[0].target_position, 0.5); - // TODO requires syncs + assert_relative_eq!(model.read().items[0].target_position, 1.5, epsilon = 0.5); Ok(()) }