sound: add unit tests to audio_backends.rs

Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
This commit is contained in:
Manos Pitsidianakis 2023-12-13 13:25:51 +02:00 committed by Manos Pitsidianakis
parent 30fb9b7766
commit d523e85efa
4 changed files with 51 additions and 1 deletions

View File

@ -41,6 +41,9 @@ pub trait AudioBackend {
fn stop(&self, _stream_id: u32) -> Result<()> {
Ok(())
}
#[cfg(test)]
fn as_any(&self) -> &dyn std::any::Any;
}
pub fn alloc_audio_backend(
@ -56,3 +59,35 @@ pub fn alloc_audio_backend(
BackendType::Alsa => Ok(Box::new(AlsaBackend::new(streams))),
}
}
#[cfg(test)]
mod tests {
use std::any::TypeId;
use super::*;
#[test]
fn test_alloc_audio_backend() {
crate::init_logger();
{
let v = BackendType::Null;
let value = alloc_audio_backend(v, Default::default()).unwrap();
assert_eq!(TypeId::of::<NullBackend>(), value.as_any().type_id());
}
#[cfg(feature = "pw-backend")]
{
use pipewire::{test_utils::PipewireTestHarness, *};
let _test_harness = PipewireTestHarness::new();
let v = BackendType::Pipewire;
let value = alloc_audio_backend(v, Default::default()).unwrap();
assert_eq!(TypeId::of::<PwBackend>(), value.as_any().type_id());
}
#[cfg(feature = "alsa-backend")]
{
let v = BackendType::Alsa;
let value = alloc_audio_backend(v, Default::default()).unwrap();
assert_eq!(TypeId::of::<AlsaBackend>(), value.as_any().type_id());
}
}
}

View File

@ -718,4 +718,9 @@ impl AudioBackend for AlsaBackend {
std::mem::take(&mut streams[stream_id as usize].buffers);
Ok(())
}
#[cfg(test)]
fn as_any(&self) -> &dyn std::any::Any {
self
}
}

View File

@ -26,6 +26,11 @@ impl AudioBackend for NullBackend {
log::trace!("NullBackend read stream_id {}", _id);
Ok(())
}
#[cfg(test)]
fn as_any(&self) -> &dyn std::any::Any {
self
}
}
#[cfg(test)]

View File

@ -562,12 +562,17 @@ impl AudioBackend for PwBackend {
lock_guard.unlock();
Ok(())
}
#[cfg(test)]
fn as_any(&self) -> &dyn std::any::Any {
self
}
}
#[cfg(test)]
/// Utilities for building a temporary Dbus session and a pipewire instance for
/// testing.
mod test_utils;
pub mod test_utils;
#[cfg(test)]
mod tests {