OUnitDiff
Unit tests for collection of elements
This module allows to define a more precise way to display differences between collection of elements. When collection differ, the tester is interested by what are the missing/extra elements. This module provides a diff
operation to spot the difference quickly between two sets of elements.
Example:
open OUnit;;
module EInt =
struct
type t = int
let compare = ( - )
let pp_printer = Format.pp_print_int
let pp_print_sep = OUnitDiff.pp_comma_separator
end
module ListInt = OUnitDiff.ListSimpleMake(EInt);;
let test_diff () =
ListInt.assert_equal
[1; 2; 3; 4; 5]
[1; 2; 5; 4]
;;
let _ =
run_test_tt_main ("test_diff" >:: test_diff)
;;
when run this test outputs:
OUnit: expected: 1, 2, 3, 4, 5 but got: 1, 2, 5, 4
differences: element number 2 differ (3 <> 5)
module type DIFF_ELEMENT = sig ... end
Definition of an element
module type S = sig ... end
Definition of standard operations
Collection of elements based on a Set, elements order doesn't matter
module ListSimpleMake
(D : DIFF_ELEMENT) :
S with type e = D.t and type t = D.t list
Collection of elements based on a List, order matters but difference display is very simple. It stops at the first element which differs.
module EString : DIFF_ELEMENT with type t = string
module EInt : DIFF_ELEMENT with type t = int