import Foundation import XCTest @testable import VelodyPlayback @MainActor final class AVFoundationPlaybackEngineTests: XCTestCase { func testLoadTrackMissingFileThrowsPlaybackErrorAndLeavesEngineUnloaded() { let engine = AVFoundationPlaybackEngine(fileManager: .default) let fileURL = URL(fileURLWithPath: "/private/tmp/\(UUID().uuidString)-missing.mp3") XCTAssertThrowsError(try engine.loadTrack(at: fileURL, startTime: 0)) { error in XCTAssertEqual( error as? PlaybackError, .missingLocalFile(path: fileURL.path) ) } XCTAssertEqual(engine.currentTime, 0) XCTAssertEqual(engine.duration, 0) XCTAssertFalse(engine.isPlaying) XCTAssertThrowsError(try engine.play()) { error in XCTAssertEqual(error as? PlaybackError, .noTrackLoaded) } } }