summaryrefslogtreecommitdiffstats
path: root/third_party/rust/cubeb-coreaudio/src/backend/tests/device_property.rs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--third_party/rust/cubeb-coreaudio/src/backend/tests/device_property.rs176
1 files changed, 115 insertions, 61 deletions
diff --git a/third_party/rust/cubeb-coreaudio/src/backend/tests/device_property.rs b/third_party/rust/cubeb-coreaudio/src/backend/tests/device_property.rs
index 8277a7642d..a974aee64b 100644
--- a/third_party/rust/cubeb-coreaudio/src/backend/tests/device_property.rs
+++ b/third_party/rust/cubeb-coreaudio/src/backend/tests/device_property.rs
@@ -7,14 +7,14 @@ use super::*;
fn test_get_device_uid() {
// Input device.
if let Some(input) = test_get_default_device(Scope::Input) {
- let uid = get_device_uid(input, DeviceType::INPUT).unwrap();
+ let uid = run_serially(|| get_device_uid(input, DeviceType::INPUT)).unwrap();
let uid = uid.into_string();
assert!(!uid.is_empty());
}
// Output device.
if let Some(output) = test_get_default_device(Scope::Output) {
- let uid = get_device_uid(output, DeviceType::OUTPUT).unwrap();
+ let uid = run_serially(|| get_device_uid(output, DeviceType::OUTPUT)).unwrap();
let uid = uid.into_string();
assert!(!uid.is_empty());
}
@@ -24,7 +24,10 @@ fn test_get_device_uid() {
#[should_panic]
fn test_get_device_uid_by_unknwon_device() {
// Unknown device.
- assert!(get_device_uid(kAudioObjectUnknown, DeviceType::INPUT).is_err());
+ assert!(
+ run_serially_forward_panics(|| get_device_uid(kAudioObjectUnknown, DeviceType::INPUT))
+ .is_err()
+ );
}
// get_device_model_uid
@@ -33,7 +36,7 @@ fn test_get_device_uid_by_unknwon_device() {
#[test]
fn test_get_device_model_uid() {
if let Some(device) = test_get_default_device(Scope::Input) {
- match get_device_model_uid(device, DeviceType::INPUT) {
+ match run_serially(|| get_device_model_uid(device, DeviceType::INPUT)) {
Ok(uid) => println!("input model uid: {}", uid.into_string()),
Err(e) => println!("No input model uid. Error: {}", e),
}
@@ -42,7 +45,7 @@ fn test_get_device_model_uid() {
}
if let Some(device) = test_get_default_device(Scope::Output) {
- match get_device_model_uid(device, DeviceType::OUTPUT) {
+ match run_serially(|| get_device_model_uid(device, DeviceType::OUTPUT)) {
Ok(uid) => println!("output model uid: {}", uid.into_string()),
Err(e) => println!("No output model uid. Error: {}", e),
}
@@ -54,7 +57,11 @@ fn test_get_device_model_uid() {
#[test]
#[should_panic]
fn test_get_device_model_uid_by_unknown_device() {
- assert!(get_device_model_uid(kAudioObjectUnknown, DeviceType::INPUT).is_err());
+ assert!(run_serially_forward_panics(|| get_device_model_uid(
+ kAudioObjectUnknown,
+ DeviceType::INPUT
+ ))
+ .is_err());
}
// get_device_transport_type
@@ -62,7 +69,7 @@ fn test_get_device_model_uid_by_unknown_device() {
#[test]
fn test_get_device_transport_type() {
if let Some(device) = test_get_default_device(Scope::Input) {
- match get_device_transport_type(device, DeviceType::INPUT) {
+ match run_serially(|| get_device_transport_type(device, DeviceType::INPUT)) {
Ok(trans_type) => println!(
"input transport type: {:X}, {:?}",
trans_type,
@@ -75,7 +82,7 @@ fn test_get_device_transport_type() {
}
if let Some(device) = test_get_default_device(Scope::Output) {
- match get_device_transport_type(device, DeviceType::OUTPUT) {
+ match run_serially(|| get_device_transport_type(device, DeviceType::OUTPUT)) {
Ok(trans_type) => println!(
"output transport type: {:X}, {:?}",
trans_type,
@@ -91,7 +98,11 @@ fn test_get_device_transport_type() {
#[test]
#[should_panic]
fn test_get_device_transport_type_by_unknown_device() {
- assert!(get_device_transport_type(kAudioObjectUnknown, DeviceType::INPUT).is_err());
+ assert!(run_serially_forward_panics(|| get_device_transport_type(
+ kAudioObjectUnknown,
+ DeviceType::INPUT
+ ))
+ .is_err());
}
// get_device_source
@@ -100,7 +111,7 @@ fn test_get_device_transport_type_by_unknown_device() {
#[test]
fn test_get_device_source() {
if let Some(device) = test_get_default_device(Scope::Input) {
- match get_device_source(device, DeviceType::INPUT) {
+ match run_serially(|| get_device_source(device, DeviceType::INPUT)) {
Ok(source) => println!(
"input source: {:X}, {:?}",
source,
@@ -113,7 +124,7 @@ fn test_get_device_source() {
}
if let Some(device) = test_get_default_device(Scope::Output) {
- match get_device_source(device, DeviceType::OUTPUT) {
+ match run_serially(|| get_device_source(device, DeviceType::OUTPUT)) {
Ok(source) => println!(
"output source: {:X}, {:?}",
source,
@@ -129,7 +140,11 @@ fn test_get_device_source() {
#[test]
#[should_panic]
fn test_get_device_source_by_unknown_device() {
- assert!(get_device_source(kAudioObjectUnknown, DeviceType::INPUT).is_err());
+ assert!(run_serially_forward_panics(|| get_device_source(
+ kAudioObjectUnknown,
+ DeviceType::INPUT
+ ))
+ .is_err());
}
// get_device_source_name
@@ -137,7 +152,7 @@ fn test_get_device_source_by_unknown_device() {
#[test]
fn test_get_device_source_name() {
if let Some(device) = test_get_default_device(Scope::Input) {
- match get_device_source_name(device, DeviceType::INPUT) {
+ match run_serially(|| get_device_source_name(device, DeviceType::INPUT)) {
Ok(name) => println!("input: {}", name.into_string()),
Err(e) => println!("No input data source name. Error: {}", e),
}
@@ -146,7 +161,7 @@ fn test_get_device_source_name() {
}
if let Some(device) = test_get_default_device(Scope::Output) {
- match get_device_source_name(device, DeviceType::OUTPUT) {
+ match run_serially(|| get_device_source_name(device, DeviceType::OUTPUT)) {
Ok(name) => println!("output: {}", name.into_string()),
Err(e) => println!("No output data source name. Error: {}", e),
}
@@ -158,7 +173,11 @@ fn test_get_device_source_name() {
#[test]
#[should_panic]
fn test_get_device_source_name_by_unknown_device() {
- assert!(get_device_source_name(kAudioObjectUnknown, DeviceType::INPUT).is_err());
+ assert!(run_serially_forward_panics(|| get_device_source_name(
+ kAudioObjectUnknown,
+ DeviceType::INPUT
+ ))
+ .is_err());
}
// get_device_name
@@ -166,14 +185,14 @@ fn test_get_device_source_name_by_unknown_device() {
#[test]
fn test_get_device_name() {
if let Some(device) = test_get_default_device(Scope::Input) {
- let name = get_device_name(device, DeviceType::INPUT).unwrap();
+ let name = run_serially(|| get_device_name(device, DeviceType::INPUT)).unwrap();
println!("input device name: {}", name.into_string());
} else {
println!("No input device.");
}
if let Some(device) = test_get_default_device(Scope::Output) {
- let name = get_device_name(device, DeviceType::OUTPUT).unwrap();
+ let name = run_serially(|| get_device_name(device, DeviceType::OUTPUT).unwrap());
println!("output device name: {}", name.into_string());
} else {
println!("No output device.");
@@ -183,7 +202,11 @@ fn test_get_device_name() {
#[test]
#[should_panic]
fn test_get_device_name_by_unknown_device() {
- assert!(get_device_name(kAudioObjectUnknown, DeviceType::INPUT).is_err());
+ assert!(run_serially_forward_panics(|| get_device_name(
+ kAudioObjectUnknown,
+ DeviceType::INPUT
+ ))
+ .is_err());
}
// get_device_manufacturer
@@ -193,7 +216,7 @@ fn test_get_device_manufacturer() {
if let Some(device) = test_get_default_device(Scope::Input) {
// Some devices like AirPods cannot get the vendor info so we print the error directly.
// TODO: Replace `map` and `unwrap_or_else` by `map_or_else`
- let name = get_device_manufacturer(device, DeviceType::INPUT)
+ let name = run_serially(|| get_device_manufacturer(device, DeviceType::INPUT))
.map(|name| name.into_string())
.unwrap_or_else(|e| format!("Error: {}", e));
println!("input device vendor: {}", name);
@@ -204,9 +227,10 @@ fn test_get_device_manufacturer() {
if let Some(device) = test_get_default_device(Scope::Output) {
// Some devices like AirPods cannot get the vendor info so we print the error directly.
// TODO: Replace `map` and `unwrap_or_else` by `map_or_else`
- let name = get_device_manufacturer(device, DeviceType::OUTPUT)
- .map(|name| name.into_string())
- .unwrap_or_else(|e| format!("Error: {}", e));
+ let name =
+ run_serially_forward_panics(|| get_device_manufacturer(device, DeviceType::OUTPUT))
+ .map(|name| name.into_string())
+ .unwrap_or_else(|e| format!("Error: {}", e));
println!("output device vendor: {}", name);
} else {
println!("No output device.");
@@ -216,7 +240,11 @@ fn test_get_device_manufacturer() {
#[test]
#[should_panic]
fn test_get_device_manufacturer_by_unknown_device() {
- assert!(get_device_manufacturer(kAudioObjectUnknown, DeviceType::INPUT).is_err());
+ assert!(run_serially_forward_panics(|| get_device_manufacturer(
+ kAudioObjectUnknown,
+ DeviceType::INPUT
+ ))
+ .is_err());
}
// get_device_buffer_frame_size_range
@@ -224,7 +252,8 @@ fn test_get_device_manufacturer_by_unknown_device() {
#[test]
fn test_get_device_buffer_frame_size_range() {
if let Some(device) = test_get_default_device(Scope::Input) {
- let range = get_device_buffer_frame_size_range(device, DeviceType::INPUT).unwrap();
+ let range =
+ run_serially(|| get_device_buffer_frame_size_range(device, DeviceType::INPUT)).unwrap();
println!(
"range of input buffer frame size: {}-{}",
range.mMinimum, range.mMaximum
@@ -234,7 +263,8 @@ fn test_get_device_buffer_frame_size_range() {
}
if let Some(device) = test_get_default_device(Scope::Output) {
- let range = get_device_buffer_frame_size_range(device, DeviceType::OUTPUT).unwrap();
+ let range = run_serially(|| get_device_buffer_frame_size_range(device, DeviceType::OUTPUT))
+ .unwrap();
println!(
"range of output buffer frame size: {}-{}",
range.mMinimum, range.mMaximum
@@ -247,7 +277,13 @@ fn test_get_device_buffer_frame_size_range() {
#[test]
#[should_panic]
fn test_get_device_buffer_frame_size_range_by_unknown_device() {
- assert!(get_device_buffer_frame_size_range(kAudioObjectUnknown, DeviceType::INPUT).is_err());
+ assert!(
+ run_serially_forward_panics(|| get_device_buffer_frame_size_range(
+ kAudioObjectUnknown,
+ DeviceType::INPUT
+ ))
+ .is_err()
+ );
}
// get_device_latency
@@ -255,14 +291,14 @@ fn test_get_device_buffer_frame_size_range_by_unknown_device() {
#[test]
fn test_get_device_latency() {
if let Some(device) = test_get_default_device(Scope::Input) {
- let latency = get_device_latency(device, DeviceType::INPUT).unwrap();
+ let latency = run_serially(|| get_device_latency(device, DeviceType::INPUT)).unwrap();
println!("latency of input device: {}", latency);
} else {
println!("No input device.");
}
if let Some(device) = test_get_default_device(Scope::Output) {
- let latency = get_device_latency(device, DeviceType::OUTPUT).unwrap();
+ let latency = run_serially(|| get_device_latency(device, DeviceType::OUTPUT)).unwrap();
println!("latency of output device: {}", latency);
} else {
println!("No output device.");
@@ -272,7 +308,11 @@ fn test_get_device_latency() {
#[test]
#[should_panic]
fn test_get_device_latency_by_unknown_device() {
- assert!(get_device_latency(kAudioObjectUnknown, DeviceType::INPUT).is_err());
+ assert!(run_serially_forward_panics(|| get_device_latency(
+ kAudioObjectUnknown,
+ DeviceType::INPUT
+ ))
+ .is_err());
}
// get_device_streams
@@ -280,7 +320,7 @@ fn test_get_device_latency_by_unknown_device() {
#[test]
fn test_get_device_streams() {
if let Some(device) = test_get_default_device(Scope::Input) {
- let streams = get_device_streams(device, DeviceType::INPUT).unwrap();
+ let streams = run_serially(|| get_device_streams(device, DeviceType::INPUT)).unwrap();
println!("streams on the input device: {:?}", streams);
assert!(!streams.is_empty());
} else {
@@ -288,7 +328,7 @@ fn test_get_device_streams() {
}
if let Some(device) = test_get_default_device(Scope::Output) {
- let streams = get_device_streams(device, DeviceType::OUTPUT).unwrap();
+ let streams = run_serially(|| get_device_streams(device, DeviceType::OUTPUT)).unwrap();
println!("streams on the output device: {:?}", streams);
assert!(!streams.is_empty());
} else {
@@ -299,7 +339,11 @@ fn test_get_device_streams() {
#[test]
#[should_panic]
fn test_get_device_streams_by_unknown_device() {
- assert!(get_device_streams(kAudioObjectUnknown, DeviceType::INPUT).is_err());
+ assert!(run_serially_forward_panics(|| get_device_streams(
+ kAudioObjectUnknown,
+ DeviceType::INPUT
+ ))
+ .is_err());
}
// get_device_sample_rate
@@ -307,14 +351,14 @@ fn test_get_device_streams_by_unknown_device() {
#[test]
fn test_get_device_sample_rate() {
if let Some(device) = test_get_default_device(Scope::Input) {
- let rate = get_device_sample_rate(device, DeviceType::INPUT).unwrap();
+ let rate = run_serially(|| get_device_sample_rate(device, DeviceType::INPUT)).unwrap();
println!("input sample rate: {}", rate);
} else {
println!("No input device.");
}
if let Some(device) = test_get_default_device(Scope::Output) {
- let rate = get_device_sample_rate(device, DeviceType::OUTPUT).unwrap();
+ let rate = run_serially(|| get_device_sample_rate(device, DeviceType::OUTPUT).unwrap());
println!("output sample rate: {}", rate);
} else {
println!("No output device.");
@@ -324,7 +368,11 @@ fn test_get_device_sample_rate() {
#[test]
#[should_panic]
fn test_get_device_sample_rate_by_unknown_device() {
- assert!(get_device_sample_rate(kAudioObjectUnknown, DeviceType::INPUT).is_err());
+ assert!(run_serially_forward_panics(|| get_device_sample_rate(
+ kAudioObjectUnknown,
+ DeviceType::INPUT
+ ))
+ .is_err());
}
// get_ranges_of_device_sample_rate
@@ -332,14 +380,16 @@ fn test_get_device_sample_rate_by_unknown_device() {
#[test]
fn test_get_ranges_of_device_sample_rate() {
if let Some(device) = test_get_default_device(Scope::Input) {
- let ranges = get_ranges_of_device_sample_rate(device, DeviceType::INPUT).unwrap();
+ let ranges =
+ run_serially(|| get_ranges_of_device_sample_rate(device, DeviceType::INPUT)).unwrap();
println!("ranges of input sample rate: {:?}", ranges);
} else {
println!("No input device.");
}
if let Some(device) = test_get_default_device(Scope::Output) {
- let ranges = get_ranges_of_device_sample_rate(device, DeviceType::OUTPUT).unwrap();
+ let ranges =
+ run_serially(|| get_ranges_of_device_sample_rate(device, DeviceType::OUTPUT)).unwrap();
println!("ranges of output sample rate: {:?}", ranges);
} else {
println!("No output device.");
@@ -349,7 +399,13 @@ fn test_get_ranges_of_device_sample_rate() {
#[test]
#[should_panic]
fn test_get_ranges_of_device_sample_rate_by_unknown_device() {
- assert!(get_ranges_of_device_sample_rate(kAudioObjectUnknown, DeviceType::INPUT).is_err());
+ assert!(
+ run_serially_forward_panics(|| get_ranges_of_device_sample_rate(
+ kAudioObjectUnknown,
+ DeviceType::INPUT
+ ))
+ .is_err()
+ );
}
// get_stream_latency
@@ -357,9 +413,9 @@ fn test_get_ranges_of_device_sample_rate_by_unknown_device() {
#[test]
fn test_get_stream_latency() {
if let Some(device) = test_get_default_device(Scope::Input) {
- let streams = get_device_streams(device, DeviceType::INPUT).unwrap();
+ let streams = run_serially(|| get_device_streams(device, DeviceType::INPUT)).unwrap();
for stream in streams {
- let latency = get_stream_latency(stream).unwrap();
+ let latency = run_serially(|| get_stream_latency(stream)).unwrap();
println!("latency of the input stream {} is {}", stream, latency);
}
} else {
@@ -367,9 +423,9 @@ fn test_get_stream_latency() {
}
if let Some(device) = test_get_default_device(Scope::Output) {
- let streams = get_device_streams(device, DeviceType::OUTPUT).unwrap();
+ let streams = run_serially(|| get_device_streams(device, DeviceType::OUTPUT)).unwrap();
for stream in streams {
- let latency = get_stream_latency(stream).unwrap();
+ let latency = run_serially(|| get_stream_latency(stream)).unwrap();
println!("latency of the output stream {} is {}", stream, latency);
}
} else {
@@ -388,10 +444,10 @@ fn test_get_stream_latency_by_unknown_device() {
#[test]
fn test_get_stream_virtual_format() {
if let Some(device) = test_get_default_device(Scope::Input) {
- let streams = get_device_streams(device, DeviceType::INPUT).unwrap();
+ let streams = run_serially(|| get_device_streams(device, DeviceType::INPUT)).unwrap();
let formats = streams
.iter()
- .map(|s| get_stream_virtual_format(*s))
+ .map(|s| run_serially(|| get_stream_virtual_format(*s)))
.collect::<Vec<std::result::Result<AudioStreamBasicDescription, OSStatus>>>();
println!("input stream formats: {:?}", formats);
assert!(!formats.is_empty());
@@ -400,10 +456,10 @@ fn test_get_stream_virtual_format() {
}
if let Some(device) = test_get_default_device(Scope::Output) {
- let streams = get_device_streams(device, DeviceType::OUTPUT).unwrap();
+ let streams = run_serially(|| get_device_streams(device, DeviceType::OUTPUT)).unwrap();
let formats = streams
.iter()
- .map(|s| get_stream_virtual_format(*s))
+ .map(|s| run_serially(|| get_stream_virtual_format(*s)))
.collect::<Vec<std::result::Result<AudioStreamBasicDescription, OSStatus>>>();
println!("output stream formats: {:?}", formats);
assert!(!formats.is_empty());
@@ -415,7 +471,9 @@ fn test_get_stream_virtual_format() {
#[test]
#[should_panic]
fn test_get_stream_virtual_format_by_unknown_stream() {
- assert!(get_stream_virtual_format(kAudioObjectUnknown).is_err());
+ assert!(
+ run_serially_forward_panics(|| get_stream_virtual_format(kAudioObjectUnknown)).is_err()
+ );
}
// get_stream_terminal_type
@@ -442,25 +500,21 @@ fn test_get_stream_terminal_type() {
}
}
if let Some(device) = test_get_default_device(Scope::Input) {
- let streams = get_device_streams(device, DeviceType::INPUT).unwrap();
- for stream in streams {
- assert_eq!(
- terminal_type_to_device_type(get_stream_terminal_type(stream).unwrap()),
- Some(DeviceType::INPUT)
- );
- }
+ let streams = run_serially(|| get_device_streams(device, DeviceType::INPUT)).unwrap();
+ assert!(streams.iter().any(|&s| {
+ terminal_type_to_device_type(run_serially(|| get_stream_terminal_type(s)).unwrap())
+ == Some(DeviceType::INPUT)
+ }));
} else {
println!("No input device.");
}
if let Some(device) = test_get_default_device(Scope::Output) {
- let streams = get_device_streams(device, DeviceType::OUTPUT).unwrap();
- for stream in streams {
- assert_eq!(
- terminal_type_to_device_type(get_stream_terminal_type(stream).unwrap()),
- Some(DeviceType::OUTPUT)
- );
- }
+ let streams = run_serially(|| get_device_streams(device, DeviceType::OUTPUT)).unwrap();
+ assert!(streams.iter().any(|&s| {
+ terminal_type_to_device_type(run_serially(|| get_stream_terminal_type(s)).unwrap())
+ == Some(DeviceType::OUTPUT)
+ }));
} else {
println!("No output device.");
}