import Foundation import Testing @testable import Recording @Suite("Capturing interruption events") struct CapturingEventInterruptionTests { @Test func `a began interruption maps to the interrupted event`() { let event = CapturingEvent(interruption: [ "AVAudioSessionInterruptionTypeKey": UInt(1) ]) #expect(event == .interrupted) } @Test func `an ended interruption without options maps to a non-resuming end event`() { let event = CapturingEvent(interruption: [ "AVAudioSessionInterruptionTypeKey": UInt(0) ]) #expect(event == .interruptionEnded(shouldResume: false)) } @Test func `an ended interruption with the resume option maps to a resuming end event`() { let event = CapturingEvent(interruption: [ "AVAudioSessionInterruptionTypeKey": UInt(0), "AVAudioSessionInterruptionOptionKey": UInt(1), ]) #expect(event == .interruptionEnded(shouldResume: true)) } @Test func `a missing interruption type maps to no event`() { #expect(CapturingEvent(interruption: [:]) == nil) #expect(CapturingEvent(interruption: nil) == nil) } @Test func `an unknown interruption type maps to no event`() { let event = CapturingEvent(interruption: [ "AVAudioSessionInterruptionTypeKey": UInt(99) ]) #expect(event == nil) } @Test func `a mistyped interruption type maps to no event`() { let event = CapturingEvent(interruption: [ "AVAudioSessionInterruptionTypeKey": "began" ]) #expect(event == nil) } }