import AVFoundation import Foundation /// Helpers for creating test audio files and SwiftData contexts. enum TestHelpers { /// Create a short sine wave WAV file for testing. static func createTestAudioFile( name: String = "test_audio", duration: TimeInterval = 2.0, sampleRate: Double = 44100, frequency: Double = 440, in directory: URL? = nil ) throws -> URL { let dir = directory ?? FileManager.default.temporaryDirectory .appendingPathComponent("MixBoardTests/\(UUID().uuidString)", isDirectory: true) try FileManager.default.createDirectory(at: dir, withIntermediateDirectories: true) let url = dir.appendingPathComponent("\(name)_\(UUID().uuidString.prefix(8)).wav") let channels: AVAudioChannelCount = 2 // Use standard format which AVAudioFile handles correctly guard let format = AVAudioFormat(standardFormatWithSampleRate: sampleRate, channels: channels) else { throw NSError(domain: "TestHelpers", code: 1, userInfo: [NSLocalizedDescriptionKey: "Failed to create format"]) } let file = try AVAudioFile(forWriting: url, settings: format.settings) let frameCount = AVAudioFrameCount(duration * sampleRate) guard let buffer = AVAudioPCMBuffer(pcmFormat: file.processingFormat, frameCapacity: frameCount) else { throw NSError(domain: "TestHelpers", code: 1, userInfo: [NSLocalizedDescriptionKey: "Failed to create buffer"]) } buffer.frameLength = frameCount if let channelData = buffer.floatChannelData { for frame in 0.. [URL] { let frequencies = [261.63, 293.66, 329.63, 349.23, 392.00, 440.00, 493.88, 523.25] var urls: [URL] = [] for i in 0..