import XCTest @testable import tart final class DiskImageFormatTests: XCTestCase { func testASIFFormatSupport() throws { // ASIF should be supported on macOS 26+ if #available(macOS 26, *) { XCTAssertTrue(DiskImageFormat.asif.isSupported) } else { XCTAssertFalse(DiskImageFormat.asif.isSupported) } } func testFormatFromString() throws { XCTAssertEqual(DiskImageFormat(rawValue: "raw"), .raw) XCTAssertEqual(DiskImageFormat(rawValue: "asif"), .asif) XCTAssertNil(DiskImageFormat(rawValue: "invalid")) } func testCaseInsensitivity() throws { XCTAssertEqual(DiskImageFormat(argument: "ASIF"), .asif) // case insensitive XCTAssertEqual(DiskImageFormat(argument: "Raw"), .raw) // case insensitive } func testAllValueStrings() throws { let allValues = DiskImageFormat.allValueStrings XCTAssertTrue(allValues.contains("raw")) XCTAssertTrue(allValues.contains("asif")) XCTAssertEqual(allValues.count, 2) } func testVMConfigDiskFormatSerialization() throws { // Test that VMConfig properly serializes and deserializes disk format let config = VMConfig( platform: Linux(), cpuCountMin: 2, memorySizeMin: 1024 * 1024 * 1024, diskFormat: .asif ) XCTAssertEqual(config.diskFormat, .asif) // Test JSON encoding/decoding let encoder = JSONEncoder() let data = try encoder.encode(config) let decoder = JSONDecoder() let decodedConfig = try decoder.decode(VMConfig.self, from: data) XCTAssertEqual(decodedConfig.diskFormat, .asif) } func testVMConfigDefaultDiskFormat() throws { // Test that VMConfig defaults to raw format let config = VMConfig( platform: Linux(), cpuCountMin: 2, memorySizeMin: 1024 * 1024 * 1024 ) XCTAssertEqual(config.diskFormat, .raw) } }