[erlang-questions] proper char() type

Ryan Maclear ryanm@REDACTED
Thu May 17 14:16:06 CEST 2018


Yip - I'm working through propertesting.com again, but paying more
attention and looking at it a lot closer this time as I have a real need
for doing some stateful property testing.

It really is a great resource.


On 17 May 2018 at 14:04, Pierre Fenoll <pierrefenoll@REDACTED> wrote:

> 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/bf3c88f4/attachment.htm>


More information about the erlang-questions mailing list