andiskaz 0.2.0

A convenience library for writing games and other apps in TUI
Documentation
use crate::string::{TermGrapheme, TermString};

#[test]
fn valid_grapheme() {
    TermGrapheme::new("a").unwrap();
    TermGrapheme::new("ç").unwrap();
    TermGrapheme::new("").unwrap();
    TermGrapheme::new(" ").unwrap();
    TermGrapheme::new("ẽ̞").unwrap();
}

#[test]
fn invalid_grapheme() {
    TermGrapheme::new("\u{31e}").unwrap_err();
    TermGrapheme::new("").unwrap_err();
    TermGrapheme::new("abcde").unwrap_err();
    TermGrapheme::new("\n").unwrap_err();
}

#[test]
fn lossy_grapheme() {
    assert_eq!(TermGrapheme::new_lossy("a").as_str(), "a");
    assert_eq!(TermGrapheme::new_lossy("ç").as_str(), "ç");
    assert_eq!(TermGrapheme::new_lossy("").as_str(), "");
    assert_eq!(TermGrapheme::new_lossy(" ").as_str(), " ");
    assert_eq!(TermGrapheme::new_lossy("ẽ̞").as_str(), "ẽ̞");
    assert_eq!(TermGrapheme::new_lossy("\u{31e}").as_str(), "�̞");
    assert_eq!(TermGrapheme::new_lossy("").as_str(), "");
    assert_eq!(TermGrapheme::new_lossy("abcde").as_str(), "a");
    assert_eq!(TermGrapheme::new_lossy("\n").as_str(), "");
}

#[test]
fn valid_tstring() {
    TermString::new("abc").unwrap();
    TermString::new("çedilha").unwrap();
    TermString::new("").unwrap();
    TermString::new(" ").unwrap();
    TermString::new("ẽ̞").unwrap();
}

#[test]
fn invalid_tstring() {
    TermString::new("\u{31e}abc").unwrap_err();
    TermGrapheme::new("aa\n").unwrap_err();
}

#[test]
fn lossy_tstring() {
    assert_eq!(TermString::new_lossy("a").as_str(), "a");
    assert_eq!(TermString::new_lossy("ç").as_str(), "ç");
    assert_eq!(TermString::new_lossy("").as_str(), "");
    assert_eq!(TermString::new_lossy(" ").as_str(), " ");
    assert_eq!(TermString::new_lossy("ẽ̞").as_str(), "ẽ̞");
    assert_eq!(TermString::new_lossy("\u{31e}").as_str(), "�̞");
    assert_eq!(TermString::new_lossy("").as_str(), "");
    assert_eq!(TermString::new_lossy("abcde").as_str(), "abcde");
}

#[test]
fn indices_iter() {
    let string = tstring!["abćdef̴"];
    let mut iter = string.indices();
    assert_eq!(iter.next().unwrap(), (0, TermGrapheme::new("a").unwrap()));
    assert_eq!(iter.next().unwrap(), (1, TermGrapheme::new("b").unwrap()));
    assert_eq!(iter.next().unwrap(), (2, TermGrapheme::new("").unwrap()));
    assert_eq!(iter.next().unwrap(), (5, TermGrapheme::new("d").unwrap()));
    assert_eq!(iter.next_back().unwrap(), (7, TermGrapheme::new("").unwrap()));
    assert_eq!(iter.next_back().unwrap(), (6, TermGrapheme::new("e").unwrap()));
    assert_eq!(iter.next(), None);
    assert_eq!(iter.next_back(), None);
}