Files
sst/Tests/SstCoreTests/AudioLevelTests.swift
2026-10-01 15:00:40 +02:00

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)
}
}