Do not generate maps and variants as keys in fate maps

This commit is contained in:
Thomas Arts 2019-05-29 16:10:49 +02:00
parent a5bfdf63d5
commit 8bf19dc060
2 changed files with 11 additions and 6 deletions

View File

@ -80,8 +80,8 @@ fate_code(Failure) ->
{non_empty(map(if Failure == 1 -> binary(1); {non_empty(map(if Failure == 1 -> binary(1);
true -> binary(4) end, true -> binary(4) end,
{{list(aefate_type_eqc:fate_type(Size div 3)), aefate_type_eqc:fate_type(Size div 3)}, bbs_code(Failure)})), {{list(aefate_type_eqc:fate_type(Size div 3)), aefate_type_eqc:fate_type(Size div 3)}, bbs_code(Failure)})),
map(resize(Size div 5, aefate_eqc:fate_data()), resize(Size div 3, aefate_eqc:fate_data())), map(small_fate_data_key(5), small_fate_data(4)),
map(resize(Size div 5, aefate_eqc:fate_data()), resize(Size div 4, aefate_eqc:fate_data()))}, map(small_fate_data_key(5), small_fate_data(4))},
aeb_fate_code:update_annotations( aeb_fate_code:update_annotations(
aeb_fate_code:update_symbols( aeb_fate_code:update_symbols(
aeb_fate_code:update_functions( aeb_fate_code:update_functions(
@ -128,3 +128,6 @@ injection(Binary) ->
small_fate_data(N) -> small_fate_data(N) ->
?SIZED(Size, resize(Size div N, aefate_eqc:fate_data())). ?SIZED(Size, resize(Size div N, aefate_eqc:fate_data())).
small_fate_data_key(N) ->
?SIZED(Size, ?LET(Data, aefate_eqc:fate_data(Size div N, []), eqc_symbolic:eval(Data))).

View File

@ -64,7 +64,7 @@ prop_fuzz() ->
end))). end))).
fate_data() -> fate_data() ->
?SIZED(Size, ?LET(Data, fate_data(Size, [map]), eqc_symbolic:eval(Data))). ?SIZED(Size, ?LET(Data, fate_data(Size, [map, variant]), eqc_symbolic:eval(Data))).
fate_data(0, _Options) -> fate_data(0, _Options) ->
?LAZY( ?LAZY(
@ -84,10 +84,12 @@ fate_data(0, _Options) ->
fate_data(Size, Options) -> fate_data(Size, Options) ->
oneof([?LAZY(fate_data(Size - 1, Options)), oneof([?LAZY(fate_data(Size - 1, Options)),
?LAZY(fate_list( fate_data(Size div 5, Options) )), ?LAZY(fate_list( fate_data(Size div 5, Options) )),
?LAZY(fate_tuple( list(fate_data(Size div 5, Options)) )), ?LAZY(fate_tuple( list(fate_data(Size div 5, Options)) ))] ++
?LAZY(fate_variant( list(fate_data(Size div 5, Options)))) ] ++ [?LAZY(fate_variant( list(fate_data(Size div 5, Options))))
|| lists:member(variant, Options)
] ++
[ [
?LAZY(fate_map( fate_data(Size div 8, Options -- [map]), ?LAZY(fate_map( fate_data(Size div 8, Options -- [map, variant]),
fate_data(Size div 5, Options))) fate_data(Size div 5, Options)))
|| lists:member(map, Options) || lists:member(map, Options)
]). ]).