Skip to content

Commit 676f869

Browse files
committed
Add proptest for gb_sets:from_ordset with invalid input
1 parent 264def5 commit 676f869

2 files changed

Lines changed: 22 additions & 1 deletion

File tree

lib/stdlib/test/gb_sets_property_test_SUITE.erl

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ all() -> [
3131
balance_case,
3232
delete_case, delete_any_case,
3333
difference_case,
34-
from_ordset_case,
34+
from_ordset_case, from_ordset_invalid_case,
3535
insert_case,
3636
is_member_case,
3737
iterator_case, iterator_from_case,
@@ -68,6 +68,9 @@ difference_case(Config) ->
6868
from_ordset_case(Config) ->
6969
do_proptest(prop_from_ordset, Config).
7070

71+
from_ordset_invalid_case(Config) ->
72+
do_proptest(prop_from_ordset_invalid, Config).
73+
7174
insert_case(Config) ->
7275
do_proptest(prop_insert, Config).
7376

lib/stdlib/test/property_test/gb_sets_prop.erl

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,24 @@ prop_from_ordset() ->
180180
gb_sets:from_ordset(ordsets:from_list(L)))
181181
).
182182

183+
prop_from_ordset_invalid() ->
184+
?FORALL(
185+
L,
186+
?CT_SAFE_LIST(),
187+
try
188+
gb_sets:from_ordset(L)
189+
of
190+
_ -> is_usorted(L)
191+
catch
192+
error:{badarg, not_ordset} -> not is_usorted(L)
193+
end
194+
).
195+
196+
is_usorted([E1 | [E2 | _] = More]) ->
197+
E1 < E2 andalso is_usorted(More);
198+
is_usorted([_]) -> true;
199+
is_usorted([]) -> true.
200+
183201
%% --- insert/2 -------------------------------------------------------
184202
prop_insert() ->
185203
?FORALL(

0 commit comments

Comments
 (0)