diff --git a/README.md b/README.md index 6bec6ab..fd7852b 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,7 @@ other languages. - Diamond (https://www.codewars.com/kata/5503013e34137eeeaa001648) - Fibonacci Product (https://www.codewars.com/kata/5541f58a944b85ce6d00006a) - Valid Parentheses (https://www.codewars.com/kata/52774a314c2333f0a7000688) +- Alphanumeric (https://www.codewars.com/kata/526dbd6c8c0eb53254000110) #### Kata 6 diff --git a/src/codewars/mod.rs b/src/codewars/mod.rs index 6cb13b8..14c42da 100644 --- a/src/codewars/mod.rs +++ b/src/codewars/mod.rs @@ -43,3 +43,4 @@ mod camel_case; mod cats_and_shelves; mod people_on_the_bus; mod summation; +mod not_secure; diff --git a/src/codewars/not_secure.rs b/src/codewars/not_secure.rs new file mode 100644 index 0000000..d82cace --- /dev/null +++ b/src/codewars/not_secure.rs @@ -0,0 +1,38 @@ +// Regex solution +// use regex::Regex; +// +// fn alphanumeric(password: &str) -> bool { +// let regex = Regex::new("^[a-zA-Z0-9]+$").unwrap(); +// regex.is_match(password) +// } + +fn alphanumeric(password: &str) -> bool { + !password.is_empty() && password.chars().all(char::is_alphanumeric) +} + +#[cfg(test)] +mod tests { + use test_case::test_case; + + use crate::codewars::not_secure::alphanumeric; + + #[test] + fn should_return_false_when_value_is_empty() { + let actual = alphanumeric(""); + assert_eq!(actual, false); + } + + #[test_case("hello", true)] + #[test_case("PassW0rd", true)] + fn should_return_true_when_value_is_alphanumeric(value: &str, expected: bool) { + let actual = alphanumeric(value); + assert_eq!(actual, expected); + } + + #[test_case("hello world_", false)] + #[test_case(" ", false)] + fn should_return_false_when_value_is_not_alphanumeric(value: &str, expected: bool) { + let actual = alphanumeric(value); + assert_eq!(actual, expected); + } +}