Merge pull request #438 from rfwatson/add-cmp-tests
Add test coverage for cmp_default_heuristics
This commit is contained in:
commit
997fb9fa8a
|
@ -9,11 +9,11 @@ use crate::{
|
||||||
SupportedBufferSize, SupportedStreamConfig, SupportedStreamConfigRange,
|
SupportedBufferSize, SupportedStreamConfig, SupportedStreamConfigRange,
|
||||||
SupportedStreamConfigsError,
|
SupportedStreamConfigsError,
|
||||||
};
|
};
|
||||||
|
use std::cmp;
|
||||||
use std::convert::TryInto;
|
use std::convert::TryInto;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use std::thread::{self, JoinHandle};
|
use std::thread::{self, JoinHandle};
|
||||||
use std::vec::IntoIter as VecIntoIter;
|
use std::vec::IntoIter as VecIntoIter;
|
||||||
use std::{cmp, mem};
|
|
||||||
use traits::{DeviceTrait, HostTrait, StreamTrait};
|
use traits::{DeviceTrait, HostTrait, StreamTrait};
|
||||||
|
|
||||||
pub use self::enumerate::{default_input_device, default_output_device, Devices};
|
pub use self::enumerate::{default_input_device, default_output_device, Devices};
|
||||||
|
@ -446,7 +446,9 @@ struct StreamInner {
|
||||||
// Minimum number of samples to put in the buffer.
|
// Minimum number of samples to put in the buffer.
|
||||||
period_len: usize,
|
period_len: usize,
|
||||||
|
|
||||||
|
#[allow(dead_code)]
|
||||||
// Whether or not the hardware supports pausing the stream.
|
// Whether or not the hardware supports pausing the stream.
|
||||||
|
// TODO: We need an API to expose this. See #197, #284.
|
||||||
can_pause: bool,
|
can_pause: bool,
|
||||||
|
|
||||||
// In the case that the device does not return valid timestamps via `get_htstamp`, this field
|
// In the case that the device does not return valid timestamps via `get_htstamp`, this field
|
||||||
|
|
69
src/lib.rs
69
src/lib.rs
|
@ -633,6 +633,75 @@ impl SupportedStreamConfigRange {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_cmp_default_heuristics() {
|
||||||
|
let mut formats = vec![
|
||||||
|
SupportedStreamConfigRange {
|
||||||
|
buffer_size: SupportedBufferSize::Range { min: 256, max: 512 },
|
||||||
|
channels: 2,
|
||||||
|
min_sample_rate: SampleRate(1),
|
||||||
|
max_sample_rate: SampleRate(96000),
|
||||||
|
sample_format: SampleFormat::F32,
|
||||||
|
},
|
||||||
|
SupportedStreamConfigRange {
|
||||||
|
buffer_size: SupportedBufferSize::Range { min: 256, max: 512 },
|
||||||
|
channels: 1,
|
||||||
|
min_sample_rate: SampleRate(1),
|
||||||
|
max_sample_rate: SampleRate(96000),
|
||||||
|
sample_format: SampleFormat::F32,
|
||||||
|
},
|
||||||
|
SupportedStreamConfigRange {
|
||||||
|
buffer_size: SupportedBufferSize::Range { min: 256, max: 512 },
|
||||||
|
channels: 2,
|
||||||
|
min_sample_rate: SampleRate(1),
|
||||||
|
max_sample_rate: SampleRate(96000),
|
||||||
|
sample_format: SampleFormat::I16,
|
||||||
|
},
|
||||||
|
SupportedStreamConfigRange {
|
||||||
|
buffer_size: SupportedBufferSize::Range { min: 256, max: 512 },
|
||||||
|
channels: 2,
|
||||||
|
min_sample_rate: SampleRate(1),
|
||||||
|
max_sample_rate: SampleRate(96000),
|
||||||
|
sample_format: SampleFormat::U16,
|
||||||
|
},
|
||||||
|
SupportedStreamConfigRange {
|
||||||
|
buffer_size: SupportedBufferSize::Range { min: 256, max: 512 },
|
||||||
|
channels: 2,
|
||||||
|
min_sample_rate: SampleRate(1),
|
||||||
|
max_sample_rate: SampleRate(22050),
|
||||||
|
sample_format: SampleFormat::F32,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
formats.sort_by(|a, b| a.cmp_default_heuristics(b));
|
||||||
|
|
||||||
|
// lowest-priority first:
|
||||||
|
assert_eq!(formats[0].sample_format(), SampleFormat::F32);
|
||||||
|
assert_eq!(formats[0].min_sample_rate(), SampleRate(1));
|
||||||
|
assert_eq!(formats[0].max_sample_rate(), SampleRate(96000));
|
||||||
|
assert_eq!(formats[0].channels(), 1);
|
||||||
|
|
||||||
|
assert_eq!(formats[1].sample_format(), SampleFormat::U16);
|
||||||
|
assert_eq!(formats[1].min_sample_rate(), SampleRate(1));
|
||||||
|
assert_eq!(formats[1].max_sample_rate(), SampleRate(96000));
|
||||||
|
assert_eq!(formats[1].channels(), 2);
|
||||||
|
|
||||||
|
assert_eq!(formats[2].sample_format(), SampleFormat::I16);
|
||||||
|
assert_eq!(formats[2].min_sample_rate(), SampleRate(1));
|
||||||
|
assert_eq!(formats[2].max_sample_rate(), SampleRate(96000));
|
||||||
|
assert_eq!(formats[2].channels(), 2);
|
||||||
|
|
||||||
|
assert_eq!(formats[3].sample_format(), SampleFormat::F32);
|
||||||
|
assert_eq!(formats[3].min_sample_rate(), SampleRate(1));
|
||||||
|
assert_eq!(formats[3].max_sample_rate(), SampleRate(22050));
|
||||||
|
assert_eq!(formats[3].channels(), 2);
|
||||||
|
|
||||||
|
assert_eq!(formats[4].sample_format(), SampleFormat::F32);
|
||||||
|
assert_eq!(formats[4].min_sample_rate(), SampleRate(1));
|
||||||
|
assert_eq!(formats[4].max_sample_rate(), SampleRate(96000));
|
||||||
|
assert_eq!(formats[4].channels(), 2);
|
||||||
|
}
|
||||||
|
|
||||||
impl From<SupportedStreamConfig> for StreamConfig {
|
impl From<SupportedStreamConfig> for StreamConfig {
|
||||||
fn from(conf: SupportedStreamConfig) -> Self {
|
fn from(conf: SupportedStreamConfig) -> Self {
|
||||||
conf.config()
|
conf.config()
|
||||||
|
|
Loading…
Reference in New Issue