Files

42 lines
2.0 KiB
Swift

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