const TOSSI_LIST: [&str; 114] = [
"(가)이",
"(과)와",
"(는)은",
"(를)을",
"(와)과",
"(으)로",
"(으)로부터",
"(으)로서",
"(으)로써",
"(은)는",
"(을)를",
"(이)가",
"(이)고",
"(이)나",
"(이)나마",
"(이)니",
"(이)다",
"(이)든",
"(이)든가",
"(이)든지",
"(이)라도",
"(이)라야",
"(이)란",
"(이)랑",
"(이)며",
"(이)야말로",
"(이)여",
"가",
"가(이)",
"고",
"과",
"과(와)",
"나",
"나마",
"는",
"는(은)",
"니",
"다",
"든",
"든가",
"든지",
"라도",
"라야",
"란",
"랑",
"로",
"로부터",
"로서",
"로써",
"를",
"를(을)",
"며",
"야말로",
"여",
"와",
"와(과)",
"으로",
"으로부터",
"으로서",
"으로써",
"은",
"은(는)",
"을",
"을(를)",
"이",
"이(가)",
"이고",
"이나",
"이나마",
"이니",
"이다",
"이든",
"이든가",
"이든지",
"이라도",
"이라야",
"이란",
"이랑",
"이며",
"이야말로",
"이여",
"인들",
"같이",
"거나",
"게",
"까지",
"께",
"께서",
"대로",
"도",
"마냥",
"마다",
"마저",
"만",
"밖에",
"보다",
"부터",
"뿐",
"에",
"에게",
"에게로",
"에게서",
"에다가",
"에서",
"에서부터",
"의",
"이다",
"조차",
"처럼",
"커녕",
"하고",
"한테",
"한테서",
"인들",
];
use crate::error::ValueErrorType;
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));
}