Extend QuickCheck model to use the make_BLA functions to create the fate data
This commit is contained in:
parent
afcc6fd31a
commit
04d64dfe9b
@ -13,17 +13,16 @@
|
|||||||
-compile([export_all, nowarn_export_all]).
|
-compile([export_all, nowarn_export_all]).
|
||||||
|
|
||||||
prop_roundtrip() ->
|
prop_roundtrip() ->
|
||||||
?FORALL(FateData, fate_type(),
|
?FORALL(FateData, fate_data(),
|
||||||
measure(bytes, size(term_to_binary(FateData)),
|
measure(bytes, size(term_to_binary(FateData)),
|
||||||
begin
|
begin
|
||||||
Serialized = aeb_fate_encoding:serialize(FateData),
|
Serialized = aeb_fate_encoding:serialize(FateData),
|
||||||
?WHENFAIL(eqc:format("Serialized ~p to ~p~n", [FateData, Serialized]),
|
?WHENFAIL(eqc:format("Serialized ~p to ~p~n", [FateData, Serialized]),
|
||||||
equals(aeb_fate_encoding:deserialize(Serialized), FateData))
|
equals(aeb_fate_encoding:deserialize(Serialized), FateData))
|
||||||
end
|
end)).
|
||||||
)).
|
|
||||||
|
|
||||||
prop_format() ->
|
prop_format() ->
|
||||||
?FORALL(FateData, fate_type(),
|
?FORALL(FateData, fate_data(),
|
||||||
?WHENFAIL(eqc:format("Trying to format ~p failed~n",[FateData]),
|
?WHENFAIL(eqc:format("Trying to format ~p failed~n",[FateData]),
|
||||||
begin
|
begin
|
||||||
String = aeb_fate_data:format(FateData),
|
String = aeb_fate_data:format(FateData),
|
||||||
@ -31,16 +30,16 @@ prop_format() ->
|
|||||||
end)).
|
end)).
|
||||||
|
|
||||||
prop_format_scan() ->
|
prop_format_scan() ->
|
||||||
?FORALL(FateData, fate_type(),
|
?FORALL(FateData, fate_data(),
|
||||||
?WHENFAIL(eqc:format("Trying to format ~p failed~n~p~n", [FateData, catch unicode:characters_to_list(aeb_fate_data:format(FateData), utf8) ]),
|
?WHENFAIL(eqc:format("Trying to format ~p failed~n", [FateData]),
|
||||||
begin
|
begin
|
||||||
String = aeb_fate_data:format(FateData),
|
String = aeb_fate_data:format(FateData),
|
||||||
{ok, _Scanned, _} = aeb_fate_asm_scan:scan(unicode:characters_to_list(String)),
|
{ok, _Scanned, _} = aeb_fate_asm_scan:scan(unicode:characters_to_list(String)),
|
||||||
true
|
true
|
||||||
end)).
|
end)).
|
||||||
|
|
||||||
fate_type() ->
|
fate_data() ->
|
||||||
?SIZED(Size, fate_type(Size, [map])).
|
?SIZED(Size, ?LET(Data, fate_type(Size, [map]), eqc_symbolic:eval(Data))).
|
||||||
|
|
||||||
fate_type(0, _Options) ->
|
fate_type(0, _Options) ->
|
||||||
?LAZY(
|
?LAZY(
|
||||||
@ -70,33 +69,33 @@ fate_type(Size, Options) ->
|
|||||||
])).
|
])).
|
||||||
|
|
||||||
|
|
||||||
fate_integer() -> oneof([int(), largeint()]).
|
fate_integer() -> {call, aeb_fate_data, make_integer, [oneof([int(), largeint()])]}.
|
||||||
fate_bits() -> {bits, oneof([int(), largeint()])}.
|
fate_bits() -> {call, aeb_fate_data, make_bits, [oneof([int(), largeint()])]}.
|
||||||
fate_boolean() -> elements([true, false]).
|
fate_boolean() -> {call, aeb_fate_data, make_boolean, [elements([true, false])]}.
|
||||||
fate_nil() -> [].
|
fate_nil() -> {call, aeb_fate_data, make_list, [[]]}.
|
||||||
fate_unit() -> {tuple, {}}.
|
fate_unit() -> {call, aeb_fate_data, make_unit, []}.
|
||||||
fate_string() -> ?SUCHTHAT(S, utf8(), string:find(S, "\"") == nomatch).
|
fate_string() -> {call, aeb_fate_data, make_string, [?SUCHTHAT(S, utf8(), [ quote || <<34>> <= S ] == [])]}.
|
||||||
fate_address() -> {address, non_zero_binary(256 div 8)}.
|
fate_address() -> {call, aeb_fate_data, make_address, [non_zero_binary(256 div 8)]}.
|
||||||
fate_hash() -> {hash, non_zero_binary(32)}.
|
fate_hash() -> {call, aeb_fate_data, make_hash, [non_zero_binary(32)]}.
|
||||||
fate_signature() -> {signature, non_zero_binary(64)}.
|
fate_signature() -> {call, aeb_fate_data, make_signature, [non_zero_binary(64)]}.
|
||||||
fate_contract() -> {contract, non_zero_binary(256 div 8)}.
|
fate_contract() -> {call, aeb_fate_data, make_contract, [non_zero_binary(256 div 8)]}.
|
||||||
fate_oracle() -> {oracle, non_zero_binary(256 div 8)}.
|
fate_oracle() -> {call, aeb_fate_data, make_oracle, [non_zero_binary(256 div 8)]}.
|
||||||
fate_name() -> {name, non_zero_binary(256 div 8)}.
|
fate_name() -> {call, aeb_fate_data, make_name, [non_zero_binary(256 div 8)]}.
|
||||||
fate_channel() -> {channel, non_zero_binary(256 div 8)}.
|
fate_channel() -> {call, aeb_fate_data, make_channel, [non_zero_binary(256 div 8)]}.
|
||||||
|
|
||||||
%% May shrink to fate_unit
|
%% May shrink to fate_unit
|
||||||
fate_tuple(ListGen) ->
|
fate_tuple(ListGen) ->
|
||||||
{tuple, ?LET(Elements, ListGen, list_to_tuple(Elements))}.
|
{call, aeb_fate_data, make_tuple, [?LET(Elements, ListGen, list_to_tuple(Elements))]}.
|
||||||
|
|
||||||
fate_variant(TupleGen) ->
|
fate_variant(TupleGen) ->
|
||||||
?LET({L1, L2, Tuple}, {list(choose(0, 255)), list(choose(0,255)), TupleGen},
|
?LET({L1, L2, Tuple}, {list(choose(0, 255)), list(choose(0,255)), TupleGen},
|
||||||
{variant, L1 ++ [size(Tuple)] ++ L2, length(L1), Tuple}).
|
{call, aeb_fate_data, make_variant, [L1 ++ [size(Tuple)] ++ L2, length(L1), Tuple]}).
|
||||||
|
|
||||||
fate_list(Gen) ->
|
fate_list(Gen) ->
|
||||||
oneof([fate_nil(), ?SHRINK(list(Gen), [fate_nil()])]).
|
{call, aeb_fate_data, make_list, [oneof([fate_nil(), ?SHRINK(list(Gen), [fate_nil()])])]}.
|
||||||
|
|
||||||
fate_map(KeyGen, ValGen) ->
|
fate_map(KeyGen, ValGen) ->
|
||||||
map(KeyGen, ValGen).
|
{call, aeb_fate_data, make_map, [map(KeyGen, ValGen)]}.
|
||||||
|
|
||||||
|
|
||||||
non_zero_binary(N) ->
|
non_zero_binary(N) ->
|
||||||
|
Loading…
x
Reference in New Issue
Block a user