#![forbid(unsafe_code)]
extern crate unic;
use unic::bidi::BidiInfo;
use unic::normal::StrNormalForm;
use unic::ucd::age::{Age, CharAge};
use unic::ucd::bidi::{BidiClass, BidiChar, BidiStr};
use unic::ucd::normal::compose;
fn main() {
assert_eq!(Age::of('A'), Age::V1_1);
assert_eq!(Age::of('\u{A0000}'), Age::Unassigned);
assert_eq!(Age::of('\u{10FFFF}'), Age::V2_0);
assert_eq!('🦊'.age(), Age::V9_0);
let text = concat![
"א",
"ב",
"ג",
"a",
"b",
"c",
];
assert!(!text.has_explicit());
assert!(text.has_rtl());
assert!(text.has_ltr());
assert_eq!(text.chars().nth(0).unwrap().bidi_class(), BidiClass::R);
assert!(!text.chars().nth(0).unwrap().is_explicit());
assert!(!text.chars().nth(0).unwrap().is_ltr());
assert!(text.chars().nth(0).unwrap().is_rtl());
assert_eq!(text.chars().nth(3).unwrap().bidi_class(), BidiClass::L);
assert!(!text.chars().nth(3).unwrap().is_explicit());
assert!(text.chars().nth(3).unwrap().is_ltr());
assert!(!text.chars().nth(3).unwrap().is_rtl());
let bidi_info = BidiInfo::new(&text, None);
assert_eq!(bidi_info.paragraphs.len(), 1);
let para = &bidi_info.paragraphs[0];
assert_eq!(para.level.number(), 1);
assert_eq!(para.level.is_rtl(), true);
let line = para.range.clone();
let display = bidi_info.reorder_line(para, line);
assert_eq!(
display,
concat![
"a",
"b",
"c",
"ג",
"ב",
"א",
]
);
assert_eq!(compose('A', '\u{030A}'), Some('Å'));
let s = "ÅΩ";
let c = s.nfc().collect::<String>();
assert_eq!(c, "ÅΩ");
}