use pixstrip_core::operations::resize::resize_image; use pixstrip_core::operations::ResizeConfig; use pixstrip_core::types::Dimensions; fn create_test_image(width: u32, height: u32) -> image::DynamicImage { let img = image::RgbImage::from_fn(width, height, |x, y| { image::Rgb([(x % 256) as u8, (y % 256) as u8, 128]) }); image::DynamicImage::ImageRgb8(img) } #[test] fn resize_by_width() { let img = create_test_image(4000, 3000); let config = ResizeConfig::ByWidth(1200); let result = resize_image(&img, &config).unwrap(); assert_eq!(result.width(), 1200); assert_eq!(result.height(), 900); } #[test] fn resize_by_height() { let img = create_test_image(4000, 3000); let config = ResizeConfig::ByHeight(600); let result = resize_image(&img, &config).unwrap(); assert_eq!(result.width(), 800); assert_eq!(result.height(), 600); } #[test] fn resize_fit_in_box() { let img = create_test_image(4000, 3000); let config = ResizeConfig::FitInBox { max: Dimensions { width: 1920, height: 1080 }, allow_upscale: false, }; let result = resize_image(&img, &config).unwrap(); assert_eq!(result.width(), 1440); assert_eq!(result.height(), 1080); } #[test] fn resize_no_upscale() { let img = create_test_image(800, 600); let config = ResizeConfig::FitInBox { max: Dimensions { width: 1920, height: 1080 }, allow_upscale: false, }; let result = resize_image(&img, &config).unwrap(); assert_eq!(result.width(), 800); assert_eq!(result.height(), 600); } #[test] fn resize_exact() { let img = create_test_image(4000, 3000); let config = ResizeConfig::Exact(Dimensions { width: 1080, height: 1080 }); let result = resize_image(&img, &config).unwrap(); assert_eq!(result.width(), 1080); assert_eq!(result.height(), 1080); }