colorseq/
lib.rs

1pub mod instances;
2
3#[cfg(test)]
4mod tests {
5    use crate::instances::color::*;
6
7    #[test]
8    fn parse_color_sequence_from_rgb() {
9        let escape: char = char::from_u32(0x1b).unwrap();
10        let result = color::make_color_from_rgb(64, 128, 255);
11        assert_eq!(result.plain_sequence, "64;128;255");
12        assert_eq!(result.plain_sequence_enclosed, "\"64;128;255\"");
13        assert_eq!(result.vt_sequence_foreground, format!("{escape}[38;2;64;128;255m"));
14        assert_eq!(result.vt_sequence_background, format!("{escape}[48;2;64;128;255m"));
15        assert_eq!(result.r, 64);
16        assert_eq!(result.g, 128);
17        assert_eq!(result.b, 255);
18        assert_eq!(result.hex, "#4080FF");
19        assert_eq!(result.color_type, color::ColorType::ColorTrue);
20    }
21
22    #[test]
23    fn parse_color_sequence_from_num_255() {
24        let escape: char = char::from_u32(0x1b).unwrap();
25        let result = color::make_color_from_num(40);
26        assert_eq!(result.plain_sequence, "0;215;0");
27        assert_eq!(result.plain_sequence_enclosed, "\"0;215;0\"");
28        assert_eq!(result.vt_sequence_foreground, format!("{escape}[38;2;0;215;0m"));
29        assert_eq!(result.vt_sequence_background, format!("{escape}[48;2;0;215;0m"));
30        assert_eq!(result.r, 0);
31        assert_eq!(result.g, 215);
32        assert_eq!(result.b, 0);
33        assert_eq!(result.hex, "#00D700");
34        assert_eq!(result.color_type, color::ColorType::Color255);
35    }
36
37    #[test]
38    fn parse_color_sequence_from_num_16() {
39        let escape: char = char::from_u32(0x1b).unwrap();
40        let result = color::make_color_from_num(1);
41        assert_eq!(result.plain_sequence, "128;0;0");
42        assert_eq!(result.plain_sequence_enclosed, "\"128;0;0\"");
43        assert_eq!(result.vt_sequence_foreground, format!("{escape}[38;2;128;0;0m"));
44        assert_eq!(result.vt_sequence_background, format!("{escape}[48;2;128;0;0m"));
45        assert_eq!(result.r, 128);
46        assert_eq!(result.g, 0);
47        assert_eq!(result.b, 0);
48        assert_eq!(result.hex, "#800000");
49        assert_eq!(result.color_type, color::ColorType::Color16);
50    }
51
52    #[test]
53    fn parse_color_sequence_from_hex_code() {
54        let escape: char = char::from_u32(0x1b).unwrap();
55        let result = color::make_color_from_specifier(String::from("#4080FF"));
56        assert_eq!(result.plain_sequence, "64;128;255");
57        assert_eq!(result.plain_sequence_enclosed, "\"64;128;255\"");
58        assert_eq!(result.vt_sequence_foreground, format!("{escape}[38;2;64;128;255m"));
59        assert_eq!(result.vt_sequence_background, format!("{escape}[48;2;64;128;255m"));
60        assert_eq!(result.r, 64);
61        assert_eq!(result.g, 128);
62        assert_eq!(result.b, 255);
63        assert_eq!(result.hex, "#4080FF");
64        assert_eq!(result.color_type, color::ColorType::ColorTrue);
65    }
66}