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