Add tests for ColorAttribute
This commit is contained in:
parent
6c2385d394
commit
a53a056cea
1 changed files with 98 additions and 3 deletions
|
@ -529,10 +529,15 @@ impl FromStr for ColorAttribute {
|
|||
|
||||
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
||||
let inverted = s.starts_with("no");
|
||||
let mut parsed = &s[2..];
|
||||
let mut parsed = s;
|
||||
|
||||
if inverted {
|
||||
parsed = &parsed[2..];
|
||||
|
||||
if parsed.starts_with("-") {
|
||||
parsed = &parsed[1..];
|
||||
}
|
||||
}
|
||||
|
||||
match parsed {
|
||||
"bold" if !inverted => Ok(Self::Bold),
|
||||
|
@ -615,3 +620,93 @@ mod integer {
|
|||
assert!(Integer::from_str("gg").is_err());
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod color_attribute {
|
||||
use super::ColorAttribute;
|
||||
use std::str::FromStr;
|
||||
|
||||
#[test]
|
||||
fn non_inverted() {
|
||||
assert_eq!(ColorAttribute::from_str("bold"), Ok(ColorAttribute::Bold));
|
||||
assert_eq!(ColorAttribute::from_str("dim"), Ok(ColorAttribute::Dim));
|
||||
assert_eq!(ColorAttribute::from_str("ul"), Ok(ColorAttribute::Ul));
|
||||
assert_eq!(ColorAttribute::from_str("blink"), Ok(ColorAttribute::Blink));
|
||||
assert_eq!(
|
||||
ColorAttribute::from_str("reverse"),
|
||||
Ok(ColorAttribute::Reverse)
|
||||
);
|
||||
assert_eq!(
|
||||
ColorAttribute::from_str("italic"),
|
||||
Ok(ColorAttribute::Italic)
|
||||
);
|
||||
assert_eq!(
|
||||
ColorAttribute::from_str("strike"),
|
||||
Ok(ColorAttribute::Strike)
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn inverted_no_dash() {
|
||||
assert_eq!(
|
||||
ColorAttribute::from_str("nobold"),
|
||||
Ok(ColorAttribute::NoBold)
|
||||
);
|
||||
assert_eq!(ColorAttribute::from_str("nodim"), Ok(ColorAttribute::NoDim));
|
||||
assert_eq!(ColorAttribute::from_str("noul"), Ok(ColorAttribute::NoUl));
|
||||
assert_eq!(
|
||||
ColorAttribute::from_str("noblink"),
|
||||
Ok(ColorAttribute::NoBlink)
|
||||
);
|
||||
assert_eq!(
|
||||
ColorAttribute::from_str("noreverse"),
|
||||
Ok(ColorAttribute::NoReverse)
|
||||
);
|
||||
assert_eq!(
|
||||
ColorAttribute::from_str("noitalic"),
|
||||
Ok(ColorAttribute::NoItalic)
|
||||
);
|
||||
assert_eq!(
|
||||
ColorAttribute::from_str("nostrike"),
|
||||
Ok(ColorAttribute::NoStrike)
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn inverted_dashed() {
|
||||
assert_eq!(
|
||||
ColorAttribute::from_str("no-bold"),
|
||||
Ok(ColorAttribute::NoBold)
|
||||
);
|
||||
assert_eq!(
|
||||
ColorAttribute::from_str("no-dim"),
|
||||
Ok(ColorAttribute::NoDim)
|
||||
);
|
||||
assert_eq!(ColorAttribute::from_str("no-ul"), Ok(ColorAttribute::NoUl));
|
||||
assert_eq!(
|
||||
ColorAttribute::from_str("no-blink"),
|
||||
Ok(ColorAttribute::NoBlink)
|
||||
);
|
||||
assert_eq!(
|
||||
ColorAttribute::from_str("no-reverse"),
|
||||
Ok(ColorAttribute::NoReverse)
|
||||
);
|
||||
assert_eq!(
|
||||
ColorAttribute::from_str("no-italic"),
|
||||
Ok(ColorAttribute::NoItalic)
|
||||
);
|
||||
assert_eq!(
|
||||
ColorAttribute::from_str("no-strike"),
|
||||
Ok(ColorAttribute::NoStrike)
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn invalid() {
|
||||
assert!(ColorAttribute::from_str("a").is_err());
|
||||
assert!(ColorAttribute::from_str("no bold").is_err());
|
||||
assert!(ColorAttribute::from_str("").is_err());
|
||||
assert!(ColorAttribute::from_str("no").is_err());
|
||||
assert!(ColorAttribute::from_str("no-").is_err());
|
||||
}
|
||||
}
|
||||
|
|
Reference in a new issue