42 lines
2.0 KiB
Swift
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)
|
|
}
|
|
}
|