test: improved test syntax

_

_

_
pull/12043/head
Nik Revenco 2025-03-25 17:31:53 +00:00
parent b0251ef715
commit 13fa575429
1 changed files with 130 additions and 191 deletions

View File

@ -192,207 +192,146 @@ to_case! {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::*; macro_rules! test_case_converters {
($($case_converter:ident: $($input:literal -> $expected:literal)*)*) => {
#[test] $(
fn test_camel_case_conversion() { #[test]
let tests = [ fn $case_converter() {
("hello world", "helloWorld"), for (input, expected) in [ $(($input, $expected),)* ] {
("Hello World", "helloWorld"), assert_eq!(super::$case_converter(input.chars()), expected, "{input}");
("hello_world", "helloWorld"), }
("HELLO_WORLD", "helloWorld"), }
("hello-world", "helloWorld"), )*
("hello world", "helloWorld"),
(" hello world", "helloWorld"),
("hello\tworld", "helloWorld"),
("HELLO WORLD", "helloWorld"),
("HELLO-world", "helloWorld"),
("hello WORLD ", "helloWorld"),
("helloWorld", "helloWorld"),
];
for (input, expected) in tests {
assert_eq!(to_camel_case(input.chars()), expected)
} }
} }
#[test] test_case_converters! {
fn test_lower_case_conversion() { to_camel_case:
let tests = [ "hello world" -> "helloWorld"
("HelloWorld", "helloworld"), "Hello World" -> "helloWorld"
("HELLO WORLD", "hello world"), "hello_world" -> "helloWorld"
("hello_world", "hello_world"), "HELLO_WORLD" -> "helloWorld"
("Hello-World", "hello-world"), "hello-world" -> "helloWorld"
("Hello", "hello"), "hello world" -> "helloWorld"
("WORLD", "world"), " hello world" -> "helloWorld"
("hello world", "hello world"), "hello\tworld" -> "helloWorld"
("HELLOworld", "helloworld"), "HELLO WORLD" -> "helloWorld"
("hello-world", "hello-world"), "HELLO-world" -> "helloWorld"
("hello_world_here", "hello_world_here"), "hello WORLD " -> "helloWorld"
("HELLO_world", "hello_world"), "helloWorld" -> "helloWorld"
("MixEdCaseString", "mixedcasestring"),
];
for (input, expected) in tests { to_pascal_case:
assert_eq!(to_lowercase(input.chars()), expected) "hello world" -> "HelloWorld"
} "Hello World" -> "HelloWorld"
} "hello_world" -> "HelloWorld"
"HELLO_WORLD" -> "HelloWorld"
"hello-world" -> "HelloWorld"
"hello world" -> "HelloWorld"
" hello world" -> "HelloWorld"
"hello\tworld" -> "HelloWorld"
"HELLO WORLD" -> "HelloWorld"
"HELLO-world" -> "HelloWorld"
"hello WORLD " -> "HelloWorld"
"helloWorld" -> "HelloWorld"
#[test] to_snake_case:
fn test_upper_case_conversion() { "helloWorld" -> "hello_world"
let tests = [ "HelloWorld" -> "hello_world"
("helloWorld", "HELLOWORLD"), "hello world" -> "hello_world"
("hello world", "HELLO WORLD"), "HELLO WORLD" -> "hello_world"
("hello_world", "HELLO_WORLD"), "hello-world" -> "hello_world"
("Hello-World", "HELLO-WORLD"), "hello world" -> "hello_world"
("Hello", "HELLO"), "hello\tworld" -> "hello_world"
("world", "WORLD"), "HELLO WORLD" -> "hello_world"
("hello world", "HELLO WORLD"), "HELLO-world" -> "hello_world"
("helloworld", "HELLOWORLD"), "hello WORLD " -> "hello_world"
("hello-world", "HELLO-WORLD"), "helloWorld" -> "hello_world"
("hello_world_here", "HELLO_WORLD_HERE"), "helloWORLD123" -> "hello_world123"
("hello_WORLD", "HELLO_WORLD"),
("mixedCaseString", "MIXEDCASESTRING"),
];
for (input, expected) in tests { to_kebab_case:
assert_eq!(to_uppercase(input.chars()), expected) "helloWorld" -> "hello-world"
} "HelloWorld" -> "hello-world"
} "hello_world" -> "hello-world"
"HELLO_WORLD" -> "hello-world"
"hello-world" -> "hello-world"
"hello world" -> "hello-world"
"hello\tworld" -> "hello-world"
"HELLO WORLD" -> "hello-world"
"HELLO-world" -> "hello-world"
"hello WORLD " -> "hello-world"
"helloWorld" -> "hello-world"
"HelloWorld123" -> "hello-world123"
#[test] to_title_case:
fn test_pascal_case_conversion() { "hello world" -> "Hello World"
let tests = [ "hello world again" -> "Hello World Again"
("hello world", "HelloWorld"), "Hello World" -> "Hello World"
("Hello World", "HelloWorld"), "hello_world" -> "Hello World"
("hello_world", "HelloWorld"), "HELLO_WORLD" -> "Hello World"
("HELLO_WORLD", "HelloWorld"), "hello-world" -> "Hello World"
("hello-world", "HelloWorld"), "hello world" -> "Hello World"
("hello world", "HelloWorld"), " hello world" -> "Hello World"
(" hello world", "HelloWorld"), "hello\tworld" -> "Hello World"
("hello\tworld", "HelloWorld"), "HELLO WORLD" -> "Hello World"
("HELLO WORLD", "HelloWorld"), "HELLO-world" -> "Hello World"
("HELLO-world", "HelloWorld"), "hello WORLD " -> "Hello World"
("hello WORLD ", "HelloWorld"), "helloWorld" -> "Hello World"
("helloWorld", "HelloWorld"),
];
for (input, expected) in tests { to_sentence_case:
assert_eq!(to_pascal_case(input.chars()), expected) "hello world" -> "Hello world"
} "hello world again" -> "Hello world again"
} "Hello World" -> "Hello world"
"hello_world" -> "Hello world"
"HELLO_WORLD" -> "Hello world"
"hello-world" -> "Hello world"
"hello world" -> "Hello world"
" hello world" -> "Hello world"
"hello\tworld" -> "Hello world"
"HELLO WORLD" -> "Hello world"
"HELLO-world" -> "Hello world"
"hello WORLD " -> "Hello world"
"helloWorld" -> "Hello world"
#[test] to_alternate_case:
fn test_alternate_case_conversion() { "hello world" -> "HELLO WORLD"
let tests = [ "Hello World" -> "hELLO wORLD"
("hello world", "HELLO WORLD"), "helLo_woRlD" -> "HELlO_WOrLd"
("Hello World", "hELLO wORLD"), "HELLO_world" -> "hello_WORLD"
("helLo_woRlD", "HELlO_WOrLd"), "hello-world" -> "HELLO-WORLD"
("HELLO_world", "hello_WORLD"), "Hello-world" -> "hELLO-WORLD"
("hello-world", "HELLO-WORLD"), "hello" -> "HELLO"
("Hello-world", "hELLO-WORLD"), "HELLO" -> "hello"
("hello", "HELLO"), "hello123" -> "HELLO123"
("HELLO", "hello"), "hello WORLD" -> "HELLO world"
("hello123", "HELLO123"), "HELLO123 world" -> "hello123 WORLD"
("hello WORLD", "HELLO world"), "world hello" -> "WORLD HELLO"
("HELLO123 world", "hello123 WORLD"),
("world hello", "WORLD HELLO"),
];
for (input, expected) in tests { to_uppercase:
assert_eq!(to_alternate_case(input.chars()), expected) "helloWorld" -> "HELLOWORLD"
} "hello world" -> "HELLO WORLD"
} "hello_world" -> "HELLO_WORLD"
"Hello-World" -> "HELLO-WORLD"
"Hello" -> "HELLO"
"world" -> "WORLD"
"hello world" -> "HELLO WORLD"
"helloworld" -> "HELLOWORLD"
"hello-world" -> "HELLO-WORLD"
"hello_world_here" -> "HELLO_WORLD_HERE"
"hello_WORLD" -> "HELLO_WORLD"
"mixedCaseString" -> "MIXEDCASESTRING"
#[test] to_lowercase:
fn test_title_case_conversion() { "HelloWorld" -> "helloworld"
let tests = [ "HELLO WORLD" -> "hello world"
("hello world", "Hello World"), "hello_world" -> "hello_world"
("hello world again", "Hello World Again"), "Hello-World" -> "hello-world"
("Hello World", "Hello World"), "Hello" -> "hello"
("hello_world", "Hello World"), "WORLD" -> "world"
("HELLO_WORLD", "Hello World"), "hello world" -> "hello world"
("hello-world", "Hello World"), "HELLOworld" -> "helloworld"
("hello world", "Hello World"), "hello-world" -> "hello-world"
(" hello world", "Hello World"), "hello_world_here" -> "hello_world_here"
("hello\tworld", "Hello World"), "HELLO_world" -> "hello_world"
("HELLO WORLD", "Hello World"), "MixEdCaseString" -> "mixedcasestring"
("HELLO-world", "Hello World"),
("hello WORLD ", "Hello World"),
("helloWorld", "Hello World"),
];
for (input, expected) in tests {
dbg!(input);
assert_eq!(to_title_case(input.chars()), expected)
}
}
#[test]
fn test_sentence_case_conversion() {
let tests = [
("hello world", "Hello world"),
("hello world again", "Hello world again"),
("Hello World", "Hello world"),
("hello_world", "Hello world"),
("HELLO_WORLD", "Hello world"),
("hello-world", "Hello world"),
("hello world", "Hello world"),
(" hello world", "Hello world"),
("hello\tworld", "Hello world"),
("HELLO WORLD", "Hello world"),
("HELLO-world", "Hello world"),
("hello WORLD ", "Hello world"),
("helloWorld", "Hello world"),
];
for (input, expected) in tests {
dbg!(input);
assert_eq!(to_sentence_case(input.chars()), expected)
}
}
#[test]
fn test_kebab_case_conversion() {
let tests = [
("helloWorld", "hello-world"),
("HelloWorld", "hello-world"),
("hello_world", "hello-world"),
("HELLO_WORLD", "hello-world"),
("hello-world", "hello-world"),
("hello world", "hello-world"),
("hello\tworld", "hello-world"),
("HELLO WORLD", "hello-world"),
("HELLO-world", "hello-world"),
("hello WORLD ", "hello-world"),
("helloWorld", "hello-world"),
("HelloWorld123", "hello-world123"),
];
for (input, expected) in tests {
assert_eq!(to_kebab_case(input.chars()), expected)
}
}
#[test]
fn test_snake_case_conversion() {
let tests = [
("helloWorld", "hello_world"),
("HelloWorld", "hello_world"),
("hello world", "hello_world"),
("HELLO WORLD", "hello_world"),
("hello-world", "hello_world"),
("hello world", "hello_world"),
("hello\tworld", "hello_world"),
("HELLO WORLD", "hello_world"),
("HELLO-world", "hello_world"),
("hello WORLD ", "hello_world"),
("helloWorld", "hello_world"),
("helloWORLD123", "hello_world123"),
];
for (input, expected) in tests {
assert_eq!(to_snake_case(input.chars()), expected)
}
} }
} }