[erlang-questions] proper char() type

Pierre Fenoll pierrefenoll@REDACTED
Thu May 17 14:04:32 CEST 2018


You should also take a look at
proper_gen:sample and sampleshrink ;)

Also Fred Herbet’s propertesting.com!

On Thu 17 May 2018 at 12:36, Ryan Maclear <ryanm@REDACTED> wrote:

> Ah ok, that makes perfect sense. So manually calling the pick/1 function
> with just the type will always start with the Size parameter set to 10, but
> over time the internals would increase this for repeated calls, and thus
> stretching the sample space to the max range.
>
> Thanks for clearing that up.
>
> Kind Regards,
> Ryan Maclear
>
>
> On 17 May 2018 at 12:02, Jesper Louis Andersen <
> jesper.louis.andersen@REDACTED> wrote:
>
>> 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
>>>
>>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
>
-- 

Cheers,
-- 
Pierre Fenoll
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20180517/3e0ef8c9/attachment.htm>


More information about the erlang-questions mailing list