Files
SwiftAudioEx/Example/Tests/AVPlayerObserverTests.swift
2019-05-11 17:46:27 +02:00

87 lines
2.7 KiB
Swift

import Quick
import Nimble
import AVFoundation
@testable import SwiftAudio
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", closure: {
expect(observer.isObserving).to(beFalse())
})
context("when observing has started", {
beforeEach {
observer.startObserving()
}
it("should be observing", closure: {
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", closure: {
expect(self.status).toEventuallyNot(beNil())
expect(self.timeControlStatus).toEventuallyNot(beNil())
})
})
context("when observing again", {
beforeEach {
observer.startObserving()
}
it("should be observing", closure: {
expect(observer.isObserving).toEventually(beTrue())
})
})
context("when stopping observing", closure: {
beforeEach {
observer.stopObserving()
}
it("should not be observing", closure: {
expect(observer.isObserving).to(beFalse())
})
})
})
}
}
func player(statusDidChange status: AVPlayer.Status) {
self.status = status
}
func player(didChangeTimeControlStatus status: AVPlayer.TimeControlStatus) {
self.timeControlStatus = status
}
}