Files
pixstrip/pixstrip-core/tests/rename_tests.rs
lashman d4aef0b774 Add metadata stripping, watermark positioning, and rename template modules
Metadata: JPEG EXIF stripping (APP1 segment removal).
Watermark: 9-position grid calculation with margin support.
Rename: template parser with {name}, {ext}, {counter:N}, {width}, {height}
  and collision resolution with auto-suffix.
Phase 4 complete - 79 tests passing, zero clippy warnings.
2026-03-06 02:06:01 +02:00

96 lines
2.1 KiB
Rust

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);
}