Document setup and rendering, add app build and settings tests

This commit is contained in:
Mikei386
2026-09-13 08:56:27 +02:00
parent 0b85f7d73a
commit c530fe025a
7 changed files with 192 additions and 5 deletions
@@ -0,0 +1,41 @@
import XCTest
@testable import GrowthLapse
final class SettingsTests: XCTestCase {
func testFreshSettingsDoNotDependOnDeveloperMachine() {
let settings = RenderSettings()
XCTAssertNil(settings.inputFolder)
XCTAssertNil(settings.outputFile)
XCTAssertNil(settings.ffmpegExecutable)
XCTAssertNil(settings.ffprobeExecutable)
}
func testCustomSettingsSurviveJSONRoundTrip() throws {
var settings = RenderSettings()
settings.inputFolder = URL(fileURLWithPath: "/tmp/Meine Videos")
settings.outputFile = URL(fileURLWithPath: "/tmp/Ergebnis.mp4")
settings.ffmpegExecutable = URL(fileURLWithPath: "/tmp/tools/ffmpeg")
settings.segmentLength = 12
settings.sortMode = .filenameAscending
settings.keepRenderCacheForReview = false
let data = try JSONEncoder().encode(PersistedRenderSettings(settings: settings))
let restored = try JSONDecoder().decode(PersistedRenderSettings.self, from: data)
XCTAssertEqual(restored.renderSettings, settings)
}
func testOlderSettingsReceiveCompatibilityDefaults() throws {
let data = try JSONEncoder().encode(PersistedRenderSettings(settings: RenderSettings()))
var json = try XCTUnwrap(JSONSerialization.jsonObject(with: data) as? [String: Any])
for key in ["renderMode", "duplicateClipSelection", "keepRenderCacheForReview",
"burnInClipNumbers", "bestSegmentDetectionEnabled"] {
json.removeValue(forKey: key)
}
let restored = try JSONDecoder().decode(PersistedRenderSettings.self,
from: JSONSerialization.data(withJSONObject: json)).renderSettings
XCTAssertEqual(restored.renderMode, .videoGrowthLapse)
XCTAssertEqual(restored.duplicateClipSelection, .first)
XCTAssertTrue(restored.keepRenderCacheForReview)
XCTAssertFalse(restored.burnInClipNumbers)
XCTAssertFalse(restored.bestSegmentDetectionEnabled)
}
}