//! End-to-end pipeline smoke tests over synthetic images. use vtracer::{ColorImage, ColorMode, Config, FitMode, Hierarchical}; /// Build a `size × size` image split into two vertical color bands. fn two_band_image(size: usize) -> ColorImage { let mut pixels = Vec::with_capacity(size * size * 4); for _y in 0..size { for x in 0..size { let (r, g, b) = if x < size / 2 { (220, 40, 40) } else { (40, 40, 220) }; pixels.extend_from_slice(&[r, g, b, 255]); } } ColorImage { pixels, width: size, height: size, } } fn assert_valid_svg(svg: &str) { assert!(svg.contains(" element:\n{svg}"); assert!(svg.trim_end().ends_with(""), "missing close"); assert!(svg.contains(" opt0 {}", sizes[1], sizes[0]); assert!(sizes[2] <= sizes[0], "opt2 {} > opt0 {}", sizes[2], sizes[0]); } #[test] fn cutout_is_reported_unsupported() { let config = Config { hierarchical: Hierarchical::Cutout, ..Config::default() }; let err = config.build().err().expect("cutout should be unsupported"); assert!(err.to_string().contains("mosaic")); }