termgrid-core 1.5.5

Deterministic terminal grid state engine with invariant enforcement and backend decoupling.
Documentation
use termgrid_core::Style;

#[test]
fn style_overlay_fg_bg_precedence_and_flags_or() {
    let base = Style {
        fg: Some(1),
        bg: Some(2),
        dim: false,
        bold: true,
        italic: false,
        underline: false,
        blink: false,
        inverse: false,
        strike: false,
    };

    let top = Style {
        fg: None,
        bg: Some(9),
        dim: false,
        bold: false,
        italic: false,
        underline: true,
        blink: false,
        inverse: false,
        strike: false,
    };

    let out = base.overlay(top);
    assert_eq!(out.fg, Some(1));
    assert_eq!(out.bg, Some(9));
    assert!(out.bold);
    assert!(out.underline);
    assert!(!out.inverse);
}

#[test]
fn style_overlay_top_fg_wins() {
    let base = Style {
        fg: Some(3),
        bg: None,
        dim: false,
        bold: false,
        italic: false,
        underline: false,
        blink: false,
        inverse: true,
        strike: false,
    };

    let top = Style {
        fg: Some(7),
        bg: None,
        dim: false,
        bold: true,
        italic: false,
        underline: false,
        blink: false,
        inverse: false,
        strike: false,
    };

    let out = base.overlay(top);
    assert_eq!(out.fg, Some(7));
    assert_eq!(out.bg, None);
    assert!(out.bold);
    assert!(!out.underline);
    assert!(out.inverse);
}