35 lines
1.3 KiB
Swift
35 lines
1.3 KiB
Swift
import Domain
|
|
import Foundation
|
|
@testable import Playback
|
|
import Testing
|
|
|
|
struct SampleRateMatcherTests {
|
|
private let device = OutputDeviceInfo(id: 1, name: "Fake", nominalRate: 48000, availableRates: [44100, 48000, 96000])
|
|
private let flac = AudioFormat(codec: .flac, sampleRate: 44100, bitDepth: 16)
|
|
|
|
@Test func settingOffLeavesDeviceAlone() {
|
|
#expect(SampleRateMatcher(isEnabled: false).targetRate(for: flac, on: device) == nil)
|
|
}
|
|
|
|
@Test func sameRateNeedsNoSwitch() {
|
|
let format = AudioFormat(codec: .flac, sampleRate: 48000)
|
|
#expect(SampleRateMatcher(isEnabled: true).targetRate(for: format, on: device) == nil)
|
|
}
|
|
|
|
@Test func unavailableRateIsIgnored() {
|
|
let format = AudioFormat(codec: .flac, sampleRate: 192_000)
|
|
#expect(SampleRateMatcher(isEnabled: true).targetRate(for: format, on: device) == nil)
|
|
}
|
|
|
|
@Test func unknownRateOrDeviceIsIgnored() {
|
|
let matcher = SampleRateMatcher(isEnabled: true)
|
|
#expect(matcher.targetRate(for: AudioFormat(codec: .mp3), on: device) == nil)
|
|
#expect(matcher.targetRate(for: nil, on: device) == nil)
|
|
#expect(matcher.targetRate(for: flac, on: nil) == nil)
|
|
}
|
|
|
|
@Test func availableRateIsChosenExactly() {
|
|
#expect(SampleRateMatcher(isEnabled: true).targetRate(for: flac, on: device) == 44100)
|
|
}
|
|
}
|