Document setup and rendering, add app build and settings tests
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user