Stream Data Min String Length Filter

property-testing
troubleshooting
streamdata
Tags: #<Tag:0x00007f8e9f94c098> #<Tag:0x00007f8e9f94bee0> #<Tag:0x00007f8e9f94bda0>

#1

I am trying to generate strings which pass a rule, e.g.

1 < length(string) < 10

So I am using,

StreamData.string( … ) |> StreamData.filter(..)

but, for some reason, I see the data sent thru the filter is always a single character.

The filter filters out everything…

Of course, without the filter, I rarely see single character outputs.

Obviously I am missing something.

The filter in this case is for individual generated characters, instead of complete strings(?)


#2

Can you please provide a full example of the “generator” you use and its output?


#3

I am just realising, that StreamData.string/2s documentation tells you that it shares options with StreamData.list_of/2. There we have :min_length and :max_length options. So StreamData.string(:ascii, min_length: 2, max_length: 9) should be totally fine.


#4

Sweet, just the answer I needed : )


#5

Moreover, having just started parameter testing and gotten this to work, I just found a bug in a regex - this is great! : )