diff options
Diffstat (limited to 'tests/attr.rs')
-rw-r--r-- | tests/attr.rs | 264 |
1 files changed, 3 insertions, 261 deletions
diff --git a/tests/attr.rs b/tests/attr.rs index a784388..64f4bd4 100644 --- a/tests/attr.rs +++ b/tests/attr.rs @@ -1,269 +1,11 @@ -#![allow(clippy::cognitive_complexity)] +mod helpers; #[test] fn colors() { - let mut parser = vt100::Parser::default(); - - parser.process(b"foo\x1b[31mbar"); - - assert_eq!(parser.screen().cell(0, 0).unwrap().contents(), "f"); - assert_eq!( - parser.screen().cell(0, 0).unwrap().fgcolor(), - vt100::Color::Default - ); - assert_eq!( - parser.screen().cell(0, 0).unwrap().bgcolor(), - vt100::Color::Default - ); - - assert_eq!(parser.screen().cell(0, 3).unwrap().contents(), "b"); - assert_eq!( - parser.screen().cell(0, 3).unwrap().fgcolor(), - vt100::Color::Idx(1) - ); - assert_eq!( - parser.screen().cell(0, 3).unwrap().bgcolor(), - vt100::Color::Default - ); - - parser.process(b"\x1b[2D\x1b[45mab"); - - assert_eq!(parser.screen().cell(0, 4).unwrap().contents(), "a"); - assert_eq!( - parser.screen().cell(0, 4).unwrap().fgcolor(), - vt100::Color::Idx(1) - ); - assert_eq!( - parser.screen().cell(0, 4).unwrap().bgcolor(), - vt100::Color::Idx(5) - ); - - parser.process(b"\x1b[m"); - - parser.process(b"\x1b[15;15Hfoo\x1b[31mbar\x1b[m"); - - assert_eq!(parser.screen().cell(14, 14).unwrap().contents(), "f"); - assert_eq!( - parser.screen().cell(14, 14).unwrap().fgcolor(), - vt100::Color::Default - ); - assert_eq!( - parser.screen().cell(14, 14).unwrap().bgcolor(), - vt100::Color::Default - ); - - assert_eq!(parser.screen().cell(14, 17).unwrap().contents(), "b"); - assert_eq!( - parser.screen().cell(14, 17).unwrap().fgcolor(), - vt100::Color::Idx(1) - ); - assert_eq!( - parser.screen().cell(14, 17).unwrap().bgcolor(), - vt100::Color::Default - ); - - parser.process(b"\x1b[2D\x1b[45mab"); - - assert_eq!(parser.screen().cell(14, 18).unwrap().contents(), "a"); - assert_eq!( - parser.screen().cell(14, 18).unwrap().fgcolor(), - vt100::Color::Default - ); - assert_eq!( - parser.screen().cell(14, 18).unwrap().bgcolor(), - vt100::Color::Idx(5) - ); - - parser.process(b"\x1b[m\x1b[2J\x1b[H"); - parser.process(b"a\x1b[38;5;123mb\x1b[48;5;158mc"); - - assert_eq!( - parser.screen().cell(0, 0).unwrap().fgcolor(), - vt100::Color::Default - ); - assert_eq!( - parser.screen().cell(0, 0).unwrap().bgcolor(), - vt100::Color::Default - ); - - assert_eq!( - parser.screen().cell(0, 1).unwrap().fgcolor(), - vt100::Color::Idx(123) - ); - assert_eq!( - parser.screen().cell(0, 1).unwrap().bgcolor(), - vt100::Color::Default - ); - - assert_eq!( - parser.screen().cell(0, 2).unwrap().fgcolor(), - vt100::Color::Idx(123) - ); - assert_eq!( - parser.screen().cell(0, 2).unwrap().bgcolor(), - vt100::Color::Idx(158) - ); - - parser.process(b"\x1b[38;2;50;75;100md\x1b[48;2;125;150;175me"); - - assert_eq!( - parser.screen().cell(0, 3).unwrap().fgcolor(), - vt100::Color::Rgb(50, 75, 100) - ); - assert_eq!( - parser.screen().cell(0, 3).unwrap().bgcolor(), - vt100::Color::Idx(158) - ); - - assert_eq!( - parser.screen().cell(0, 4).unwrap().fgcolor(), - vt100::Color::Rgb(50, 75, 100) - ); - assert_eq!( - parser.screen().cell(0, 4).unwrap().bgcolor(), - vt100::Color::Rgb(125, 150, 175) - ); - - parser.process(b"\x1b[m\x1b[2J\x1b[H"); - parser.process(b"\x1b[32;47mfoo"); - - assert_eq!( - parser.screen().cell(0, 1).unwrap().fgcolor(), - vt100::Color::Idx(2) - ); - assert_eq!( - parser.screen().cell(0, 1).unwrap().bgcolor(), - vt100::Color::Idx(7) - ); - - parser.process(b"\x1b[2J\x1b[H"); - parser.process(b"\x1b[39mfoo"); - - assert_eq!( - parser.screen().cell(0, 1).unwrap().fgcolor(), - vt100::Color::Default - ); - assert_eq!( - parser.screen().cell(0, 1).unwrap().bgcolor(), - vt100::Color::Idx(7) - ); - - parser.process(b"\x1b[2J\x1b[H"); - parser.process(b"\x1b[49mfoo"); - - assert_eq!( - parser.screen().cell(0, 1).unwrap().fgcolor(), - vt100::Color::Default - ); - assert_eq!( - parser.screen().cell(0, 1).unwrap().bgcolor(), - vt100::Color::Default - ); - - parser.process(b"\x1b[m\x1b[2J\x1b[H"); - parser.process(b"\x1b[92;107mfoo"); - - assert_eq!( - parser.screen().cell(0, 1).unwrap().fgcolor(), - vt100::Color::Idx(10) - ); - assert_eq!( - parser.screen().cell(0, 1).unwrap().bgcolor(), - vt100::Color::Idx(15) - ); - - // make sure bgcolor is properly preserved on cleared cells - parser.process(b"\x1bcfoo"); - - assert_eq!( - parser.screen().cell(0, 1).unwrap().bgcolor(), - vt100::Color::Default - ); - parser.process(b"\x1b[1;2H\x1b[41mo\x1b[m"); - assert_eq!( - parser.screen().cell(0, 1).unwrap().bgcolor(), - vt100::Color::Idx(1) - ); - - assert_eq!( - parser.screen().cell(0, 0).unwrap().bgcolor(), - vt100::Color::Default - ); - parser.process(b"\x1b[1;1H\x1b[41m\x1b[X\x1b[m"); - assert_eq!( - parser.screen().cell(0, 0).unwrap().bgcolor(), - vt100::Color::Idx(1) - ); - assert!(!parser.screen().cell(0, 0).unwrap().has_contents()); + helpers::fixture("colors"); } #[test] fn attrs() { - let mut parser = vt100::Parser::default(); - - parser.process(b"f\x1b[1mo\x1b[3mo\x1b[4mo\x1b[7mo"); - assert!(!parser.screen().cell(0, 0).unwrap().bold()); - assert!(!parser.screen().cell(0, 0).unwrap().italic()); - assert!(!parser.screen().cell(0, 0).unwrap().underline()); - assert!(!parser.screen().cell(0, 0).unwrap().inverse()); - assert!(parser.screen().cell(0, 1).unwrap().bold()); - assert!(!parser.screen().cell(0, 1).unwrap().italic()); - assert!(!parser.screen().cell(0, 1).unwrap().underline()); - assert!(!parser.screen().cell(0, 1).unwrap().inverse()); - assert!(parser.screen().cell(0, 2).unwrap().bold()); - assert!(parser.screen().cell(0, 2).unwrap().italic()); - assert!(!parser.screen().cell(0, 2).unwrap().underline()); - assert!(!parser.screen().cell(0, 2).unwrap().inverse()); - assert!(parser.screen().cell(0, 3).unwrap().bold()); - assert!(parser.screen().cell(0, 3).unwrap().italic()); - assert!(parser.screen().cell(0, 3).unwrap().underline()); - assert!(!parser.screen().cell(0, 3).unwrap().inverse()); - assert!(parser.screen().cell(0, 4).unwrap().bold()); - assert!(parser.screen().cell(0, 4).unwrap().italic()); - assert!(parser.screen().cell(0, 4).unwrap().underline()); - assert!(parser.screen().cell(0, 4).unwrap().inverse()); - - parser.process(b"\x1b[m"); - parser.process(b"\x1b[2J\x1b[H"); - parser.process(b"\x1b[1;4mf"); - assert!(parser.screen().cell(0, 0).unwrap().bold()); - assert!(!parser.screen().cell(0, 0).unwrap().italic()); - assert!(parser.screen().cell(0, 0).unwrap().underline()); - assert!(!parser.screen().cell(0, 0).unwrap().inverse()); - - parser.process(b"\x1b[22mo\x1b[24mo"); - assert!(!parser.screen().cell(0, 1).unwrap().bold()); - assert!(!parser.screen().cell(0, 1).unwrap().italic()); - assert!(parser.screen().cell(0, 1).unwrap().underline()); - assert!(!parser.screen().cell(0, 1).unwrap().inverse()); - assert!(!parser.screen().cell(0, 2).unwrap().bold()); - assert!(!parser.screen().cell(0, 2).unwrap().italic()); - assert!(!parser.screen().cell(0, 2).unwrap().underline()); - assert!(!parser.screen().cell(0, 2).unwrap().inverse()); - - parser.process(b"\x1b[1;3;4;7mo"); - assert!(parser.screen().cell(0, 3).unwrap().bold()); - assert!(parser.screen().cell(0, 3).unwrap().italic()); - assert!(parser.screen().cell(0, 3).unwrap().underline()); - assert!(parser.screen().cell(0, 3).unwrap().inverse()); - - // alacritty renders underline and inverse status for empty cells, so make - // sure we reflect that here (so that we generate diffs correctly and - // such). unclear who is right here - other terminals don't do this, but - // terminals do generally render bgcolor for empty cells, which feels - // similar. - parser.process(b"\x1bcfoo"); - - assert!(!parser.screen().cell(0, 1).unwrap().underline()); - assert!(!parser.screen().cell(0, 1).unwrap().inverse()); - parser.process(b"\x1b[1;2H\x1b[4;7mo\x1b[m"); - assert!(parser.screen().cell(0, 1).unwrap().underline()); - assert!(parser.screen().cell(0, 1).unwrap().inverse()); - - assert!(!parser.screen().cell(0, 0).unwrap().underline()); - assert!(!parser.screen().cell(0, 0).unwrap().inverse()); - parser.process(b"\x1b[1;1H\x1b[4;7m\x1b[X\x1b[m"); - assert!(parser.screen().cell(0, 0).unwrap().underline()); - assert!(parser.screen().cell(0, 0).unwrap().inverse()); - assert!(!parser.screen().cell(0, 0).unwrap().has_contents()); + helpers::fixture("attrs"); } |