mirror of
https://github.com/storytold/photocraft.git
synced 2026-10-28 02:02:04 +01:00
Every tests/*.rs file is its own executable that links the whole crate graph. Move each crate's test files into tests/it/ as modules of one tests/it/main.rs; helper modules under tests/common move with them. These keep their own binary (own process): - engine panic_hunt: a process-wide panic hook counts every panic. - engine text_gamma: changes the process-wide text gamma. - engine smart_filter_stages, mask_cache_purge: assert on global caches. - codecs pnm_peak_memory: reads the process's peak RSS. - photocraft mac_menu_appkit: harness = false.
38 lines
1.6 KiB
Rust
38 lines
1.6 KiB
Rust
//! Rendering policy migration and command validation, without a graphics device.
|
|
use photocraft_engine::prefs::{GpuBackend, Preferences, RenderingMode};
|
|
use serde_json::json;
|
|
|
|
#[test]
|
|
fn old_preferences_preserve_cpu_choices() {
|
|
for old in [json!({"useGpu": false}), json!({"gpuBackend": "cpu"})] {
|
|
let p: Preferences = serde_json::from_value(json!({"performance": old})).unwrap();
|
|
assert_eq!(p.performance.effective_rendering_mode(), RenderingMode::Cpu);
|
|
}
|
|
assert_eq!(Preferences::default().performance.effective_rendering_mode(), RenderingMode::Auto);
|
|
}
|
|
|
|
#[test]
|
|
fn explicit_choices_override_legacy_flags_and_round_trip() {
|
|
let mut p = Preferences::default();
|
|
p.performance.use_gpu = false;
|
|
p.performance.gpu_backend = GpuBackend::Cpu;
|
|
for mode in [RenderingMode::Auto, RenderingMode::Gpu, RenderingMode::Cpu] {
|
|
p.set("performance.renderingMode", json!(mode.name())).unwrap();
|
|
assert_eq!(p.performance.effective_rendering_mode(), mode);
|
|
let restored: Preferences = serde_json::from_value(p.to_json()).unwrap();
|
|
assert_eq!(restored.performance.effective_rendering_mode(), mode);
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn malformed_policy_is_rejected_without_changing_preferences() {
|
|
let mut p = Preferences::default();
|
|
let before = p.to_json();
|
|
for invalid in [json!("quantum"), json!(7), json!({}), json!(true)] {
|
|
assert!(p.set("performance.renderingMode", invalid).is_err());
|
|
assert_eq!(p.to_json(), before);
|
|
}
|
|
p.reset(Some("performance.renderingMode")).unwrap();
|
|
assert_eq!(p.performance.rendering_mode, None);
|
|
}
|