Expose iPhone playback controls

This commit is contained in:
diyaa
2026-06-16 02:11:24 +02:00
parent 295c6c1d9b
commit e147ce38be
7 changed files with 993 additions and 131 deletions
@@ -41,6 +41,19 @@ final class PlaybackQueueTests: XCTestCase {
XCTAssertEqual(queue.currentTrackID, "c")
}
func testEnablingShuffleKeepsCurrentTrackSelectedAndAtQueueFront() {
var queue = PlaybackQueue(trackIDs: ["a", "b", "c", "d"])
queue.selectTrack("c")
queue.setShuffleEnabled(true)
XCTAssertTrue(queue.isShuffleEnabled)
XCTAssertEqual(queue.currentTrackID, "c")
XCTAssertEqual(queue.queuedTrackIDs.first, "c")
XCTAssertEqual(Set(queue.queuedTrackIDs), Set(["a", "b", "c", "d"]))
XCTAssertEqual(Set(queue.queuedTrackIDs).count, 4)
}
func testRepeatAllWrapsAroundQueueBoundaries() {
var queue = PlaybackQueue(trackIDs: ["a", "b", "c"])
queue.selectTrack("c")
@@ -63,6 +76,21 @@ final class PlaybackQueueTests: XCTestCase {
XCTAssertEqual(queue.moveToPreviousTrack(), "b")
}
func testCycleRepeatModeUsesOffOneAllOrder() {
var queue = PlaybackQueue(trackIDs: ["a", "b"])
XCTAssertEqual(queue.repeatMode, .off)
queue.cycleRepeatMode()
XCTAssertEqual(queue.repeatMode, .one)
queue.cycleRepeatMode()
XCTAssertEqual(queue.repeatMode, .all)
queue.cycleRepeatMode()
XCTAssertEqual(queue.repeatMode, .off)
}
func testReplacingTrackIDsDropsRemovedTracksFromQueue() {
var queue = PlaybackQueue(
trackIDs: ["a", "b", "c"],