as erlang is functional by default you always get the same result every time you call a pure function.<div><br></div><div>you have to either place in a random ( is random a "pure" thing? ) that randomly selects an output each time, or you need to store the number of calls in an impure way. The options would be to spawn off a process ( eg a genserver ) in the background and have your mock code talk to it, start an ets table, maybe even * write to a file * tho i get that defeats the purpose of what your trying to do, or as a cheep trick use the process dictionary:</div>
<div><br></div><div>first put a starting value in the PD :</div><div>put(number_of_runs,0)</div><div>then in your code you can :</div><div>case Runs = get(number_of_runs) & put(number_of_runs,Runs+1)</div><div>& erase at the end : erase(number_of_runs)</div>
<div><a href="http://www.erlang.org/course/advanced.html#dict">http://www.erlang.org/course/advanced.html#dict</a><br><br></div><div>tho use of the process dictionary makes debugging& understanding the code etc.... very tricky and breaks most of the elegant parts of erlang, so its best used for the kinds of uses you have in mind and less so in your real code :-)</div>
<div><br><div class="gmail_quote">On 21 May 2011 19:55, Edward Wang <span dir="ltr"><<a href="mailto:edward.yujiang.wang@gmail.com">edward.yujiang.wang@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<p>Then you will implement your mock version of io:get_line that way. The mock framework merely dispatches the call. That's all. </p><div><div></div><div class="h5">
<div class="gmail_quote">On May 22, 2011 2:40 AM, "Alyssa Kwan" <<a href="mailto:alyssa.c.kwan@gmail.com" target="_blank">alyssa.c.kwan@gmail.com</a>> wrote:<br type="attribution">> I'm sorry, I wasn't being specific.  Is there any way to mock a sequence of calls to the same function?  Like if I call io:get_line (or a wrapper because it's protected), how do I get it to return a different value for the first call and the second call?<br>

> <br>> Also, will it expect exactly two calls as well?  And does meck record call order for different functions?<br>> <br>> On May 21, 2011, at 1:43 PM, Edward Wang wrote:<br>> <br>>> Try meck <a href="https://github.com/eproxus/meck" target="_blank">https://github.com/eproxus/meck</a><br>

>> <br>>> I used it to mock inet:getifaddrs/0 etc.<br>>> <br>>> On Sun, May 22, 2011 at 1:31 AM, Alyssa Kwan <<a href="mailto:alyssa.c.kwan@gmail.com" target="_blank">alyssa.c.kwan@gmail.com</a>> wrote:<br>
>> Hi everyone!<br>
>> <br>>> Are there any mocking libraries written that allow you to expect a sequence of calls and return a different value for each call?  A mocking library that allows passthrough would be ideal.<br>>> <br>

>> Thanks!<br>>> Alyssa<br>>> _______________________________________________<br>>> erlang-questions mailing list<br>>> <a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>

>> <a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>>> <br>> <br></div>
</div></div><br>_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
<br></blockquote></div><br></div>