Zum Inhalt

apple/PhysarumApp/Tests/SlotBackendTests.swift

import XCTest
import PhysarumEngine
@testable import Physarum

final class SlotBackendTests: XCTestCase {
    private func preset(_ name: String) -> Preset {
        var p = PresetCatalog.fallbackPreset; p.name = name; p.builtIn = false; return p
    }

    func testPayloadRoundTripPreservesSlotsPinsVersion() {
        var s = PresetSlots()
        s.seed(.init(presets: [preset("A"), preset("B")], version: 3, pinnedSlotIDs: ["slot-01"]))
        s.overwrite(slotID: "slot-00", preset: preset("Mine"))
        let restored = PresetSlots(payload: s.payload)
        XCTAssertEqual(restored, s)
    }

    func testInMemoryBackendPersists() {
        let backend = InMemorySlotBackend()
        var s = PresetSlots()
        s.fill(index: 5, preset: preset("E"), userOwned: true)
        backend.write(s.payload)
        XCTAssertEqual(PresetSlots(payload: backend.read()), s)
    }
}

extension SlotBackendTests {
    func testFileBackendRoundTrips() {
        let url = URL(fileURLWithPath: NSTemporaryDirectory())
            .appendingPathComponent("slots-\(UUID().uuidString).json")
        let backend = FileSlotBackend(url: url)
        var s = PresetSlots(); s.fill(index: 2, preset: preset("F"), userOwned: true)
        backend.write(s.payload)
        XCTAssertEqual(PresetSlots(payload: FileSlotBackend(url: url).read()), s)
    }
}