cranpose-ui 0.1.164

UI primitives for Cranpose
Documentation
use super::*;

#[test]
fn announcements_come_back_in_order() {
    drain_announcements();
    announce("first");
    Announcer.announce_assertive("second");
    let taken = drain_announcements();
    assert_eq!(taken.len(), 2);
    assert_eq!(taken[0].text, "first");
    assert_eq!(taken[0].mode, LiveRegionMode::Polite);
    assert_eq!(taken[1].text, "second");
    assert_eq!(taken[1].mode, LiveRegionMode::Assertive);
    assert_eq!(pending_announcements(), 0);
}

#[test]
fn empty_text_never_reaches_the_reader() {
    drain_announcements();
    announce("");
    announce("   ");
    assert_eq!(pending_announcements(), 0);
}

#[test]
fn the_queue_holds_the_newest_when_nothing_drains_it() {
    drain_announcements();
    for index in 0..QUEUE_LIMIT + 5 {
        announce(format!("line {index}"));
    }
    let taken = drain_announcements();
    assert_eq!(taken.len(), QUEUE_LIMIT);
    assert_eq!(taken[0].text, "line 5");
    assert_eq!(
        taken[QUEUE_LIMIT - 1].text,
        format!("line {}", QUEUE_LIMIT + 4)
    );
}