Oregami
Repositories/oxedyne/fe2o3

oxedyne/fe2o3/fe2o3_file/tests/tree.rs

3.7 KiB, 13 runs

created by r1870400018:319, which is this file's identity for as long as the history lasts, whatever it is later renamed to

download · who wrote it · its history

1use oxedyne_fe2o3_file::{
2 tree::{
3 FileTree,
4 },
5};
6
7use oxedyne_fe2o3_core::{
8 prelude::*,
9 test::test_it,
10};
11
12
13pub fn test_tree(filter: &'static str) -> Outcome<()> {
14
15 res!(test_it(filter, &["Display simple expanded directory test tree 000", "all", "tree", "display"], || {
16 let mut tree = res!(FileTree::new("./test_tree"));
17 //for line in Stringer::new(fmt!("{:?}", tree)).to_lines(" ") {
18 // debug!("{}", line);
19 //}
20 tree.for_all(|entry| {
21 entry.set_expanded(true);
22 });
23
24 let expected = vec![
25 "├── >>> A",
26 "│ ├── B.txt",
27 "│ ├── C.txt",
28 "│ └── D.txt",
29 "├── E",
30 "│ ├── F.txt",
31 "│ └── G",
32 "│ ├── H",
33 "│ │ ├── I.txt",
34 "│ │ ├── J.txt",
35 "│ │ └── K.txt",
36 "│ └── L.txt",
37 "├── M",
38 "│ ├── N.txt",
39 "│ └── P.txt",
40 "└── Q.txt",
41 ];
42
43 let output = res!(tree.display(true));
44 req!(output.len(), expected.len(), "L: output, R: expected");
45 let mut i = 0;
46 for line in res!(tree.display(true)) {
47 test!("{}", line);
48 req!(output[i], expected[i], "L: output, R: expected");
49 i += 1;
50 }
51
52 Ok(())
53 }));
54
55 res!(test_it(filter, &["Increment, decrement focus over entire test tree 000", "all", "tree", "focus"], || {
56 let mut tree = res!(FileTree::new("./test_tree"));
57 //for line in Stringer::new(fmt!("{:?}", tree)).to_lines(" ") {
58 // debug!("{}", line);
59 //}
60 tree.for_all(|entry| {
61 entry.set_expanded(true);
62 });
63
64 let expected = vec![
65 "A",
66 "B.txt",
67 "C.txt",
68 "D.txt",
69 "E",
70 "F.txt",
71 "G",
72 "H",
73 "I.txt",
74 "J.txt",
75 "K.txt",
76 "L.txt",
77 "M",
78 "N.txt",
79 "P.txt",
80 "Q.txt",
81 "Q.txt",
82 "Q.txt",
83 ];
84
85 for i in 0..expected.len() {
86 test!(">>>>>>>>>>>>>>>>>>>");
87 for line in res!(tree.display(true)) {
88 test!("{}", line);
89 }
90 if let Some(focal_node) = tree.get_focal_node() {
91 req!(focal_node.name().as_str(), expected[i], "L: result, R: expected");
92 } else {
93 return Err(err!(
94 "Could not obtain focal node.";
95 Test, Data, Missing));
96 }
97 res!(tree.inc_focus());
98 }
99
100 let expected = vec![
101 "A",
102 "A",
103 "A",
104 "B.txt",
105 "C.txt",
106 "D.txt",
107 "E",
108 "F.txt",
109 "G",
110 "H",
111 "I.txt",
112 "J.txt",
113 "K.txt",
114 "L.txt",
115 "M",
116 "N.txt",
117 "P.txt",
118 "Q.txt",
119 ];
120
121 for i in (0..expected.len()).rev() {
122 test!("<<<<<<<<<<<<<<<<<<<");
123 for line in res!(tree.display(true)) {
124 test!("{}", line);
125 }
126 if let Some(focal_node) = tree.get_focal_node() {
127 req!(focal_node.name().as_str(), expected[i], "L: result, R: expected");
128 } else {
129 return Err(err!(
130 "Could not obtain focal node.";
131 Test, Data, Missing));
132 }
133 res!(tree.dec_focus());
134 }
135
136 Ok(())
137 }));
138
139 Ok(())
140}