cute_print/cute/test/
cute_text_test.rs

1#[cfg(test)]
2mod cute_text_test {
3    use crate::{ColorList, CuteText, StyleList};
4    use std::fmt::Debug;
5
6    use std::fmt;
7
8    impl Debug for ColorList {
9        fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
10            f.debug_struct("ColorList")
11                .field("reset", &self.reset)
12                .field("black_fg", &self.black_fg)
13                .field("red_fg", &self.red_fg)
14                .field("green_fg", &self.green_fg)
15                .field("yellow_fg", &self.yellow_fg)
16                .field("blue_fg", &self.blue_fg)
17                .field("magenta_fg", &self.magenta_fg)
18                .field("cyan_fg", &self.cyan_fg)
19                .field("white_fg", &self.white_fg)
20                .field("bright_black_fg", &self.bright_black_fg)
21                .field("bright_red_fg", &self.bright_red_fg)
22                .field("bright_green_fg", &self.bright_green_fg)
23                .field("bright_yellow_fg", &self.bright_yellow_fg)
24                .field("bright_blue_fg", &self.bright_blue_fg)
25                .field("bright_magenta_fg", &self.bright_magenta_fg)
26                .field("bright_cyan_fg", &self.bright_cyan_fg)
27                .field("bright_white_fg", &self.bright_white_fg)
28                .field("black_bg", &self.black_bg)
29                .field("red_bg", &self.red_bg)
30                .field("green_bg", &self.green_bg)
31                .field("yellow_bg", &self.yellow_bg)
32                .field("blue_bg", &self.blue_bg)
33                .field("magenta_bg", &self.magenta_bg)
34                .field("cyan_bg", &self.cyan_bg)
35                .field("white_bg", &self.white_bg)
36                .field("bright_black_bg", &self.bright_black_bg)
37                .field("bright_red_bg", &self.bright_red_bg)
38                .field("bright_green_bg", &self.bright_green_bg)
39                .field("bright_yellow_bg", &self.bright_yellow_bg)
40                .field("bright_blue_bg", &self.bright_blue_bg)
41                .field("bright_magenta_bg", &self.bright_magenta_bg)
42                .field("bright_cyan_bg", &self.bright_cyan_bg)
43                .field("bright_white_bg", &self.bright_white_bg)
44                .finish()
45        }
46    }
47
48    impl Debug for CuteText {
49        fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
50            f.debug_struct("CuteText")
51                .field("text", &self.text)
52                .field("color_list", &self.color_list)
53                .finish()
54        }
55    }
56
57    impl PartialEq for CuteText {
58        fn eq(&self, other: &Self) -> bool {
59            self.text == other.text && self.color_list.red_bg == other.color_list.red_bg
60        }
61    }
62
63    #[test]
64    fn test_cute_text() {
65        let cute_text: CuteText = CuteText {
66            text: String::new(),
67            color_list: ColorList::new(),
68            prev_len: 0,
69            color_before_text_length: 0,
70            style_list: StyleList::new(),
71        };
72
73        let cute_text_new: CuteText = CuteText::new();
74        assert_eq!(cute_text, cute_text_new);
75    }
76
77    #[test]
78    fn add_text() {
79        let color_list: ColorList = ColorList::new();
80        let mut cute_text: CuteText = CuteText::new();
81
82        let text_for_mock_line: String = String::from("Initial Text");
83        let mock_line: String =
84            color_list.red_fg.to_string() + &text_for_mock_line + color_list.reset;
85
86        let text_for_add: &str = "text added";
87        let added_text_expected: String =
88            color_list.green_fg.to_owned() + text_for_add + color_list.reset;
89        let expected_text: String = mock_line.clone() + &added_text_expected;
90
91        cute_text.text = mock_line;
92        cute_text.add_text(text_for_add);
93        assert_eq!(expected_text, cute_text.green().text);
94    }
95
96    #[test]
97    fn add_text_at_the_beginning() {
98        let color_list: ColorList = ColorList::new();
99        let mut cute_text: CuteText = CuteText::new();
100
101        let text_for_mock_line: String = String::from("Initial Text");
102        let mock_line: String =
103            color_list.red_fg.to_string() + &text_for_mock_line + color_list.reset;
104
105        let text_at_the_beginning: &str = "1. ";
106        let expected_text: String = color_list.red_fg.to_owned()
107            + text_at_the_beginning
108            + &text_for_mock_line
109            + color_list.reset;
110
111        cute_text.text = mock_line;
112        cute_text.color_before_text_length = color_list.red_fg.len();
113        cute_text.add_text_at_the_beginning(text_at_the_beginning);
114        assert_eq!(expected_text, cute_text.text);
115    }
116}