[erlang-questions] PropEr after test clean up

Robert Raschke <>
Mon May 25 23:27:50 CEST 2015


Hello Hynek,

since you are testing something that has state, I think you probably need
to look into the state based testing approach that is possible with PropEr.
It's been a while since I looked into that, so I don't have a handy link at
hand, sorry :-(

Hope this helps a bit,
Robby
On May 25, 2015 4:11 PM, "Hynek Vychodil" <> wrote:

> Hi,
>
> I bumped in the problem how clean up after property in PropEr. Let's have
> simple property where I make ets table:
>
> prop_ets() ->
>     ?FORALL(V, integer(),
>         begin
>             E = ets:new(),
>             true = ets:insert(T, {V, ok}),
>             equals([{V, ok}], ets:lookup(T, V))
>         end
>     ).
>
> How am I supposed to delete ets table? It is trickier than looks like. The
> problem is when I want use another ?FORALL inside my property. The
> conjunction/1 is the same problem. You can`t write
>
> prop_ets() ->
>     ?FORALL(V, integer(),
>         begin
>             E = ets:new(),
>             true = ets:insert(T, {V, ok}),
>             Res = conjunction([{lookup, equals([{V, ok}], ets:lookup(T,
> V))},
>                               {lookup_element,
> equals(ok, ets:lookup_element(T, V, 2))}]),
>             ets:delete(T),
>             Res
>         end
>     ).
>
> Because Res is test(). In this case, you can make calls to
> the ets:lookup/2 and the ets:lookup_element/3 before conjunction/1 but it
> doesn't solve properties like
>
> ?FORALL(L, list(...),
>     begin
>         T = ets:new(),
>         ...
>         ?FORALL(V, oneof(L),
>               ...
>         )
>      end
> )
>
> The solution would be simple is every test case would be run in a separate
> process, but it is not! It is very unusual in Erlang word to make such
> thing. Processes are cheap and I can they are in a defined state each run
> for free. Why is it all running in the same process?
>
> Has anybody solved this problem somehouw?
>
> Hynek Vychodil
>
> _______________________________________________
> 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/20150525/22ed4855/attachment.html>


More information about the erlang-questions mailing list