forked from nbowe/erlang_decorators
/
decorator_test.erl
43 lines (31 loc) · 1.27 KB
/
decorator_test.erl
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
-module(decorator_test).
-include_lib("eunit/include/eunit.hrl").
-export([replace_return_value_decorator/3, options_decorator/3]).
-compile([{parse_transform, decorators}]).
% example decorator that replaces the return value with the atom 'replaced'
% note that we always pass the arguments as a single list to the next fun
replace_return_value_decorator(F, Args, [])->
_R = apply(F, Args),
replaced.
-decorate({?MODULE, replace_return_value_decorator}).
replace_ret_val_decorated() -> ok.
replace_args_decorator(F, _Args, [])->
apply(F, [replaced1, replaced2]).
-decorate(replace_args_decorator).
replace_args_decorated(replaced1, replaced2) -> ok.
-decorate(replace_return_value_decorator).
-decorate(replace_args_decorator).
multiple_decorators(replaced1, replaced2) ->
ok.
options_decorator(Fun, Args, Options) ->
?assertEqual([{option, value}], Options),
apply(Fun, Args).
-decorate({options_decorator, [{option, value}]}).
-decorate({?MODULE, options_decorator, [{option, value}]}).
options_decorated() ->
ok.
replace_ret_value_test()->
?assertEqual(replaced, replace_ret_val_decorated()),
?assertEqual(ok, replace_args_decorated(arg1, arg2)),
?assertEqual(replaced, multiple_decorators(arg1, arg2)),
?assertEqual(ok, options_decorated()).