Zum Inhalt

apple/PhysarumApp/Tests/ThumbnailRendererTests.swift

import XCTest
import Metal
@testable import Physarum
import PhysarumEngine

final class ThumbnailRendererTests: XCTestCase {
    func testWarmStartProducesNonBlankPNG() throws {
        guard MTLCreateSystemDefaultDevice() != nil else { throw XCTSkip("No Metal device") }
        let preset = PresetCatalog.fallbackParams
        let data = try ThumbnailRenderer.render(.warmStart(preset))
        XCTAssertGreaterThan(data.count, 1000, "256² warm-start PNG should be non-trivial")
    }

    func testLiveSnapshotProducesNonBlankPNG() throws {
        guard let device = MTLCreateSystemDefaultDevice() else { throw XCTSkip("No Metal device") }
        let lib = ShaderLibrary(device: device)
        let preset = PresetCatalog.fallbackParams
        let sim = try SimEngine(device: device, library: lib, width: 64, height: 64, preset: preset)
        for _ in 0..<20 { sim.step() }
        let snap = LiveSnapshot(sim: sim.snapshot(), feedback: nil,
                                field: FieldSize(width: 64, height: 64),
                                preset: preset, format: .square, cover: false)
        let data = try ThumbnailRenderer.render(.liveSnapshot(snap))
        XCTAssertGreaterThan(data.count, 1000)
    }
}