Merge pull request #70 from tuncer/contributing-index-links
pages: link to index from contributing
diff --git a/src/triq_dom.erl b/src/triq_dom.erl
index 6eecd47..fb853c3 100644
--- a/src/triq_dom.erl
+++ b/src/triq_dom.erl
@@ -653,21 +653,18 @@
largeint() ->
#?DOM{
kind=largeint,
- shrink=fun(Dom,Val) when Val>1 -> {Dom,Val / 10};
- (Dom,Val) when Val<1 -> {Dom,Val / 10};
- (Dom,_) -> {Dom,0}
+ shrink=fun(Dom,0) -> {Dom,0};
+ (Dom,Val) -> {Dom,Val div 10}
end,
pick=fun(Dom,SampleSize) ->
- {Dom,
- ?BIGNUM
- * SampleSize * triq_rnd:uniform()
- * case triq_rnd:uniform(2) of
- 2 ->
- -1;
- 1 ->
- 1
- end
- }
+ Val = trunc(?BIGNUM * SampleSize * triq_rnd:uniform()),
+ Sign = case triq_rnd:uniform(2) of
+ 2 ->
+ -1;
+ 1 ->
+ 1
+ end,
+ {Dom, Sign * Val}
end
}.
diff --git a/test/triq_tests.erl b/test/triq_tests.erl
index 18fbdf9..3dc077a 100644
--- a/test/triq_tests.erl
+++ b/test/triq_tests.erl
@@ -55,6 +55,9 @@
prop_non_neg_integer() ->
?FORALL(NonNegInt, non_neg_integer(), NonNegInt >= 0).
+prop_large_integer() ->
+ ?FORALL(LargeInt, largeint(), erlang:is_integer(LargeInt)).
+
prop_append() ->
?FORALL({Xs,Ys},{list(int()),list(int())},
?TRAPEXIT(lists:reverse(Xs++Ys)
@@ -201,6 +204,12 @@
3 = X.
%%
+%% Test that largeint() shrinks to 0
+%%
+largeint_shrink_test() ->
+ ?assertEqual([0], triq:counterexample(?FORALL(_, largeint(), false))).
+
+%%
%% Test that vector doesn't shrink the length
%%
vector_test() ->