#[test]
fn common_hanja_come_first() {
assert_eq!(okpyeon::hanja('학').unwrap()[0], ('學', "배울 학"));
assert_eq!(okpyeon::hanja('국').unwrap()[0], ('國', "나라 국"));
assert_eq!(okpyeon::hanja('수').unwrap()[0], ('水', "물 수, 고를 수"));
}
#[test]
fn absent_hanja_readings() {
assert_eq!(okpyeon::hanja('A'), None);
assert_eq!(okpyeon::hanja('あ'), None);
}
#[test]
fn msime_symbol_categories() {
let get = |c| okpyeon::symbols(c).unwrap();
assert!(get('ㄱ').contains(&'!'), "ㄱ = punctuation");
assert!(get('ㄴ').contains(&'('), "ㄴ = brackets");
assert!(get('ㄷ').contains(&'±'), "ㄷ = math");
assert!(get('ㄹ').contains(&'℃'), "ㄹ = units");
assert!(get('ㅁ').contains(&'※'), "ㅁ = general symbols");
assert!(get('ㅁ').contains(&'★'), "ㅁ = general symbols");
assert!(get('ㅂ').contains(&'─'), "ㅂ = box drawing");
assert!(get('ㅎ').contains(&'α'), "ㅎ = greek");
assert!(get('ㄸ').contains(&'ぁ'), "ㄸ = hiragana");
assert!(get('ㅆ').contains(&'А'), "ㅆ = cyrillic");
}
#[test]
fn tteung_has_no_symbols_like_msime() {
assert_eq!(okpyeon::symbols('ㅉ'), None);
assert_eq!(okpyeon::symbols_revised('ㅉ'), None);
}
#[test]
fn revised_differs_only_in_documented_quirks() {
let rieul = okpyeon::symbols('ㄹ').unwrap();
let rieul_rev = okpyeon::symbols_revised('ㄹ').unwrap();
assert_eq!(rieul[3], 'F');
assert_eq!(rieul_rev[3], '°');
assert_eq!(rieul.len(), rieul_rev.len());
assert!(rieul
.iter()
.zip(rieul_rev.iter())
.enumerate()
.all(|(i, (a, b))| i == 3 || a == b));
let mieum = okpyeon::symbols('ㅁ').unwrap();
let mieum_rev = okpyeon::symbols_revised('ㅁ').unwrap();
assert!(!mieum.contains(&'㉾'));
assert_eq!(mieum_rev.last(), Some(&'㉾'));
assert_eq!(mieum_rev.len(), mieum.len() + 1);
assert_eq!(&mieum_rev[..mieum.len()], mieum);
for key in "ㄱㄲㄴㄷㄸㅂㅃㅅㅆㅇㅈㅊㅋㅌㅍㅎ".chars() {
assert_eq!(
okpyeon::symbols(key).unwrap(),
okpyeon::symbols_revised(key).unwrap(),
"unexpected revision at {key}"
);
}
}