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
| 1 | use oxedyne_fe2o3_file::{ |
| 2 | tree::{ |
| 3 | FileTree, |
| 4 | }, |
| 5 | }; |
| 6 | |
| 7 | use oxedyne_fe2o3_core::{ |
| 8 | prelude::*, |
| 9 | test::test_it, |
| 10 | }; |
| 11 | |
| 12 | |
| 13 | pub 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 | } |