use super::VowelClassifier;
#[derive(Debug, Clone, Copy, Default)]
pub struct ArmenianClassifier;
impl ArmenianClassifier {
pub fn new() -> Self {
Self
}
}
static ARMENIAN_VOWELS: &[char] = &[
'\u{0531}', '\u{0535}', '\u{0537}', '\u{053B}', '\u{0548}', '\u{0555}', '\u{0561}', '\u{0565}', '\u{0567}', '\u{056B}', '\u{0578}', '\u{0585}', ];
impl VowelClassifier for ArmenianClassifier {
fn is_vowel(&self, c: char) -> bool {
let code = c as u32;
match code {
0x0531 => true, 0x0535 => true, 0x0537 => true, 0x053B => true, 0x0548 => true, 0x0555 => true,
0x0561 => true, 0x0565 => true, 0x0567 => true, 0x056B => true, 0x0578 => true, 0x0585 => true,
_ => false,
}
}
fn script_name(&self) -> &'static str {
"Armenian"
}
fn vowels(&self) -> &[char] {
ARMENIAN_VOWELS
}
fn is_consonant(&self, c: char) -> bool {
let code = c as u32;
match code {
0x0532 => true, 0x0533 => true, 0x0534 => true, 0x0536 => true, 0x0538 => true, 0x0539 => true, 0x053A => true, 0x053C => true, 0x053D => true, 0x053E => true, 0x053F => true, 0x0540 => true, 0x0541 => true, 0x0542 => true, 0x0543 => true, 0x0544 => true, 0x0545 => true, 0x0546 => true, 0x0547 => true, 0x0549 => true, 0x054A => true, 0x054B => true, 0x054C => true, 0x054D => true, 0x054E => true, 0x054F => true, 0x0550 => true, 0x0551 => true, 0x0552 => true, 0x0553 => true, 0x0554 => true, 0x0556 => true,
0x0562 => true, 0x0563 => true, 0x0564 => true, 0x0566 => true, 0x0568 => true, 0x0569 => true, 0x056A => true, 0x056C => true, 0x056D => true, 0x056E => true, 0x056F => true, 0x0570 => true, 0x0571 => true, 0x0572 => true, 0x0573 => true, 0x0574 => true, 0x0575 => true, 0x0576 => true, 0x0577 => true, 0x0579 => true, 0x057A => true, 0x057B => true, 0x057C => true, 0x057D => true, 0x057E => true, 0x057F => true, 0x0580 => true, 0x0581 => true, 0x0582 => true, 0x0583 => true, 0x0584 => true, 0x0586 => true,
_ => false,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_uppercase_vowels() {
let c = ArmenianClassifier::new();
assert!(c.is_vowel('\u{0531}')); assert!(c.is_vowel('\u{0535}')); assert!(c.is_vowel('\u{0537}')); assert!(c.is_vowel('\u{053B}')); assert!(c.is_vowel('\u{0548}')); assert!(c.is_vowel('\u{0555}')); }
#[test]
fn test_lowercase_vowels() {
let c = ArmenianClassifier::new();
assert!(c.is_vowel('\u{0561}')); assert!(c.is_vowel('\u{0565}')); assert!(c.is_vowel('\u{0567}')); assert!(c.is_vowel('\u{056B}')); assert!(c.is_vowel('\u{0578}')); assert!(c.is_vowel('\u{0585}')); }
#[test]
fn test_consonants_not_vowels() {
let c = ArmenianClassifier::new();
assert!(!c.is_vowel('\u{0532}')); assert!(!c.is_vowel('\u{0533}')); assert!(!c.is_vowel('\u{0534}')); assert!(!c.is_vowel('\u{0544}')); assert!(!c.is_vowel('\u{0546}')); assert!(!c.is_vowel('\u{054D}')); }
#[test]
fn test_is_consonant_uppercase() {
let c = ArmenianClassifier::new();
assert!(c.is_consonant('\u{0532}')); assert!(c.is_consonant('\u{0533}')); assert!(c.is_consonant('\u{0534}')); assert!(c.is_consonant('\u{053C}')); assert!(c.is_consonant('\u{0544}')); assert!(c.is_consonant('\u{0546}')); assert!(c.is_consonant('\u{0547}')); assert!(c.is_consonant('\u{054D}')); assert!(c.is_consonant('\u{054C}')); assert!(c.is_consonant('\u{0556}')); }
#[test]
fn test_is_consonant_lowercase() {
let c = ArmenianClassifier::new();
assert!(c.is_consonant('\u{0562}')); assert!(c.is_consonant('\u{0563}')); assert!(c.is_consonant('\u{0564}')); assert!(c.is_consonant('\u{056C}')); assert!(c.is_consonant('\u{0574}')); assert!(c.is_consonant('\u{0576}')); assert!(c.is_consonant('\u{0577}')); assert!(c.is_consonant('\u{057D}')); }
#[test]
fn test_aspirated_consonants() {
let c = ArmenianClassifier::new();
assert!(c.is_consonant('\u{0539}')); assert!(c.is_consonant('\u{0553}')); assert!(c.is_consonant('\u{0554}')); assert!(c.is_consonant('\u{0549}')); }
#[test]
fn test_vowels_not_consonants() {
let c = ArmenianClassifier::new();
assert!(!c.is_consonant('\u{0531}')); assert!(!c.is_consonant('\u{0535}')); assert!(!c.is_consonant('\u{0561}')); assert!(!c.is_consonant('\u{0565}')); assert!(!c.is_consonant('\u{056B}')); }
#[test]
fn test_script_name() {
let c = ArmenianClassifier::new();
assert_eq!(c.script_name(), "Armenian");
}
}