use pixstrip_core::operations::rename::{apply_template, resolve_collision}; #[test] fn template_basic_variables() { let result = apply_template( "{name}_{counter:3}.{ext}", "sunset", "jpg", 1, None, ); assert_eq!(result, "sunset_001.jpg"); } #[test] fn template_with_prefix() { let result = apply_template( "blog_{name}.{ext}", "photo", "webp", 1, None, ); assert_eq!(result, "blog_photo.webp"); } #[test] fn template_counter_padding() { let result = apply_template( "{name}_{counter:4}.{ext}", "img", "png", 42, None, ); assert_eq!(result, "img_0042.png"); } #[test] fn template_counter_no_padding() { let result = apply_template( "{name}_{counter}.{ext}", "img", "png", 42, None, ); assert_eq!(result, "img_42.png"); } #[test] fn template_width_height() { let result = apply_template( "{name}_{width}x{height}.{ext}", "photo", "jpg", 1, Some((1920, 1080)), ); assert_eq!(result, "photo_1920x1080.jpg"); } #[test] fn collision_adds_suffix() { let dir = tempfile::tempdir().unwrap(); let base = dir.path().join("photo.jpg"); std::fs::write(&base, b"exists").unwrap(); let resolved = resolve_collision(&base); assert_eq!( resolved.file_name().unwrap().to_str().unwrap(), "photo_1.jpg" ); } #[test] fn collision_increments() { let dir = tempfile::tempdir().unwrap(); std::fs::write(dir.path().join("photo.jpg"), b"exists").unwrap(); std::fs::write(dir.path().join("photo_1.jpg"), b"exists").unwrap(); let resolved = resolve_collision(&dir.path().join("photo.jpg")); assert_eq!( resolved.file_name().unwrap().to_str().unwrap(), "photo_2.jpg" ); } #[test] fn no_collision_returns_same() { let dir = tempfile::tempdir().unwrap(); let path = dir.path().join("unique.jpg"); let resolved = resolve_collision(&path); assert_eq!(resolved, path); }