use abjad::{Abjad, AbjadPrefs, LetterOrder};
#[test]
fn all() {
let input = "ابجد هوز حطي كلمن سعفص قرشت ثخذ ضظغ";
let prefs_mashriqi = AbjadPrefs::default();
let prefs_maghribi = AbjadPrefs {
letter_order: LetterOrder::Maghribi,
..AbjadPrefs::default()
};
let total_mashriqi = input.abjad_strict(prefs_mashriqi).unwrap();
let total_maghribi = input.abjad_strict(prefs_maghribi).unwrap();
assert_eq!(total_mashriqi, 5_995);
assert_eq!(total_mashriqi, total_maghribi);
}
#[test]
fn baha_count() {
let input = "بهاء";
let prefs = AbjadPrefs::default();
assert_eq!(input.abjad_strict(prefs).unwrap(), 9);
}
#[test]
fn baha_ignore() {
let input = "بهاء";
let prefs = AbjadPrefs {
ignore_lone_hamzah: true,
..AbjadPrefs::default()
};
assert_eq!(input.abjad_strict(prefs).unwrap(), 8);
}
#[test]
fn basmala() {
let input = "بسم الله الرحمن الرحيم";
let prefs = AbjadPrefs::default();
assert_eq!(input.abjad_strict(prefs).unwrap(), 786);
}
#[test]
fn humayun() {
let input = "همایون پادشاه از بام افتاد";
let prefs = AbjadPrefs::default();
assert_eq!(input.abjad_strict(prefs).unwrap(), 962);
}
#[test]
fn latin() {
let input = "the quick brown fox";
let prefs = AbjadPrefs::default();
assert_eq!(input.abjad(prefs), 0);
}
#[test]
fn latin_report() {
let input = "the quick brown fox";
let prefs = AbjadPrefs::default();
let (total, errors) = input.abjad_collect_errors(prefs);
assert_eq!(total, 0);
assert_eq!(errors.len(), 16);
}
#[test]
fn mixture() {
let input = "روح الله tapdancing خمینی";
let prefs = AbjadPrefs::default();
assert_eq!(input.abjad(prefs), 990);
}
#[test]
fn mixture_fail() {
let input = "روح الله tapdancing خمینی";
let prefs = AbjadPrefs::default();
assert!(input.abjad_strict(prefs).is_err());
}
#[test]
fn mixture_report() {
let input = "روح الله tapdancing خمینی";
let prefs = AbjadPrefs::default();
let (total, errors) = input.abjad_collect_errors(prefs);
assert_eq!(total, 990);
assert_eq!(errors.len(), 10);
}
#[test]
fn shaddah() {
let input = "رئیس مؤسّس دانشگاه";
let prefs = AbjadPrefs {
count_shaddah: true,
..AbjadPrefs::default()
};
assert_eq!(input.abjad_strict(prefs).unwrap(), 887);
}
#[test]
fn tammamtu() {
let input = "قد تمّمته";
let prefs = AbjadPrefs::default();
assert_eq!(input.abjad_strict(prefs).unwrap(), 989);
}
#[test]
fn vahshi() {
let input = "وفات وحشی مسکین";
let prefs = AbjadPrefs::default();
assert_eq!(input.abjad_strict(prefs).unwrap(), 991);
}
#[test]
fn zwnj() {
let input = "عادت میکنیم";
let prefs = AbjadPrefs::default();
assert_eq!(input.abjad_strict(prefs).unwrap(), 645);
}