Fix edge cases and consistency issues
This commit is contained in:
@@ -91,8 +91,12 @@ fn rename_config_simple_template() {
|
||||
suffix: String::new(),
|
||||
counter_start: 1,
|
||||
counter_padding: 3,
|
||||
counter_enabled: true,
|
||||
counter_position: 3,
|
||||
template: None,
|
||||
case_mode: 0,
|
||||
replace_spaces: 0,
|
||||
special_chars: 0,
|
||||
regex_find: String::new(),
|
||||
regex_replace: String::new(),
|
||||
};
|
||||
@@ -107,11 +111,101 @@ fn rename_config_with_suffix() {
|
||||
suffix: "_web".into(),
|
||||
counter_start: 1,
|
||||
counter_padding: 2,
|
||||
counter_enabled: true,
|
||||
counter_position: 3,
|
||||
template: None,
|
||||
case_mode: 0,
|
||||
replace_spaces: 0,
|
||||
special_chars: 0,
|
||||
regex_find: String::new(),
|
||||
regex_replace: String::new(),
|
||||
};
|
||||
let result = config.apply_simple("photo", "webp", 5);
|
||||
assert_eq!(result, "photo_web_05.webp");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn rename_counter_overflow_saturates() {
|
||||
let config = RenameConfig {
|
||||
prefix: String::new(),
|
||||
suffix: String::new(),
|
||||
counter_start: u32::MAX,
|
||||
counter_padding: 1,
|
||||
counter_enabled: true,
|
||||
counter_position: 3,
|
||||
template: None,
|
||||
case_mode: 0,
|
||||
replace_spaces: 0,
|
||||
special_chars: 0,
|
||||
regex_find: String::new(),
|
||||
regex_replace: String::new(),
|
||||
};
|
||||
// Should not panic - saturating arithmetic
|
||||
let result = config.apply_simple("photo", "jpg", u32::MAX);
|
||||
assert!(result.contains("photo"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn metadata_config_custom_selective() {
|
||||
let config = MetadataConfig::Custom {
|
||||
strip_gps: true,
|
||||
strip_camera: false,
|
||||
strip_software: true,
|
||||
strip_timestamps: false,
|
||||
strip_copyright: false,
|
||||
};
|
||||
assert!(config.should_strip_gps());
|
||||
assert!(!config.should_strip_camera());
|
||||
assert!(!config.should_strip_copyright());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn metadata_config_custom_all_off() {
|
||||
let config = MetadataConfig::Custom {
|
||||
strip_gps: false,
|
||||
strip_camera: false,
|
||||
strip_software: false,
|
||||
strip_timestamps: false,
|
||||
strip_copyright: false,
|
||||
};
|
||||
assert!(!config.should_strip_gps());
|
||||
assert!(!config.should_strip_camera());
|
||||
assert!(!config.should_strip_copyright());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn metadata_config_custom_all_on() {
|
||||
let config = MetadataConfig::Custom {
|
||||
strip_gps: true,
|
||||
strip_camera: true,
|
||||
strip_software: true,
|
||||
strip_timestamps: true,
|
||||
strip_copyright: true,
|
||||
};
|
||||
assert!(config.should_strip_gps());
|
||||
assert!(config.should_strip_camera());
|
||||
assert!(config.should_strip_copyright());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn watermark_rotation_variants_exist() {
|
||||
let rotations = [
|
||||
WatermarkRotation::Degrees45,
|
||||
WatermarkRotation::DegreesNeg45,
|
||||
WatermarkRotation::Degrees90,
|
||||
WatermarkRotation::Custom(30.0),
|
||||
];
|
||||
assert_eq!(rotations.len(), 4);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn rotation_auto_orient_variant() {
|
||||
let rotation = Rotation::AutoOrient;
|
||||
assert!(matches!(rotation, Rotation::AutoOrient));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn overwrite_action_default_is_auto_rename() {
|
||||
let default = OverwriteAction::default();
|
||||
assert!(matches!(default, OverwriteAction::AutoRename));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user