1 | /// Custom color structure, it will generate a true color in the result |
---|---|
2 | #[derive(Debug, Copy, Clone, PartialEq, Eq)] |
3 | pub struct CustomColor { |
4 | /// Red |
5 | pub r: u8, |
6 | /// Green |
7 | pub g: u8, |
8 | /// Blue |
9 | pub b: u8, |
10 | } |
11 | |
12 | /// This only makes custom color creation easier. |
13 | impl CustomColor { |
14 | /// Create a new custom color |
15 | pub fn new(r: u8, g: u8, b: u8) -> Self { |
16 | Self { r, g, b } |
17 | } |
18 | } |
19 | |
20 | impl From<(u8, u8, u8)> for CustomColor { |
21 | fn from((r: u8, g: u8, b: u8): (u8, u8, u8)) -> Self { |
22 | Self::new(r, g, b) |
23 | } |
24 | } |
25 | |
26 | #[cfg(test)] |
27 | mod tests { |
28 | use crate::*; |
29 | #[cfg_attr(feature = "no-color", ignore)] |
30 | #[test] |
31 | fn main() { |
32 | let my_color = CustomColor::new(0, 120, 120); |
33 | insta::assert_snapshot!("Greetings from Ukraine".custom_color(my_color)); |
34 | } |
35 | |
36 | #[test] |
37 | fn from_tuple() { |
38 | let tuple = (1u8, 255u8, 0u8); |
39 | let cc = CustomColor::from(tuple); |
40 | |
41 | assert_eq!(cc.r, tuple.0); |
42 | assert_eq!(cc.g, tuple.1); |
43 | assert_eq!(cc.b, tuple.2); |
44 | } |
45 | } |
46 |