[erlang-questions] how to run PropEr tests from Eunit?

Roman Shestakov <>
Fri Jun 24 20:13:34 CEST 2011


thanks a lot Bob, this is very helpful
Regards, Roman




________________________________
From: Bob Ippolito <>
To: Frédéric Trottier-Hébert <>
Cc: Roman Shestakov <>; 
Sent: Fri, 24 June, 2011 18:05:37
Subject: Re: [erlang-questions] how to run PropEr tests from Eunit?

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 <>:
> 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
> 
> http://erlang.org/mailman/listinfo/erlang-questions
>
>
> _______________________________________________
> erlang-questions mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-questions
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20110624/97a0f578/attachment.html>


More information about the erlang-questions mailing list