[erlang-questions] proper char() type

Jesper Louis Andersen jesper.louis.andersen@REDACTED
Thu May 17 12:02:08 CEST 2018


Most QuickCheck systems have an internal size parameter which is slowly
increased over the course of testing. If you manually bump it by a lot, you
get a better range:

16> proper_gen:pick(proper_types:resize(8000, proper_types:integer(0,
16#10ffff))).
{ok,5050}

However, I feel most of propers generators are botched and don't really
check what they should. EQC Mini for instance:

5> eqc_gen:sample(eqc_gen:choose(0, 16#10ffff)).
482145
1062500
211296
269049
863625
4346
441921
719972
62442
703915
944194
ok

which is far more the range you would expect. Also note that the pick/1
function is kind of dangerous since it leads people down a path where their
generators have less randomness than they should have. The right solution
often involves ?LET(X, generator(), <[X] E x>) and friends.



On Thu, May 17, 2018 at 11:34 AM Ryan Maclear <ryanm@REDACTED>
wrote:

> Appologies, I hit send before finisinh the email. Here is the complete
> mail:
>
> I'm busy learning to use proper and have the following issue. When calling
> the function
>
> From the API docs, the char() type has a range of 0 to (1114111) 16#10ffff.
>
> When calling the function
>
> proper_gen:pick(proper_types:term()).
>
> manually many times (I've tried in around 3000 times) and on different
> VMs, the function always seems to return only one of the following values:
>
> {ok,0},
> {ok,2},
> {ok,3},
> {ok,6}
> {ok,12} and
> {ok,13}
>
> I see the same behaviour for
>
> proper_gen:pick(proper_types:range(0,16#10ffff)).
>
> which I believe is equivalent.
>
> I have tried on erlang 19.3.6.9, erlang 20.3.6 on a Mac as well as on a
> ubuntu trusty docker image with erlang 19.3.
>
> In all three vms I see the same set of results being returned.
>
> Is there something else I need to do before calling this function?
>
> Thanks,
> Ryan
>
>
> On 17 May 2018 at 11:07, Ryan Maclear <ryanm@REDACTED> wrote:
>
>> Good Day,
>>
>> I'm busy learning to use proper and have the following issue. When
>> calling the function
>>
>> From the API docs, the char() type has a range of 0 to (1114111)
>> 16#10ffff.
>>
>> When calling the function
>>
>> proper_gen:pick(proper_types:term()).
>>
>> manually many times (I've tried in around 3000 times) and on different
>> VMs, the function always seems to return only one of the following values:
>>
>> {ok,0},
>> {ok,2},
>> {ok,3},
>> {ok,6}
>> {ok,12} and
>> {ok,13}
>>
>> I see the same behaviour for
>>
>>
>> I have tried on erlang 19.3.6.9, erlang 20.3.6 on a Mac as well as on a
>> ubuntu trusty docker image with erlang 19.3.
>>
>> In all three vms I see the same set of results being returned.
>>
>> Is there something else I need to do before calling this function?
>>
>> Thanks,
>> Ryan
>>
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20180517/869ab88a/attachment.htm>


More information about the erlang-questions mailing list