andiskaz 0.2.0

A convenience library for writing games and other apps in TUI
Documentation
use crate::color::{
    ApproxBrightness,
    Brightness,
    CmyColor,
    Color2,
    ContrastFgWithBg,
    GrayColor,
    RgbColor,
    UpdateBg,
    UpdateFg,
    Updater,
};

#[test]
fn gray_color_brightness() {
    assert_eq!(GrayColor::new(0).approx_brightness(), Brightness { level: 0 });
    assert_eq!(
        GrayColor::new(3).approx_brightness(),
        Brightness { level: 8548 }
    );
    assert_eq!(
        GrayColor::new(9).approx_brightness(),
        Brightness { level: 25644 }
    );
    assert_eq!(
        GrayColor::new(12).approx_brightness(),
        Brightness { level: 34192 }
    );
    assert_eq!(
        GrayColor::new(23).approx_brightness(),
        Brightness { level: 65535 }
    );
}

#[test]
fn cmy_color_brightness() {
    assert_eq!(
        CmyColor::new(0, 0, 0).approx_brightness(),
        Brightness { level: 0 }
    );
    assert_eq!(
        CmyColor::new(1, 2, 3).approx_brightness(),
        Brightness { level: 26214 }
    );
    assert_eq!(
        CmyColor::new(5, 5, 5).approx_brightness(),
        Brightness { level: 65535 }
    );
}

#[test]
fn rgb_color_brightness() {
    assert_eq!(
        RgbColor { red: 0, green: 0, blue: 0 }.approx_brightness(),
        Brightness { level: 0 }
    );
    assert_eq!(
        RgbColor { red: 51, green: 102, blue: 153 }.approx_brightness(),
        Brightness { level: 23644 }
    );
    assert_eq!(
        RgbColor { red: 255, green: 255, blue: 255 }.approx_brightness(),
        Brightness { level: 65535 }
    );
}

#[test]
fn updaters() {
    let updater = (
        UpdateFg(CmyColor::new(1, 2, 3).into()),
        ContrastFgWithBg,
        UpdateBg(CmyColor::new(4, 4, 5).into()),
    );

    let pair = Color2 {
        foreground: RgbColor { red: 0, green: 0, blue: 0 }.into(),
        background: CmyColor::new(1, 1, 1).into(),
    };

    assert_eq!(
        updater.update(pair),
        Color2 {
            foreground: CmyColor::new(2, 3, 5).into(),
            background: CmyColor::new(4, 4, 5).into(),
        }
    );
}