Zum Inhalt

apple/PhysarumApp/Tests/CaptureMathTests.swift

import XCTest
import CoreMedia
@testable import Physarum

final class CaptureMathTests: XCTestCase {
    func testSlugRules() {
        XCTAssertEqual(captureSlug("Mandala Six"), "mandala-six")
        XCTAssertEqual(captureSlug("Ember Veil"), "ember-veil")
        XCTAssertEqual(captureSlug("  Café  Déjà!! "), "cafe-deja")
        XCTAssertEqual(captureSlug("***"), "preset")               // empty → fallback
        XCTAssertEqual(captureSlug("Aurora—Drift"), "aurora-drift") // em-dash → hyphen
    }

    func testFilenameFormat() {
        var c = DateComponents(); c.year = 2026; c.month = 6; c.day = 4; c.hour = 9; c.minute = 7; c.second = 5
        let date = Calendar(identifier: .gregorian).date(from: c)!
        let name = captureFilename(presetName: "Neural Lattice", date: date, ext: "png")
        XCTAssertEqual(name, "physarum-neural-lattice-20260604-090705.png")
    }

    func testExportDimensionsEvenAndOriented() {
        XCTAssertEqual(exportDimensions(aspectWH: 1, longEdge: 2048).w, 2048)
        XCTAssertEqual(exportDimensions(aspectWH: 1, longEdge: 2048).h, 2048)
        let l = exportDimensions(aspectWH: 16.0/9.0, longEdge: 1920)
        XCTAssertEqual(l.w, 1920); XCTAssertEqual(l.h, 1080)
        let p = exportDimensions(aspectWH: 9.0/16.0, longEdge: 1920)
        XCTAssertEqual(p.w, 1080); XCTAssertEqual(p.h, 1920)
        let odd = exportDimensions(aspectWH: 1.5, longEdge: 999)
        XCTAssertEqual(odd.w % 2, 0); XCTAssertEqual(odd.h % 2, 0)
    }

    func testFrameCountAndPTS() {
        XCTAssertEqual(clipFrameCount(durationSeconds: 10, fps: 60), 600)
        let pts = clipPresentationTime(frameIndex: 30, fps: 60)
        XCTAssertEqual(pts.value, 30); XCTAssertEqual(pts.timescale, 60)
        XCTAssertEqual(CMTimeGetSeconds(pts), 0.5, accuracy: 1e-9)
    }
}