From 8bf19dc06076c69b291fa9cc3844d8bfbb9acdd6 Mon Sep 17 00:00:00 2001 From: Thomas Arts Date: Wed, 29 May 2019 16:10:49 +0200 Subject: [PATCH] Do not generate maps and variants as keys in fate maps --- quickcheck/aefate_code_eqc.erl | 7 +++++-- quickcheck/aefate_eqc.erl | 10 ++++++---- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/quickcheck/aefate_code_eqc.erl b/quickcheck/aefate_code_eqc.erl index e230b3d..c9b03a7 100644 --- a/quickcheck/aefate_code_eqc.erl +++ b/quickcheck/aefate_code_eqc.erl @@ -80,8 +80,8 @@ fate_code(Failure) -> {non_empty(map(if Failure == 1 -> binary(1); true -> binary(4) end, {{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(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)), + map(small_fate_data_key(5), small_fate_data(4))}, aeb_fate_code:update_annotations( aeb_fate_code:update_symbols( aeb_fate_code:update_functions( @@ -128,3 +128,6 @@ injection(Binary) -> small_fate_data(N) -> ?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))). diff --git a/quickcheck/aefate_eqc.erl b/quickcheck/aefate_eqc.erl index 97d2846..230a17b 100644 --- a/quickcheck/aefate_eqc.erl +++ b/quickcheck/aefate_eqc.erl @@ -64,7 +64,7 @@ prop_fuzz() -> end))). 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) -> ?LAZY( @@ -84,10 +84,12 @@ fate_data(0, _Options) -> fate_data(Size, Options) -> oneof([?LAZY(fate_data(Size - 1, Options)), ?LAZY(fate_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_tuple( 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))) || lists:member(map, Options) ]).