malevich 0.4.0

Terminal plotting: a small grammar of marks, honest axes, millions of points
Documentation
use super::{display_width, fit_width};

#[test]
fn wide_glyphs_measure_two_columns() {
    assert_eq!(display_width("abc"), 3);
    assert_eq!(display_width("\u{65E5}\u{672C}"), 4);
    assert_eq!(display_width("a\u{65E5}b"), 4);
}

#[test]
fn combining_marks_measure_nothing() {
    assert_eq!(display_width("e\u{0301}"), 1);
}

#[test]
fn fitting_keeps_short_text_untouched() {
    assert_eq!(fit_width("hi", 4), "hi");
    assert_eq!(fit_width("", 0), "");
}

#[test]
fn fitting_truncates_with_an_ellipsis() {
    assert_eq!(fit_width("hello", 4), "hel\u{2026}");
    assert_eq!(fit_width("hello", 1), "\u{2026}");
}

#[test]
fn fitting_never_splits_a_wide_glyph() {
    // Four columns: the second ideograph (2 columns) cannot fit next to the
    // ellipsis, so it is dropped whole.
    assert_eq!(fit_width("\u{65E5}\u{672C}\u{8A9E}", 4), "\u{65E5}\u{2026}");
}