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}