use slotgate::execution::filesystem_safe_name::FilesystemSafeName;
#[test]
fn sanitize_leaves_alphanumeric_and_underscore_names_unchanged() {
let name = "already_safe_name_123";
let sanitized = FilesystemSafeName::sanitize(name);
assert_eq!(sanitized, "already_safe_name_123");
}
#[test]
fn sanitize_preserves_readability_of_the_original_segments() {
let name = "cluster::byzantine_tests::foo";
let sanitized = FilesystemSafeName::sanitize(name);
assert!(sanitized.contains("cluster"));
assert!(sanitized.contains("byzantine_tests"));
assert!(sanitized.contains("foo"));
}
#[test]
fn sanitize_replaces_double_colons_from_rust_test_paths() {
let name = "cluster::byzantine_tests::byzantine_new_view_from_non_proposer_is_rejected";
let sanitized = FilesystemSafeName::sanitize(name);
assert!(!sanitized.contains(':'));
}
#[test]
fn sanitize_replaces_every_windows_illegal_character() {
let name = "a<b>c:d\"e/f\\g|h?i*j";
let sanitized = FilesystemSafeName::sanitize(name);
for illegal in ['<', '>', ':', '"', '/', '\\', '|', '?', '*'] {
assert!(
!sanitized.contains(illegal),
"sanitized name still contains illegal character '{illegal}': {sanitized}"
);
}
}