Zum Inhalt

apple/PhysarumApp/Tests/AppStateResetTests.swift

import XCTest
import PhysarumEngine
@testable import Physarum

final class AppStateResetTests: XCTestCase {
    private func freshState() -> AppState {
        let tmp = URL(fileURLWithPath: NSTemporaryDirectory())
            .appendingPathComponent("phys-reset-\(UUID().uuidString)", isDirectory: true)
        return AppState(store: PresetStore(baseDir: tmp))
    }

    func testIsModifiedFalseAtBaseline() {
        let s = freshState()
        let d = ParamRegistry.all.first { $0.id == .exposure }!
        XCTAssertFalse(s.isModified(d))
    }
    func testIsModifiedTrueAfterEdit() {
        let s = freshState()
        let d = ParamRegistry.all.first { $0.id == .exposure }!
        d.set(&s.edited, d.get(s.baseline) + 1.0)
        XCTAssertTrue(s.isModified(d))
    }
    func testResetSpeciesColorRestoresBaseline() {
        let s = freshState()
        let original = s.baseline.species[0].color
        s.edited.species[0].color = RGB(0.123, 0.456, 0.789)
        s.resetSpeciesColor(0)
        XCTAssertEqual(s.edited.species[0].color, original)
    }
    func testResetSpawnPatternRestoresBaseline() {
        let s = freshState()
        let original = s.baseline.spawnPattern
        // pick any different case
        s.edited.spawnPattern = SpawnPattern.allCases.first { $0 != original } ?? original
        s.resetSpawnPattern()
        XCTAssertEqual(s.edited.spawnPattern, original)
    }
}