removed unwanted bar now with waveforms, major updates and enhancements
This commit is contained in:
@@ -2781,11 +2781,40 @@ extension KJamsCloneTests {
|
||||
}
|
||||
var duplicate = songs[0];duplicate.id = 10;songs.append(duplicate)
|
||||
let cache = root.appendingPathComponent("Cache")
|
||||
let result = await WaveformBatch.runConcurrent(songs:songs,locations:[],cache:cache,force:true,limit:{2})
|
||||
var updates = [WaveformJobProgress]()
|
||||
let result = await WaveformBatch.runConcurrent(songs:songs,locations:[],cache:cache,force:true,limit:{2},progress:{updates.append($0)})
|
||||
XCTAssertEqual(updates.first?.processed,0,"Show the admitted track before waiting for its decoder")
|
||||
XCTAssertEqual(updates.first?.current,"Track")
|
||||
XCTAssertEqual(updates.first?.finished,false)
|
||||
XCTAssertEqual(result.generated,4);XCTAssertEqual(result.cached,1);XCTAssertEqual(result.processed,5);XCTAssertEqual(result.issues,0)
|
||||
let reused = await WaveformBatch.runConcurrent(songs:songs,locations:[],cache:cache,limit:{1})
|
||||
XCTAssertEqual(reused.cached,5);XCTAssertEqual(reused.generated,0)
|
||||
}
|
||||
@MainActor func testWaitingWaveformWorkerCancelsWithoutBlockingTaskExecutor() async throws {
|
||||
let policy = WaveformWorkload.shared,id = UUID()
|
||||
policy.setPlaying(true,id:id)
|
||||
try policy.acquire(cancelled:{false})
|
||||
var held = true
|
||||
defer { if held { policy.release() };policy.setPlaying(false,id:id) }
|
||||
let fixture = try XCTUnwrap(Bundle(for:Self.self).resourceURL?.appendingPathComponent("Fixtures/Demo.wav"))
|
||||
let waiting = Task {
|
||||
try await WaveformWorker.run { cancelled in
|
||||
try AudioWaveform.analyse(url:fixture,cancelled:cancelled)
|
||||
}
|
||||
}
|
||||
// This continuation must run even while decoding is waiting for admission.
|
||||
try await Task.sleep(nanoseconds:50_000_000)
|
||||
waiting.cancel()
|
||||
do { _ = try await waiting.value;XCTFail("Cancelled analysis should not produce a waveform") }
|
||||
catch { XCTAssertTrue(error is CancellationError) }
|
||||
policy.release();held = false
|
||||
let analysis = try await WaveformWorker.run { cancelled in
|
||||
try AudioWaveform.analyse(url:fixture,cancelled:cancelled)
|
||||
}
|
||||
XCTAssertEqual(analysis.levels.count,4096)
|
||||
XCTAssertGreaterThan(analysis.levels.max() ?? 0,0)
|
||||
}
|
||||
|
||||
@MainActor func testWaveformAdmissionDropsToOneDuringPlayback() throws {
|
||||
let policy = WaveformWorkload.shared,id = UUID()
|
||||
policy.setPlaying(true,id:id)
|
||||
|
||||
Reference in New Issue
Block a user