cute_print/cute/test/
cute_text_test.rs1#[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}