Skip to content

Commit

Permalink
Make playback backend-agnostic; Fix test
Browse files Browse the repository at this point in the history
  • Loading branch information
viluon committed Dec 19, 2022
1 parent 2f250aa commit c7c4091
Showing 1 changed file with 13 additions and 7 deletions.
20 changes: 13 additions & 7 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ mod import;
mod model;
mod ui;

use kira::manager::backend::Backend;
use model::*;
use ui::*;

Expand Down Expand Up @@ -99,10 +100,10 @@ fn process_control_messages(
}
}

fn process_message(
fn process_message<B: Backend>(
msg: ControlMessage,
tx: &Sender<ControlMessage>,
manager: &mut AudioManager,
manager: &mut AudioManager<B>,
handles: &mut HashMap<u64, StreamingSoundHandle<FromFileError>>,
model: &Arc<RwLock<Model>>,
) -> Result<()> {
Expand Down Expand Up @@ -283,11 +284,11 @@ fn process_message(
}
}

fn begin_playback(
fn begin_playback<B: Backend>(
model: &Arc<RwLock<Model>>,
id: u64,
mut edit_item: impl FnMut(u64, &mut dyn FnMut(&mut Item) -> String) -> Option<String>,
manager: &mut AudioManager,
manager: &mut AudioManager<B>,
) -> Result<StreamingSoundHandle<FromFileError>> {
let (file, position, looped, muted, volume) = {
let model = model.read();
Expand Down Expand Up @@ -327,6 +328,10 @@ mod test {
use super::*;
use eframe::epaint::Color32;

fn mock_audio_manager() -> AudioManager<kira::manager::backend::mock::MockBackend> {
AudioManager::new(AudioManagerSettings::default()).unwrap()
}

fn build_test_model() -> Model {
let path = "samples/416529__inspectorj__bird-whistling-single-robin-a.wav".to_string();
Model {
Expand Down Expand Up @@ -376,7 +381,7 @@ mod test {
m.items[0].stems[0].path = path;
m
};
let mut manager = AudioManager::<CpalBackend>::new(AudioManagerSettings::default())?;
let mut manager = mock_audio_manager();
let mut handles = HashMap::new();

let msg = ControlMessage::Play(0);
Expand All @@ -399,7 +404,7 @@ mod test {
#[test]
fn play_and_pause() -> Result<()> {
let model = build_test_model();
let mut manager = AudioManager::<CpalBackend>::new(AudioManagerSettings::default())?;
let mut manager = mock_audio_manager();
let mut handles = HashMap::new();

let model = Arc::new(RwLock::new(model));
Expand All @@ -419,7 +424,7 @@ mod test {
#[test]
fn play_many() -> Result<()> {
let model = build_test_model();
let mut manager = AudioManager::<CpalBackend>::new(AudioManagerSettings::default())?;
let mut manager = mock_audio_manager();
let mut handles = HashMap::new();

let model = Arc::new(RwLock::new(model));
Expand Down Expand Up @@ -448,6 +453,7 @@ mod test {
Ok(())
}

#[ignore = "requires a real audio backend, won't work in CI"]
#[test]
fn seek() -> Result<()> {
use approx::assert_relative_eq;
Expand Down

0 comments on commit c7c4091

Please sign in to comment.