74 lines
2.4 KiB
Rust
74 lines
2.4 KiB
Rust
|
// ----------------------------------------------------------------
|
||
|
// IMPORTS
|
||
|
// ----------------------------------------------------------------
|
||
|
|
||
|
use rstest::fixture;
|
||
|
use rstest::rstest;
|
||
|
|
||
|
use ads2::core::utils;
|
||
|
use ads2::graphs::graph;
|
||
|
|
||
|
// ----------------------------------------------------------------
|
||
|
// Fixtures
|
||
|
// ----------------------------------------------------------------
|
||
|
|
||
|
#[fixture]
|
||
|
fn fixture_graph() -> graph::Graph<i32> {
|
||
|
return graph::Graph::new(
|
||
|
vec![1,2,3,4,5,6,7,8],
|
||
|
vec![(1,2), (1, 3), (2,3), (3,4), (4, 5), (5, 6), (6, 2), (6, 7), (6, 8)]
|
||
|
);
|
||
|
}
|
||
|
|
||
|
// ----------------------------------------------------------------
|
||
|
// Test Graph
|
||
|
// ----------------------------------------------------------------
|
||
|
|
||
|
#[test]
|
||
|
fn test_graph_create_noerror() {
|
||
|
let result = std::panic::catch_unwind(|| {
|
||
|
let gph = graph::Graph::new(
|
||
|
vec![5, 7, 8],
|
||
|
vec![(5,7), (7, 8)]
|
||
|
);
|
||
|
assert_eq!(gph.len(), 3);
|
||
|
});
|
||
|
assert!(result.is_ok());
|
||
|
let result = std::panic::catch_unwind(|| {
|
||
|
let gph = graph::Graph::new(
|
||
|
vec!["5", "7", "8", "10"],
|
||
|
vec![("5", "7"), ("7", "8")]
|
||
|
);
|
||
|
assert_eq!(gph.len(), 4);
|
||
|
});
|
||
|
assert!(result.is_ok());
|
||
|
let result = std::panic::catch_unwind(|| {
|
||
|
let gph = graph::Graph::<f64>::new(Vec::new(), Vec::new());
|
||
|
assert_eq!(gph.len(), 0);
|
||
|
});
|
||
|
assert!(result.is_ok());
|
||
|
}
|
||
|
|
||
|
#[rstest]
|
||
|
fn test_graph_subgraph(fixture_graph: graph::Graph<i32>) {
|
||
|
let sub_gph = fixture_graph.subgraph(vec![2,4,5,6,8]);
|
||
|
assert_eq!(utils::vec_to_set(&sub_gph.edges), utils::vec_to_set(&vec![(6,2), (4,5), (5,6), (6,8)]));
|
||
|
}
|
||
|
|
||
|
#[rstest]
|
||
|
fn test_graph_successors_and_predecessors(fixture_graph: graph::Graph<i32>) {
|
||
|
let u = 1;
|
||
|
assert_eq!(utils::vec_to_set(&fixture_graph.successors(&u)), utils::vec_to_set(&vec![2, 3]));
|
||
|
let u = 8;
|
||
|
assert_eq!(utils::vec_to_set(&fixture_graph.successors(&u)).len(), 0);
|
||
|
let u = 6;
|
||
|
assert_eq!(utils::vec_to_set(&fixture_graph.successors(&u)), utils::vec_to_set(&vec![2, 7, 8]));
|
||
|
|
||
|
let u = 1;
|
||
|
assert_eq!(utils::vec_to_set(&fixture_graph.predecessors(&u)).len(), 0);
|
||
|
let u = 8;
|
||
|
assert_eq!(utils::vec_to_set(&fixture_graph.predecessors(&u)), utils::vec_to_set(&vec![6]));
|
||
|
let u = 6;
|
||
|
assert_eq!(utils::vec_to_set(&fixture_graph.predecessors(&u)), utils::vec_to_set(&vec![5]));
|
||
|
}
|