Files
ICCery-CPU/Tests/TargetJobTests.swift
T
Local Admin 43bff18101
Build macOS Packages / Build macOS (Intel) (push) Failing after 10s
Build macOS Packages / Build macOS (Apple Silicon) (push) Failing after 10s
Build macOS Packages / Build macOS (Universal) (push) Skipped
removed cruft and restructured.
2026-09-07 05:21:44 -07:00

92 lines
3.3 KiB
Swift

import XCTest
@testable import TargetPrint
final class TargetJobTests: XCTestCase {
let validJSON = """
{
"version": 1,
"jobTitle": "Epson_XP55_IlfordLustre_Target_P1-2",
"files": ["/tmp/a.tif", "/tmp/b.tif"],
"printSettings": {
"printerName": "EPSON_XP_55_Series",
"mediaSize": "A4",
"mediaType": "PremiumGlossy",
"paperSource": "Auto",
"resolution": "5760x1440dpi",
"scaling": 1.0,
"centered": true,
"forceUnmanagedColor": true
},
"uiPolicy": {
"lockColorManagement": true,
"allowBasicDriverChanges": true
},
"unknownKey": "ignored"
}
"""
func testParsesValidJobAndIgnoresUnknownKeys() throws {
let job = try TargetJobParser.parse(text: validJSON)
XCTAssertEqual(job.version, 1)
XCTAssertEqual(job.jobTitle, "Epson_XP55_IlfordLustre_Target_P1-2")
XCTAssertEqual(job.files.count, 2)
XCTAssertEqual(job.printSettings.printerName, "EPSON_XP_55_Series")
XCTAssertEqual(job.printSettings.mediaSize, "A4")
XCTAssertEqual(job.printSettings.mediaType, "PremiumGlossy")
XCTAssertEqual(job.printSettings.scaling, 1.0, accuracy: 0.0001)
XCTAssertTrue(job.printSettings.centered)
XCTAssertTrue(job.printSettings.forceUnmanagedColor)
XCTAssertTrue(job.uiPolicy.lockColorManagement)
XCTAssertTrue(job.uiPolicy.allowBasicDriverChanges)
}
func testMissingRequiredKeyIsFatal() {
let json = """
{"version": 1, "jobTitle": "x", "files": ["/a.tif"],
"printSettings": {"printerName": "p", "mediaSize": "A4", "scaling": 1,
"centered": true, "forceUnmanagedColor": true}}
"""
XCTAssertThrowsError(try TargetJobParser.parse(text: json)) { error in
let app = error as? AppError
XCTAssertNotNil(app)
if case .invalidJob(let m)? = app {
XCTAssertTrue(m.contains("uiPolicy"), m)
} else {
XCTFail("expected invalidJob")
}
XCTAssertEqual((error as? AppError)?.exitCode, .invalidJob)
}
}
func testVersionMustBe1() {
let json = """
{"version": 2, "jobTitle": "x", "files": ["/a.tif"],
"printSettings": {"printerName": "p", "mediaSize": "A4", "scaling": 1,
"centered": true, "forceUnmanagedColor": true},
"uiPolicy": {"lockColorManagement": true, "allowBasicDriverChanges": true}}
"""
XCTAssertThrowsError(try TargetJobParser.parse(text: json))
}
func testEmptyFilesIsFatal() {
let json = """
{"version": 1, "jobTitle": "x", "files": [],
"printSettings": {"printerName": "p", "mediaSize": "A4", "scaling": 1,
"centered": true, "forceUnmanagedColor": true},
"uiPolicy": {"lockColorManagement": true, "allowBasicDriverChanges": true}}
"""
XCTAssertThrowsError(try TargetJobParser.parse(text: json))
}
func testInvalidJSON() {
XCTAssertThrowsError(try TargetJobParser.parse(text: "{"))
}
func testRoundTrip() throws {
let job = try TargetJobParser.parse(text: validJSON)
let data = try TargetJobParser.serialize(job)
let again = try TargetJobParser.parse(data: data)
XCTAssertEqual(job, again)
}
}