Slice 2 (Phase 1a) of the M9 Monterey retarget. Converts all pure Core suites (argv builders, CGATS/CUPS/profcheck/gamut-mesh parsers, colour math, file/artefact helpers, classifiers) to XCTestCase, and adds the shared assertAsyncThrows helper for the async-throws sites that Slice 3 will convert. Deferred to Slice 3 (kept on Swift Testing in mixed files): ProcessManagerTests, ArgyllRunner*Tests, ProcessRunSupportTests, store/UI suites, and the runner suites embedded in TargenTests / PrinttargTests / ProcessManagerTests. Also qualifies six bare `throw .case` expressions in CGATSParser with CGATSParseError — they only compiled under typed throws, which Slice 1 demoted to untyped `throws`; without this the ICCeryCore target fails to build and no test gate can run. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
68 lines
2.6 KiB
Swift
68 lines
2.6 KiB
Swift
import Foundation
|
|
import XCTest
|
|
@testable import ICCeryCore
|
|
|
|
/// Issue #83 — canonical `CAL_` / original-stem pairing.
|
|
final class CalibrationIdentityTests: XCTestCase {
|
|
func testLivePlain() {
|
|
let id = CalibrationIdentity.parse(liveBasename: "foo", persistedOriginal: "")
|
|
XCTAssertEqual(id.originalBasename, "foo")
|
|
XCTAssertEqual(id.calibrationBasename, "CAL_foo")
|
|
}
|
|
|
|
func testLivePlainIgnoresPersisted() {
|
|
let id = CalibrationIdentity.parse(liveBasename: "foo", persistedOriginal: "bar")
|
|
XCTAssertEqual(id.originalBasename, "foo")
|
|
XCTAssertEqual(id.calibrationBasename, "CAL_foo")
|
|
}
|
|
|
|
func testLiveCalPersisted() {
|
|
let id = CalibrationIdentity.parse(liveBasename: "CAL_foo", persistedOriginal: "foo")
|
|
XCTAssertEqual(id.originalBasename, "foo")
|
|
XCTAssertEqual(id.calibrationBasename, "CAL_foo")
|
|
}
|
|
|
|
func testLiveCalNoPersist() {
|
|
let id = CalibrationIdentity.parse(liveBasename: "CAL_foo", persistedOriginal: "")
|
|
XCTAssertEqual(id.originalBasename, "foo")
|
|
XCTAssertEqual(id.calibrationBasename, "CAL_foo")
|
|
}
|
|
|
|
func testPersistedWins() {
|
|
let id = CalibrationIdentity.parse(liveBasename: "CAL_foo", persistedOriginal: "bar")
|
|
XCTAssertEqual(id.originalBasename, "bar")
|
|
XCTAssertEqual(id.calibrationBasename, "CAL_bar")
|
|
}
|
|
|
|
func testEmptyLiveWithPersisted() {
|
|
let id = CalibrationIdentity.parse(liveBasename: "", persistedOriginal: "foo")
|
|
XCTAssertTrue(id.originalBasename.isEmpty)
|
|
XCTAssertTrue(id.calibrationBasename.isEmpty)
|
|
}
|
|
|
|
func testEmptyLive() {
|
|
let id = CalibrationIdentity.parse(liveBasename: "", persistedOriginal: "")
|
|
XCTAssertTrue(id.originalBasename.isEmpty)
|
|
XCTAssertTrue(id.calibrationBasename.isEmpty)
|
|
}
|
|
|
|
func testAlreadyPrefixed() {
|
|
XCTAssertEqual(CalibrationIdentity.prefix("CAL_foo"), "CAL_foo")
|
|
XCTAssertEqual(CalibrationIdentity.prefix("foo"), "CAL_foo")
|
|
let id = CalibrationIdentity.parse(liveBasename: "CAL_CAL_foo", persistedOriginal: "")
|
|
XCTAssertEqual(id.originalBasename, "CAL_foo")
|
|
XCTAssertEqual(id.calibrationBasename, "CAL_foo")
|
|
}
|
|
|
|
func testPrefixEmpty() {
|
|
XCTAssertTrue(CalibrationIdentity.prefix("").isEmpty)
|
|
XCTAssertEqual(CalibrationIdentity.strip("foo"), "foo")
|
|
XCTAssertEqual(CalibrationIdentity.strip("CAL_foo"), "foo")
|
|
}
|
|
|
|
func testProcessIdMatches() {
|
|
let cal = CalibrationIdentity.prefix("foo")
|
|
XCTAssertEqual(ProcessID.targen(cal), "targen_CAL_foo")
|
|
}
|
|
}
|