172 lines
6.8 KiB
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))
|
|
})
|
|
})
|
|
|
|
})
|
|
})
|
|
}
|
|
}
|
|
}
|