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)
}
}