package mock
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Source file mock.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51type 'a configured_side_effect = | Return of 'a | Raise of exn type 'a side_effect = 'a configured_side_effect option let return x = Some (Return x) let raise e = Some (Raise e) let not_configured = None let eval_side_effect = function | Return x -> x | Raise e -> Stdlib.raise e type ('args, 'ret) t = { name: string ; params: 'args list ref ; side_effect: 'ret side_effect ref } let make ~name = { name ; params = ref [] ; side_effect = ref not_configured } let name mock = mock.name let configure t side_effect = t.side_effect := side_effect; t.params := [] exception Mock_not_configured of string let call mock args = match !(mock.side_effect) with | None -> Stdlib.raise (Mock_not_configured mock.name) | Some effect -> begin mock.params := args :: !(mock.params); eval_side_effect effect end let recorded_calls mock = List.rev !(mock.params)