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

82 lines
2.6 KiB
Swift

import Quick
import Nimble
import MediaPlayer
@testable import SwiftAudioEx
class AudioPlayerEventTests: QuickSpec {
class EventListener {
var handleEvent: ((Void)) -> Void = { _ in
}
}
override func spec() {
describe("An event") {
var event: AudioPlayer.Event<(Void)>!
beforeEach {
event = AudioPlayer.Event()
}
describe("its invokers") {
context("when adding a listener") {
var listener: EventListener!
beforeEach {
listener = EventListener()
event.addListener(listener, listener!.handleEvent)
}
it("should have one element") {
expect(event.invokers.count).toEventuallyNot(equal(0))
}
context("then that listener is deinitialized and an an event is emitted") {
beforeEach {
listener = nil
event.emit(data: ())
}
it("should remove the invoker") {
expect(event.invokers.count).toEventually(equal(0))
}
}
}
context("when adding multiple listeners") {
var listeners: [EventListener]!
beforeEach {
listeners = [0..<15].map {_ in
let listener = EventListener()
event.addListener(listener, listener.handleEvent)
return listener
}
}
it("should have several listeners") {
expect(event.invokers.count).toEventually(equal(listeners.count))
}
context("then removing one") {
beforeEach {
event.removeListener(listeners[listeners.count / 2])
}
it("should have one less invoker") {
expect(event.invokers.count).toEventually(equal(listeners.count - 1))
}
}
}
}
}
}
}