use crate::codegen::naming::to_class_name;
pub(crate) fn main_class_name(crate_name: &str) -> String {
let base = to_class_name(&crate_name.replace('-', "_"));
if base.ends_with("Rs") {
base
} else {
format!("{base}Rs")
}
}
pub(crate) fn exception_class_name(crate_name: &str) -> String {
format!("{}Exception", main_class_name(crate_name))
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn main_class_name_pascal_cases_a_hyphenated_crate_name() {
assert_eq!(main_class_name("sample-multi-word"), "SampleMultiWordRs");
}
#[test]
fn main_class_name_does_not_double_the_rs_suffix() {
assert_eq!(main_class_name("sample_rs"), "SampleRs");
}
#[test]
fn exception_class_name_appends_exception_to_the_main_class() {
assert_eq!(exception_class_name("sample-multi-word"), "SampleMultiWordRsException");
}
}