[erlang-questions] how to run PropEr tests from Eunit?
Bob Ippolito
bob@REDACTED
Fri Jun 24 19:05:37 CEST 2011
This is what I've been using:
proper_test_() ->
[{atom_to_list(F),
fun () -> ?assert(proper:quickcheck(?MODULE:F(), [long_result])) end}
|| {F, 0} <- ?MODULE:module_info(exports), F > 'prop_', F < 'prop`'].
2011/6/23 Frédéric Trottier-Hébert <fred.hebert@REDACTED>:
> The simplest way I know to do them individually is with separate tests:
> proper_test_() ->
> [?_assert(proper:quickcheck(prop_some_property())),
> ?_assert(proper:quickcheck(prop_some_property())),
> ...].
> You can then create macros to do it for you of the form
> -define(PROPTEST(A), ?_assert(proper:quickcheck(A()))).
> and then call
> proper_test_() ->
> [?PROPTEST(prop_something), ?PROPTEST(prop_something_else),
> ?PROPTEST(prop_other), ?PROPTEST(prop_last)].
> or whatever you feel like.
> If you want to run them all, make sure your module's properties all start
> with the prefix 'prop_'. Then you can do something like
> proper_test() ->
> [] = proper:module(?MODULE).
> which will find all the properties of the current module and run them for
> you. Also, don't forget to always include the proper include file first,
> because both PropEr and EUnit define a LET macro, but the PropEr one is the
> only one I've seen actively used.
>
> --
> Fred Hébert
> http://www.erlang-solutions.com
>
>
> On 2011-06-23, at 18:12 PM, Roman Shestakov wrote:
>
> hello,
>
> I am trying to run PropEr tests from Eunit and I must admit, I can't figure
> out how to run them
>
>
> lets say I want to test the following three functions
>
> %%--------------------------------------------------------------------
> %% @doc
> %% convert Date to atom
> %% @end
> %%--------------------------------------------------------------------
> -spec date_to_atom(date()) -> atom().
> date_to_atom({Year, Month, Day}) ->
> list_to_atom(date_to_string({Year, Month, Day})).
>
> %%--------------------------------------------------------------------
> %% @doc
> %% Convert Date to string
> %% @end
> %%--------------------------------------------------------------------
> -spec date_to_string(date()) -> string().
> date_to_string({Year, Month, Day}) ->
> lists:flatten(io_lib:format("~4.10.0B~2.10.0B~2.10.0B", [Year, Month,
> Day])).
>
>
> %%--------------------------------------------------------------------
> %% @doc
> %% convert Date represented as atom into Erlang date format
> %% @end
> %%--------------------------------------------------------------------
> -spec atom_to_date(atom()) -> date().
> atom_to_date(Date) ->
> Year = list_to_integer(lists:sublist(atom_to_list(Date),1,4)),
> Month = list_to_integer(lists:sublist(atom_to_list(Date),5,2)),
> Day = list_to_integer(lists:sublist(atom_to_list(Date),7,2)),
> {Year, Month, Day}.
>
>
>
> with the following property:
>
> proper_time_to_atom() ->
> ?FORALL(Date, date(),
> begin
> EncDate = ec_time_fns:atom_to_date(ec_time_fns:date_to_atom(Date)),
> EncDate =:= Date
> end).
>
> running the following from erl works fine
> proper:quickcheck(ec_time_fns_tests:proper_time_to_atom()).
>
>
> but how do I make eunit to run these test?
>
>
> tried this , but it doesn't seem to work
>
> time_to_atom_test_() ->
> ?_test(proper:quickcheck(proper_time_to_atom())).
>
>
> any ideas?
>
> Regards, Roman
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
>
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
>
>
More information about the erlang-questions
mailing list