Skip to content

Commit

Permalink
Tests
Browse files Browse the repository at this point in the history
  • Loading branch information
hiroshihorie committed Jan 23, 2025
1 parent b1b79d2 commit c978bd3
Showing 1 changed file with 70 additions and 0 deletions.
70 changes: 70 additions & 0 deletions Tests/LiveKitTests/AudioProcessingTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import Accelerate
import AVFoundation
import Foundation
import LiveKitWebRTC

@testable import LiveKit
import XCTest
Expand Down Expand Up @@ -61,4 +62,73 @@ class AudioProcessingTests: XCTestCase, AudioCustomProcessingDelegate {
try await Task.sleep(nanoseconds: ns)
}
}

func testOptionsAppliedToAudioProcessingModule() async throws {
try await withRooms([RoomTestingOptions(canPublish: true)]) { rooms in
// Alias to Room1
let room1 = rooms[0]

let allOnOptions = AudioCaptureOptions(
echoCancellation: true,
noiseSuppression: true,
autoGainControl: true,
highpassFilter: true
)

let allOffOptions = AudioCaptureOptions(
echoCancellation: false,
noiseSuppression: false,
autoGainControl: false,
highpassFilter: false
)

let pub1 = try await room1.localParticipant.setMicrophone(enabled: true, captureOptions: allOnOptions)
guard let pub1 else {
XCTFail("Publication is nil")
return
}

let ns = UInt64(3 * 1_000_000_000)
try await Task.sleep(nanoseconds: ns)

// Directly read config from the apm
let allOnConfigResult = RTC.audioProcessingModule.config
print("Config result for all on: \(String(describing: allOnConfigResult))")
XCTAssert(allOnConfigResult.isEchoCancellationEnabled)
XCTAssert(allOnConfigResult.isNoiseSuppressionEnabled)
XCTAssert(allOnConfigResult.isAutoGainControl1Enabled)
XCTAssert(allOnConfigResult.isHighpassFilterEnabled)

try await room1.localParticipant.unpublish(publication: pub1)

let pub2 = try await room1.localParticipant.setMicrophone(enabled: true, captureOptions: allOffOptions)
guard let pub2 else {
XCTFail("Publication is nil")
return
}

try await Task.sleep(nanoseconds: ns)

// Directly read config from the apm
let allOffConfigResult = RTC.audioProcessingModule.config
print("Config result for all off: \(String(describing: allOffConfigResult))")
XCTAssert(!allOffConfigResult.isEchoCancellationEnabled)
XCTAssert(!allOffConfigResult.isNoiseSuppressionEnabled)
XCTAssert(!allOffConfigResult.isAutoGainControl1Enabled)
XCTAssert(!allOffConfigResult.isHighpassFilterEnabled)

try await room1.localParticipant.unpublish(publication: pub2)
}
}
}

extension LKRTCAudioProcessingConfig {
override open var description: String {
"RTCAudioProcessingConfig(" +
"isEchoCancellationEnabled: \(isEchoCancellationEnabled), " +
"isNoiseSuppressionEnabled: \(isNoiseSuppressionEnabled), " +
"isAutoGainControl1Enabled: \(isAutoGainControl1Enabled), " +
"isHighpassFilterEnabled: \(isHighpassFilterEnabled)" +
")"
}
}

0 comments on commit c978bd3

Please sign in to comment.