32 lines
1.1 KiB
Swift
32 lines
1.1 KiB
Swift
import Testing
|
|
@testable import SstCore
|
|
|
|
struct AudioLevelTests {
|
|
@Test func constantTenthIsMinusTwentyDbfs() {
|
|
let level = AudioLevel.rmsDbfs([Float](repeating: 0.1, count: 1_000))
|
|
#expect(abs(level - (-20)) < 0.01)
|
|
}
|
|
|
|
@Test func fullScaleIsZeroDbfs() {
|
|
let level = AudioLevel.rmsDbfs([Float](repeating: 1.0, count: 100))
|
|
#expect(abs(level) < 0.01)
|
|
}
|
|
|
|
@Test func negativeSamplesCountLikePositiveOnes() {
|
|
let level = AudioLevel.rmsDbfs([Float](repeating: -0.1, count: 1_000))
|
|
#expect(abs(level - (-20)) < 0.01)
|
|
}
|
|
|
|
@Test func emptyAndSilentBuffersHitTheFloor() {
|
|
#expect(AudioLevel.rmsDbfs([]) == AudioLevel.silenceFloorDbfs)
|
|
#expect(AudioLevel.rmsDbfs([Float](repeating: 0, count: 64)) == AudioLevel.silenceFloorDbfs)
|
|
}
|
|
|
|
@Test func vuIsRelativeToTheReference() {
|
|
#expect(AudioLevel.vu(fromDbfs: -20) == 0)
|
|
#expect(AudioLevel.vu(fromDbfs: -40) == -20)
|
|
#expect(AudioLevel.vu(fromDbfs: -17) == 3)
|
|
#expect(AudioLevel.vu(fromDbfs: -30, referenceDbfs: -18) == -12)
|
|
}
|
|
}
|