import XCTest @testable import MarkBase final class AudioSeparateTest: XCTestCase { func testE2BAudioLoad() throws { print("\n═══════════════════════════════════════") print(" E2B Audio Load Test (AudioTowerE2B)") print("═══════════════════════════════════════\n") let modelDir = "/Users/accusys/.cache/huggingface/hub/models--mlx-community--gemma-4-e2b-it-4bit/snapshots/2c3e507453b4f218d05fe3cc97bea5c5a654257e" print("Step 1: Create engine...") let engine = try MarkBaseEngine(autoCompile: true) print(" ✓ Engine created") print("\nStep 2: Load AudioTowerE2B...") let acfg = loadAudioConfig(modelDir: modelDir) guard let reader = try? SafeTensorsReader(path: modelDir + "/model.safetensors") else { print(" ✗ No safetensors file") throw NSError(domain: "Audio", code: -1, userInfo: [NSLocalizedDescriptionKey: "No safetensors"]) } let loadStart = Date() let audioTower = try loadAudioTowerE2B(reader: reader, config: acfg, engine: engine) let loadTime = Date().timeIntervalSince(loadStart) * 1000 print(" ✓ Loaded in \(loadTime) ms") print(" Type: AudioTowerE2B (\(audioTower.config.numHiddenLayers) layers)") print(" Config: hiddenSize=\(audioTower.config.hiddenSize)") print(" Output: \(audioTower.config.outputProjDims)") print("\nStep 3: Generate synthetic mel spectrogram...") let seqLen = 100 let nMels = 128 var melFeatures: [[Float]] = [] for _ in 0..