Files
SwiftAudioEx/Example/Tests/QueuedAudioPlayerTests.swift

172 lines
6.8 KiB
Swift

import Quick
import Nimble
@testable import SwiftAudio
class QueuedAudioPlayerTests: QuickSpec {
override func spec() {
describe("A QueuedAudioPlayer") {
var audioPlayer: QueuedAudioPlayer!
beforeEach {
audioPlayer = QueuedAudioPlayer()
audioPlayer.bufferDuration = 0.0001
audioPlayer.automaticallyWaitsToMinimizeStalling = false
audioPlayer.volume = 0.0
}
describe("its current item", {
it("should be nil", closure: {
expect(audioPlayer.currentItem).to(beNil())
})
context("when adding one item", {
var item: AudioItem!
beforeEach {
item = ShortSource.getAudioItem()
try? audioPlayer.add(item: item, playWhenReady: false)
}
it("should not be nil", closure: {
expect(audioPlayer.currentItem).toNot(beNil())
})
context("then loading a new item", closure: {
beforeEach {
try? audioPlayer.load(item: Source.getAudioItem(), playWhenReady: false)
}
it("should have replaced the item", closure: {
expect(audioPlayer.currentItem?.getSourceUrl()).toNot(equal(item.getSourceUrl()))
})
})
})
context("when adding multiple items", {
beforeEach {
try? audioPlayer.add(items: [ShortSource.getAudioItem(), ShortSource.getAudioItem()], playWhenReady: false)
}
it("should not be nil", closure: {
expect(audioPlayer.currentItem).toNot(beNil())
})
})
})
describe("its next items", {
it("should be empty", closure: {
expect(audioPlayer.nextItems.count).to(equal(0))
})
context("when adding 2 items", {
beforeEach {
try? audioPlayer.add(items: [Source.getAudioItem(), Source.getAudioItem()])
}
it("should contain 1 item", closure: {
expect(audioPlayer.nextItems.count).to(equal(1))
})
context("then calling next()", {
beforeEach {
try? audioPlayer.next()
}
it("should contain 0 items", closure: {
expect(audioPlayer.nextItems.count).to(equal(0))
})
context("then calling previous()", {
beforeEach {
try? audioPlayer.previous()
}
it("should contain 1 item", closure: {
expect(audioPlayer.nextItems.count).to(equal(1))
})
})
})
context("then removing one item", {
beforeEach {
try? audioPlayer.removeItem(at: 1)
}
it("should be empty", closure: {
expect(audioPlayer.nextItems.count).to(equal(0))
})
})
context("then jumping to the last item", {
beforeEach {
try? audioPlayer.jumpToItem(atIndex: 1)
}
it("should be empty", closure: {
expect(audioPlayer.nextItems.count).to(equal(0))
})
})
context("then removing upcoming items", {
beforeEach {
audioPlayer.removeUpcomingItems()
}
it("should be empty", closure: {
expect(audioPlayer.nextItems.count).to(equal(0))
})
})
context("then stopping", {
beforeEach {
audioPlayer.stop()
}
it("should be empty", closure: {
expect(audioPlayer.nextItems.count).to(equal(0))
})
})
})
})
describe("its previous items", {
it("should be empty", closure: {
expect(audioPlayer.previousItems.count).to(equal(0))
})
context("when adding 2 items", {
beforeEach {
try? audioPlayer.add(items: [ShortSource.getAudioItem(), ShortSource.getAudioItem()])
}
it("should be empty", closure: {
expect(audioPlayer.previousItems.count).to(equal(0))
})
context("then calling next()", {
beforeEach {
try? audioPlayer.next()
}
it("should contain one item", closure: {
expect(audioPlayer.previousItems.count).to(equal(1))
})
})
context("then removing all previous items", {
beforeEach {
audioPlayer.removePreviousItems()
}
it("should be empty", closure: {
expect(audioPlayer.previousItems.count).to(equal(0))
})
})
context("then stopping", {
beforeEach {
audioPlayer.stop()
}
it("should be empty", closure: {
expect(audioPlayer.previousItems.count).to(equal(0))
})
})
})
})
}
}
}