Sebastian Thielmake fmt (#331)a7d77514 years agoHistory
199 lines · 6.7 KB · Rust
RawDownload
mod name {    use std::str::FromStr;     use git_config::color::Name;     #[test]    fn non_bright() {        assert_eq!(Name::from_str("normal"), Ok(Name::Normal));        assert_eq!(Name::from_str("-1"), Ok(Name::Normal));        assert_eq!(Name::from_str("default"), Ok(Name::Default));        assert_eq!(Name::from_str("black"), Ok(Name::Black));        assert_eq!(Name::from_str("red"), Ok(Name::Red));        assert_eq!(Name::from_str("green"), Ok(Name::Green));        assert_eq!(Name::from_str("yellow"), Ok(Name::Yellow));        assert_eq!(Name::from_str("blue"), Ok(Name::Blue));        assert_eq!(Name::from_str("magenta"), Ok(Name::Magenta));        assert_eq!(Name::from_str("cyan"), Ok(Name::Cyan));        assert_eq!(Name::from_str("white"), Ok(Name::White));    }     #[test]    fn bright() {        assert_eq!(Name::from_str("brightblack"), Ok(Name::BrightBlack));        assert_eq!(Name::from_str("brightred"), Ok(Name::BrightRed));        assert_eq!(Name::from_str("brightgreen"), Ok(Name::BrightGreen));        assert_eq!(Name::from_str("brightyellow"), Ok(Name::BrightYellow));        assert_eq!(Name::from_str("brightblue"), Ok(Name::BrightBlue));        assert_eq!(Name::from_str("brightmagenta"), Ok(Name::BrightMagenta));        assert_eq!(Name::from_str("brightcyan"), Ok(Name::BrightCyan));        assert_eq!(Name::from_str("brightwhite"), Ok(Name::BrightWhite));    }     #[test]    fn ansi() {        assert_eq!(Name::from_str("255"), Ok(Name::Ansi(255)));        assert_eq!(Name::from_str("0"), Ok(Name::Ansi(0)));    }     #[test]    fn hex() {        assert_eq!(Name::from_str("#ff0010"), Ok(Name::Rgb(255, 0, 16)));        assert_eq!(Name::from_str("#ffffff"), Ok(Name::Rgb(255, 255, 255)));        assert_eq!(Name::from_str("#000000"), Ok(Name::Rgb(0, 0, 0)));    }     #[test]    fn invalid() {        assert!(Name::from_str("-2").is_err());        assert!(Name::from_str("brightnormal").is_err());        assert!(Name::from_str("brightdefault").is_err());        assert!(Name::from_str("").is_err());        assert!(Name::from_str("bright").is_err());        assert!(Name::from_str("256").is_err());        assert!(Name::from_str("#").is_err());        assert!(Name::from_str("#fff").is_err());        assert!(Name::from_str("#gggggg").is_err());    }} mod attribute {    use std::str::FromStr;     use git_config::color::Attribute;     #[test]    fn non_inverted() {        assert_eq!(Attribute::from_str("reset"), Ok(Attribute::RESET));        assert_eq!(Attribute::from_str("bold"), Ok(Attribute::BOLD));        assert_eq!(Attribute::from_str("dim"), Ok(Attribute::DIM));        assert_eq!(Attribute::from_str("ul"), Ok(Attribute::UL));        assert_eq!(Attribute::from_str("blink"), Ok(Attribute::BLINK));        assert_eq!(Attribute::from_str("reverse"), Ok(Attribute::REVERSE));        assert_eq!(Attribute::from_str("italic"), Ok(Attribute::ITALIC));        assert_eq!(Attribute::from_str("strike"), Ok(Attribute::STRIKE));    }     #[test]    fn inverted_no_dash() {        assert_eq!(Attribute::from_str("nobold"), Ok(Attribute::NO_BOLD));        assert_eq!(Attribute::from_str("nodim"), Ok(Attribute::NO_DIM));        assert_eq!(Attribute::from_str("noul"), Ok(Attribute::NO_UL));        assert_eq!(Attribute::from_str("noblink"), Ok(Attribute::NO_BLINK));        assert_eq!(Attribute::from_str("noreverse"), Ok(Attribute::NO_REVERSE));        assert_eq!(Attribute::from_str("noitalic"), Ok(Attribute::NO_ITALIC));        assert_eq!(Attribute::from_str("nostrike"), Ok(Attribute::NO_STRIKE));    }     #[test]    fn inverted_dashed() {        assert_eq!(Attribute::from_str("no-bold"), Ok(Attribute::NO_BOLD));        assert_eq!(Attribute::from_str("no-dim"), Ok(Attribute::NO_DIM));        assert_eq!(Attribute::from_str("no-ul"), Ok(Attribute::NO_UL));        assert_eq!(Attribute::from_str("no-blink"), Ok(Attribute::NO_BLINK));        assert_eq!(Attribute::from_str("no-reverse"), Ok(Attribute::NO_REVERSE));        assert_eq!(Attribute::from_str("no-italic"), Ok(Attribute::NO_ITALIC));        assert_eq!(Attribute::from_str("no-strike"), Ok(Attribute::NO_STRIKE));    }     #[test]    fn invalid() {        assert!(Attribute::from_str("no-reset").is_err());        assert!(Attribute::from_str("noreset").is_err());        assert!(Attribute::from_str("a").is_err());        assert!(Attribute::from_str("no bold").is_err());        assert!(Attribute::from_str("").is_err());        assert!(Attribute::from_str("no").is_err());        assert!(Attribute::from_str("no-").is_err());    }} mod from_git {    use std::convert::TryFrom;     use bstr::BStr;    use git_config::Color;     #[test]    fn reset() {        assert_eq!(color("reset"), "reset");    }     #[test]    fn empty() {        assert_eq!(color(""), "");    }     #[test]    fn at_most_two_colors() {        assert!(try_color("red green blue").is_err());    }     #[test]    fn attribute_before_color_name() {        assert_eq!(color("bold red"), "red bold");    }     #[test]    fn color_name_before_attribute() {        assert_eq!(color("red bold"), "red bold");    }     #[test]    fn attribute_fg_bg() {        assert_eq!(color("ul blue red"), "blue red ul");    }     #[test]    fn fg_bg_attribute() {        assert_eq!(color("blue red ul"), "blue red ul");    }     #[test]    fn multiple_attributes() {        assert_eq!(            color("blue bold dim ul blink reverse"),            "blue bold dim ul blink reverse"        );    }     #[test]    fn reset_then_multiple_attributes() {        assert_eq!(            color("blue bold dim ul blink reverse reset"),            "blue bold dim ul blink reverse reset"        );    }     #[test]    fn long_color_spec() {        assert_eq!(            color("254 255 bold dim ul blink reverse"),            "254 255 bold dim ul blink reverse"        );        let input = "#ffffff #ffffff bold nobold dim nodim italic noitalic ul noul blink noblink reverse noreverse strike nostrike";        let expected = "#ffffff #ffffff bold dim italic ul blink reverse strike nodim nobold noitalic noul noblink noreverse nostrike";        assert_eq!(color(input), expected);    }     #[test]    fn normal_default_can_clear_backgrounds() {        assert_eq!(color("normal default"), "normal default");    }     #[test]    fn default_can_combine_with_attributes() {        assert_eq!(            color("default default no-reverse bold"),            "default default bold noreverse"        );    }     fn color<'a>(name: impl Into<&'a BStr>) -> String {        try_color(name).expect("input color is expected to be valid")    }     fn try_color<'a>(name: impl Into<&'a BStr>) -> crate::Result<String> {        Ok(Color::try_from(name.into())?.to_string())    }}