#[macro_use]
extern crate fera_graph;
use fera_graph::algs::{Components, Cycles, Trees};
use fera_graph::prelude::*;
struct Case {
g: StaticGraph,
is_connected: bool,
is_acyclic: bool,
is_tree: bool,
}
fn cases() -> Vec<Case> {
vec![
Case {
g: graph!(),
is_connected: true,
is_acyclic: true,
is_tree: true,
},
Case {
g: graph!(1),
is_connected: true,
is_acyclic: true,
is_tree: true,
},
Case {
g: graph!(2),
is_connected: false,
is_acyclic: true,
is_tree: false,
},
Case {
g: graph!(2, (0, 1)),
is_connected: true,
is_acyclic: true,
is_tree: true,
},
Case {
g: graph!(3, (2, 1)),
is_connected: false,
is_acyclic: true,
is_tree: false,
},
Case {
g: graph!(3, (2, 1)),
is_connected: false,
is_acyclic: true,
is_tree: false,
},
Case {
g: graph!(3, (0, 1), (1, 2)),
is_connected: true,
is_acyclic: true,
is_tree: true,
},
Case {
g: graph!(3, (0, 1), (0, 2), (1, 2)),
is_connected: true,
is_acyclic: false,
is_tree: false,
},
Case {
g: graph!(4, (0, 1), (0, 2)),
is_connected: false,
is_acyclic: true,
is_tree: false,
},
Case {
g: graph!(4, (1, 2), (2, 3), (3, 1)),
is_connected: false,
is_acyclic: false,
is_tree: false,
},
]
}
#[test]
fn is_connected() {
for (i, case) in cases().into_iter().enumerate() {
assert_eq!(case.is_connected, case.g.is_connected(), "Case {}", i);
}
}
#[test]
fn is_acyclic() {
for (i, case) in cases().into_iter().enumerate() {
assert_eq!(case.is_acyclic, case.g.is_acyclic(), "Case {}", i);
}
}
#[test]
fn is_tree() {
for (i, case) in cases().into_iter().enumerate() {
assert_eq!(case.is_tree, case.g.is_tree(), "Case {}", i);
}
}