Skip to content

Commit

Permalink
Add another failing test
Browse files Browse the repository at this point in the history
  • Loading branch information
Sebastian Thiel committed Jun 2, 2019
1 parent 16833be commit 00952c6
Show file tree
Hide file tree
Showing 8 changed files with 86 additions and 32 deletions.
5 changes: 1 addition & 4 deletions src/interactive.rs
Original file line number Diff line number Diff line change
Expand Up @@ -134,10 +134,7 @@ mod app {
.pop()
.expect("sizes per level to be in sync with graph");
parent_node_idx = tree
.neighbors_directed(
parent_node_idx,
Direction::Incoming,
)
.neighbors_directed(parent_node_idx, Direction::Incoming)
.next()
.expect("every node in the iteration has a parent test");
tree.node_weight_mut(parent_node_idx)
Expand Down
1 change: 1 addition & 0 deletions tests/fixtures/sample-02/a
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1 change: 1 addition & 0 deletions tests/fixtures/sample-02/b
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
a
1 change: 1 addition & 0 deletions tests/fixtures/sample-02/dir/c
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1 change: 1 addition & 0 deletions tests/fixtures/sample-02/dir/d
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
aa
Empty file.
1 change: 1 addition & 0 deletions tests/fixtures/sample-02/dir/sub/e
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
108 changes: 80 additions & 28 deletions tests/interactive.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ mod app {
}

#[test]
fn journey_with_single_path() -> Result<(), Error> {
fn it_can_handle_ending_traversal_reaching_top_but_skipping_levels() -> Result<(), Error> {
let (_, app) = initialized_app_and_terminal("sample-01")?;
let expected_tree = sample_01_tree();

Expand All @@ -25,6 +25,19 @@ mod app {
Ok(())
}

#[test]
fn it_can_handle_ending_traversal_without_reaching_the_top() -> Result<(), Error> {
let (_, app) = initialized_app_and_terminal("sample-02")?;
let expected_tree = sample_02_tree();

assert_eq!(
debug(app.tree),
debug(expected_tree),
"filesystem graph is stable and matches the directory structure"
);
Ok(())
}

fn initialized_app_and_terminal(
fixture_path: &str,
) -> Result<(Terminal<TestBackend>, TerminalApp), Error> {
Expand All @@ -47,43 +60,82 @@ mod app {

fn sample_01_tree() -> Tree {
let mut t = Tree::new();
let mut add_node = |name, size, maybe_from_idx: Option<NodeIndex<GraphIndexType>>| {
let n = t.add_node(EntryData {
name: OsString::from(name),
size,
metadata_io_error: false,
});
if let Some(from) = maybe_from_idx {
t.add_edge(from, n, ());
}
n
};
let root_size = 1259070;
let r = add_node("", root_size, None);
{
let s = add_node("sample-01", root_size, Some(r));
let mut add_node = make_add_node(&mut t);
let root_size = 1259070;
let r = add_node("", root_size, None);
{
add_node(".hidden.666", 666, Some(s));
add_node("a", 256, Some(s));
add_node("b.empty", 0, Some(s));
add_node("c.lnk", 1, Some(s));
let d = add_node("dir", 1258024, Some(s));
let s = add_node("sample-01", root_size, Some(r));
{
add_node("1000bytes", 1000, Some(d));
add_node("dir-a.1mb", 1_000_000, Some(d));
add_node("dir-a.kb", 1024, Some(d));
let e = add_node("empty-dir", 0, Some(d));
add_node(".hidden.666", 666, Some(s));
add_node("a", 256, Some(s));
add_node("b.empty", 0, Some(s));
add_node("c.lnk", 1, Some(s));
let d = add_node("dir", 1258024, Some(s));
{
add_node(".gitkeep", 0, Some(e));
add_node("1000bytes", 1000, Some(d));
add_node("dir-a.1mb", 1_000_000, Some(d));
add_node("dir-a.kb", 1024, Some(d));
let e = add_node("empty-dir", 0, Some(d));
{
add_node(".gitkeep", 0, Some(e));
}
let sub = add_node("sub", 256_000, Some(d));
{
add_node("dir-sub-a.256kb", 256_000, Some(sub));
}
}
let sub = add_node("sub", 256_000, Some(d));
add_node("z123.b", 123, Some(s));
}
}
}
t
}
fn sample_02_tree() -> Tree {
let mut t = Tree::new();
{
let mut add_node = make_add_node(&mut t);
let root_size = 1540;
let r = add_node("", root_size, None);
{
let s = add_node("sample-02", root_size, Some(r));
{
add_node("a", 256, Some(s));
add_node("b", 1, Some(s));
let d = add_node("dir", 1283, Some(s));
{
add_node("dir-sub-a.256kb", 256_000, Some(sub));
add_node("c", 257, Some(d));
add_node("d", 2, Some(d));
let e = add_node("empty-dir", 0, Some(d));
{
add_node(".gitkeep", 0, Some(e));
}
let sub = add_node("sub", 1024, Some(d));
{
add_node("e", 1024, Some(sub));
}
}
}
add_node("z123.b", 123, Some(s));
}
}
t
}

fn make_add_node<'a>(
t: &'a mut Tree,
) -> impl FnMut(&str, u64, Option<NodeIndex<GraphIndexType>>) -> NodeIndex<GraphIndexType> + 'a
{
move |name, size, maybe_from_idx| {
let n = t.add_node(EntryData {
name: OsString::from(name),
size,
metadata_io_error: false,
});
if let Some(from) = maybe_from_idx {
t.add_edge(from, n, ());
}
n
}
}

}

0 comments on commit 00952c6

Please sign in to comment.