removed unwanted bar
This commit is contained in:
@@ -2622,5 +2622,66 @@ extension KJamsCloneTests {
|
||||
XCTAssertTrue(report.finished);XCTAssertNil(report.failure)
|
||||
XCTAssertEqual(report.completed,48);XCTAssertEqual(report.skipped,47)
|
||||
XCTAssertEqual(report.reportLines.count,48);XCTAssertEqual(system.songs.count,1)
|
||||
let song = try XCTUnwrap(system.songs.first)
|
||||
XCTAssertNotNil(try WaveformCache.load(audio:URL(fileURLWithPath:song.audio),directory:root.appendingPathComponent("DJ/Waveforms")))
|
||||
}
|
||||
@MainActor func testDJFavouritesPersistIndependentlyAndToggleOff() throws {
|
||||
let root = FileManager.default.temporaryDirectory.appendingPathComponent(UUID().uuidString)
|
||||
defer { try? FileManager.default.removeItem(at:root) }
|
||||
let system = DJSystem(storageURL:root)
|
||||
system.toggleFavourite(42)
|
||||
XCTAssertEqual(system.favourites,[42])
|
||||
let reopened = DJSystem(storageURL:root)
|
||||
XCTAssertEqual(reopened.favourites,[42])
|
||||
reopened.toggleFavourite(42)
|
||||
XCTAssertTrue(reopened.favourites.isEmpty)
|
||||
XCTAssertTrue(DJSystem(storageURL:root).favourites.isEmpty)
|
||||
}
|
||||
|
||||
@MainActor func testDJAudibleScrubbingPreviewsPausedAudioAndPreservesTransport() async throws {
|
||||
let root = FileManager.default.temporaryDirectory.appendingPathComponent(UUID().uuidString)
|
||||
defer { try? FileManager.default.removeItem(at:root) }
|
||||
let fixture = try XCTUnwrap(Bundle(for:Self.self).resourceURL?.appendingPathComponent("Fixtures/Demo.mp3"))
|
||||
let player = Player(waveformCacheDirectory:root)
|
||||
defer { player.stop() }
|
||||
player.audibleScrubbing = true
|
||||
try player.load(Song(id:1,title:"Demo",audio:fixture.path,cdg:nil,rating:0,plays:0),startPlaying:false)
|
||||
player.scrub(to:0.5)
|
||||
XCTAssertFalse(player.playing)
|
||||
XCTAssertTrue(player.audioPlaybackStarted,"Paused scrubbing must render an audio grain")
|
||||
player.scrub(to:0.2)
|
||||
XCTAssertEqual(player.time,0.2,accuracy:0.001)
|
||||
player.endScrubbing()
|
||||
XCTAssertFalse(player.audioPlaybackStarted);XCTAssertFalse(player.playing)
|
||||
XCTAssertEqual(player.time,0.2,accuracy:0.001)
|
||||
player.scrub(to:0.4)
|
||||
try await Task.sleep(nanoseconds:180_000_000)
|
||||
XCTAssertFalse(player.audioPlaybackStarted,"Preview must stop if dragging stops")
|
||||
player.toggle()
|
||||
player.scrub(to:0.6)
|
||||
XCTAssertTrue(player.playing);XCTAssertTrue(player.audioPlaybackStarted)
|
||||
player.endScrubbing()
|
||||
XCTAssertTrue(player.playing,"Releasing a playing deck must keep it playing")
|
||||
}
|
||||
|
||||
@MainActor func testLoadingSecondDJDeckKeepsFirstDeckRendering() async throws {
|
||||
let root = FileManager.default.temporaryDirectory.appendingPathComponent(UUID().uuidString)
|
||||
defer { try? FileManager.default.removeItem(at:root) }
|
||||
let fixture = try XCTUnwrap(Bundle(for:Self.self).resourceURL?.appendingPathComponent("Fixtures/Demo.mp3"))
|
||||
let system = DJSystem(storageURL:root)
|
||||
defer { system.a.unload();system.b.unload() }
|
||||
let song = Song(id:1,title:"Demo",audio:fixture.path,cdg:nil,rating:0,plays:0)
|
||||
system.load(song,into:"A");system.a.player.toggle()
|
||||
try await Task.sleep(nanoseconds:100_000_000)
|
||||
let before = system.a.player.displayTime
|
||||
for _ in 0..<3 {
|
||||
system.load(song,into:"B")
|
||||
XCTAssertTrue(system.a.player.playing);XCTAssertTrue(system.a.player.audioPlaybackStarted)
|
||||
XCTAssertFalse(system.b.player.playing)
|
||||
try await Task.sleep(nanoseconds:50_000_000)
|
||||
}
|
||||
XCTAssertGreaterThan(system.a.player.displayTime,before)
|
||||
XCTAssertNil(system.error)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user