use crate::error::ValueErrorType;
use crate::tossi::TOSSI_LIST;
pub fn verify_value(word: &str, tossi: &str) -> Result<(), ValueErrorType> {
if !is_verifier_tossi(tossi) {
Err(ValueErrorType::InvalidTossi)
} else if over_limit_word_len(word) {
Err(ValueErrorType::LimitLength)
} else {
Ok(())
}
}
fn is_verifier_tossi(tossi: &str) -> bool {
for check in TOSSI_LIST.iter() {
if check == &tossi {
return true;
}
}
false
}
fn over_limit_word_len(word: &str) -> bool {
let limitation = 50;
if word.chars().count() >= limitation {
return true;
}
false
}
#[test]
fn _over_limit_word_len() {
let temp = "12345";
assert_eq!(false, over_limit_word_len(temp));
let temp = "아이디는 50자까지 설정이 가능합니다.";
assert_eq!(false, over_limit_word_len(temp));
let temp = "10000000000000000000000000000000000000000000000000000";
assert_eq!(true, over_limit_word_len(temp));
let temp = "테트리스1테트리스2테트리스3테트리스4테트리스5테트리스6테트리스7테트리스8테트리스9테트리스10";
assert_eq!(true, over_limit_word_len(temp));
let temp = "1테트리스2테트리스3테트리스4테트리스5테트리스6테트리스7테트리스8테트리스9테트리스10테트리스";
assert_eq!(true, over_limit_word_len(temp));
}
#[test]
fn _is_verifier_tossi() {
let temp = "까지";
assert_eq!(true, is_verifier_tossi(temp));
let temp = "류현지";
assert_eq!(false, is_verifier_tossi(temp));
}
#[test]
fn _verifier() {
let word = "코코아";
let tossi = "까지";
assert_eq!(Ok(()), verify_value(word, tossi));
let word = "Cocoa";
let tossi = "까지";
assert_eq!(Ok(()), verify_value(word, tossi));
let word = "코코아";
let tossi = "먹고싶다";
assert_eq!(Err(ValueErrorType::InvalidTossi), verify_value(word, tossi));
let word = "코코아코코아코코아코코아코코아코코아코코아코코아코코아코코아코코아코코아코코아코코아코코아코코아코코아코코아코코아코코아";
let tossi = "는";
assert_eq!(Err(ValueErrorType::LimitLength), verify_value(word, tossi));
}