#![allow(clippy::unwrap_used)]
use crate::core::constants::is_supported_extension;
#[test]
fn test_is_supported_extension_sysml() {
assert!(is_supported_extension("sysml"));
}
#[test]
fn test_is_supported_extension_kerml() {
assert!(is_supported_extension("kerml"));
}
#[test]
fn test_is_supported_extension_unsupported() {
assert!(!is_supported_extension("txt"));
assert!(!is_supported_extension("rs"));
assert!(!is_supported_extension("md"));
assert!(!is_supported_extension("json"));
}
#[test]
fn test_is_supported_extension_empty() {
assert!(!is_supported_extension(""));
}
#[test]
fn test_is_supported_extension_case_sensitive() {
assert!(!is_supported_extension("SYSML"));
assert!(!is_supported_extension("SysML"));
assert!(!is_supported_extension("KERML"));
assert!(!is_supported_extension("KerML"));
}
#[test]
fn test_is_supported_extension_with_dot() {
assert!(!is_supported_extension(".sysml"));
assert!(!is_supported_extension(".kerml"));
}
#[test]
fn test_is_supported_extension_whitespace() {
assert!(!is_supported_extension(" sysml"));
assert!(!is_supported_extension("\tsysml"));
assert!(!is_supported_extension("\nkerml"));
assert!(!is_supported_extension("sysml "));
assert!(!is_supported_extension("kerml\t"));
assert!(!is_supported_extension("kerml\n"));
assert!(!is_supported_extension(" sysml "));
assert!(!is_supported_extension("\tkerml\t"));
assert!(!is_supported_extension("sys ml"));
assert!(!is_supported_extension("ker ml"));
}
#[test]
fn test_is_supported_extension_special_characters() {
assert!(!is_supported_extension("sysml!"));
assert!(!is_supported_extension("@kerml"));
assert!(!is_supported_extension("sys#ml"));
assert!(!is_supported_extension("kerml$"));
assert!(!is_supported_extension("sys%ml"));
assert!(!is_supported_extension("ker^ml"));
assert!(!is_supported_extension("sys&ml"));
assert!(!is_supported_extension("ker*ml"));
assert!(!is_supported_extension("(sysml)"));
assert!(!is_supported_extension("[kerml]"));
assert!(!is_supported_extension("{sysml}"));
}
#[test]
fn test_is_supported_extension_numeric_strings() {
assert!(!is_supported_extension("123"));
assert!(!is_supported_extension("0"));
assert!(!is_supported_extension("sysml2"));
assert!(!is_supported_extension("sysml1"));
assert!(!is_supported_extension("kerml3"));
assert!(!is_supported_extension("1sysml"));
assert!(!is_supported_extension("2kerml"));
}
#[test]
fn test_is_supported_extension_unicode() {
assert!(!is_supported_extension("sysmlâ„¢"));
assert!(!is_supported_extension("sysml©"));
assert!(!is_supported_extension("sysml®"));
assert!(!is_supported_extension("sysml€"));
assert!(!is_supported_extension("sys🔥ml"));
assert!(!is_supported_extension("кerml")); assert!(!is_supported_extension("sysмl")); }
#[test]
fn test_is_supported_extension_path_like_strings() {
assert!(!is_supported_extension("path/to/sysml"));
assert!(!is_supported_extension("sysml/file"));
assert!(!is_supported_extension("/sysml"));
assert!(!is_supported_extension("kerml/"));
assert!(!is_supported_extension("path\\to\\kerml"));
assert!(!is_supported_extension("kerml\\file"));
assert!(!is_supported_extension("\\kerml"));
assert!(!is_supported_extension("sysml\\"));
}
#[test]
fn test_is_supported_extension_multiple_dots() {
assert!(!is_supported_extension("..sysml"));
assert!(!is_supported_extension("sysml.."));
assert!(!is_supported_extension("sys.ml"));
assert!(!is_supported_extension("ker.ml"));
assert!(!is_supported_extension("file.sysml"));
assert!(!is_supported_extension("sysml.backup"));
}
#[test]
fn test_is_supported_extension_mixed_case_variations() {
assert!(!is_supported_extension("Sysml"));
assert!(!is_supported_extension("sYsml"));
assert!(!is_supported_extension("sysMl"));
assert!(!is_supported_extension("sysML"));
assert!(!is_supported_extension("Kerml"));
assert!(!is_supported_extension("kErml"));
assert!(!is_supported_extension("keRml"));
assert!(!is_supported_extension("kerMl"));
assert!(!is_supported_extension("kerML"));
}
#[test]
fn test_is_supported_extension_very_long_strings() {
let long_string = "a".repeat(1000);
assert!(!is_supported_extension(&long_string));
let long_with_sysml = format!("{}sysml", "x".repeat(500));
assert!(!is_supported_extension(&long_with_sysml));
let sysml_with_long = format!("sysml{}", "y".repeat(500));
assert!(!is_supported_extension(&sysml_with_long));
}
#[test]
fn test_is_supported_extension_similar_strings() {
assert!(!is_supported_extension("sysm")); assert!(!is_supported_extension("sysmll")); assert!(!is_supported_extension("ssysml")); assert!(!is_supported_extension("sysmlx")); assert!(!is_supported_extension("ysml")); assert!(!is_supported_extension("sysm1"));
assert!(!is_supported_extension("kerm")); assert!(!is_supported_extension("kermll")); assert!(!is_supported_extension("kkerml")); assert!(!is_supported_extension("kermlx")); assert!(!is_supported_extension("erml")); assert!(!is_supported_extension("kerm1")); }
#[test]
fn test_is_supported_extension_null_byte() {
assert!(!is_supported_extension("sysml\0"));
assert!(!is_supported_extension("\0sysml"));
assert!(!is_supported_extension("sys\0ml"));
assert!(!is_supported_extension("kerml\0"));
assert!(!is_supported_extension("\0kerml"));
}
#[test]
fn test_is_supported_extension_only_supported() {
let all_test_cases = vec![
("sysml", true),
("kerml", true),
("", false),
("txt", false),
("rs", false),
("md", false),
("json", false),
("SYSML", false),
("KERML", false),
(".sysml", false),
(".kerml", false),
(" sysml", false),
("sysml ", false),
("sys ml", false),
("sysml2", false),
("xml", false),
("html", false),
("py", false),
];
for (ext, expected) in all_test_cases {
assert_eq!(
is_supported_extension(ext),
expected,
"Expected is_supported_extension(\"{ext}\") to be {expected}"
);
}
}