Files
SwiftAudioEx/Example/Tests/AVPlayerObserverTests.swift
T
2021-08-12 11:40:21 +02:00

87 lines
2.6 KiB
Swift

import Quick
import Nimble
import AVFoundation
@testable import SwiftAudioEx
class AVPlayerObserverTests: QuickSpec, AVPlayerObserverDelegate {
var status: AVPlayer.Status?
var timeControlStatus: AVPlayer.TimeControlStatus?
override func spec() {
describe("A player observer") {
var player: AVPlayer!
var observer: AVPlayerObserver!
beforeEach {
player = AVPlayer()
player.volume = 0.0
observer = AVPlayerObserver()
observer.player = player
observer.delegate = self
}
it("should not be observing") {
expect(observer.isObserving).to(beFalse())
}
context("when observing has started") {
beforeEach {
observer.startObserving()
}
it("should be observing") {
expect(observer.isObserving).toEventually(beTrue())
}
context("when player has started") {
beforeEach {
player.replaceCurrentItem(with: AVPlayerItem(url: URL(fileURLWithPath: Source.path)))
player.play()
}
it("it should update the delegate") {
expect(self.status).toEventuallyNot(beNil())
expect(self.timeControlStatus).toEventuallyNot(beNil())
}
}
context("when observing again") {
beforeEach {
observer.startObserving()
}
it("should be observing") {
expect(observer.isObserving).toEventually(beTrue())
}
}
context("when stopping observing") {
beforeEach {
observer.stopObserving()
}
it("should not be observing") {
expect(observer.isObserving).to(beFalse())
}
}
}
}
}
func player(statusDidChange status: AVPlayer.Status) {
self.status = status
}
func player(didChangeTimeControlStatus status: AVPlayer.TimeControlStatus) {
self.timeControlStatus = status
}
}