# Module OUnitDiff

    module OUnitDiff: sig .. end

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)

Author(s): Sylvain Le Gall
Since 1.1.0

## Signatures

    module type DIFF_ELEMENT = sig .. end

Definition of an element

    module type S = sig .. end

Definition of standard operations

## Implementations

    module SetMake: functor (D : DIFF_ELEMENT) -> S
      with type e = D.t

Collection of elements based on a Set, elements order doesn't matter

    module ListSimpleMake: functor (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.

    val pp_comma_separator : Format.formatter -> unit -> unit