mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-06 03:05:28 -05:00
50 lines
1.2 KiB
OCaml
50 lines
1.2 KiB
OCaml
|
|
(** Tests on graphs *)
|
|
|
|
open OUnit
|
|
open Helpers
|
|
|
|
(* build a graph from a list of pairs of ints *)
|
|
let mk_graph l =
|
|
let g = Graph.empty 5 in
|
|
Graph.add_seq g
|
|
(Sequence.map (fun (x,y) -> x,1,y)
|
|
(Sequence.of_list l));
|
|
g
|
|
|
|
let test_copy () =
|
|
let g = mk_graph [0,1; 1,2; 2,3; 3,0] in
|
|
let g' = Graph.copy g in
|
|
Graph.add g 1 1 3;
|
|
Graph.add g 1 2 3;
|
|
OUnit.assert_equal ~printer:print_int_list
|
|
[1;2] (List.sort compare (Sequence.to_list (Graph.between g 1 3)));
|
|
OUnit.assert_bool "copy" (Sequence.is_empty (Graph.between g' 1 3));
|
|
()
|
|
|
|
let test_roots () =
|
|
let g = mk_graph [0,1; 1,2; 2,3; 4,1; 5,1; 6,5; 3,5] in
|
|
let roots = Sequence.to_list (Graph.roots g) in
|
|
OUnit.assert_equal (List.sort compare roots) [0;4;6]
|
|
|
|
let test_leaves () =
|
|
let g = mk_graph [0,1; 1,2; 2,3; 4,1; 6,5; 3,5; 3,7] in
|
|
let leaves = Sequence.to_list (Graph.leaves g) in
|
|
OUnit.assert_equal (List.sort compare leaves) [5;7]
|
|
|
|
let test_dfs () =
|
|
let g = mk_graph [0,1; 1,2; 2,3; 3,0] in
|
|
|
|
()
|
|
|
|
let test_dijkstra () =
|
|
()
|
|
|
|
let suite =
|
|
"test_graph" >:::
|
|
[ "test_copy" >:: test_copy;
|
|
"test_leaves" >:: test_leaves;
|
|
"test_roots" >:: test_roots;
|
|
"test_dfs" >:: test_dfs;
|
|
"test_dijkstra" >:: test_dijkstra;
|
|
]
|