summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Newson <rnewson@apache.org>2020-07-05 15:52:53 +0100
committerRobert Newson <rnewson@apache.org>2020-07-05 15:55:12 +0100
commitcb20ab4a2d12ef43f9f0b19615047c31625a9b32 (patch)
treec60ccf890b62783d9dd57e6db8907172fa6536f6
parent8cac976de74bbea042b5ed9d76ca7ba30bdd24f8 (diff)
downloadcouchdb-cb20ab4a2d12ef43f9f0b19615047c31625a9b32.tar.gz
more tests
-rw-r--r--src/ebtree.erl36
1 files changed, 35 insertions, 1 deletions
diff --git a/src/ebtree.erl b/src/ebtree.erl
index c4b123e21..16af6ed9f 100644
--- a/src/ebtree.erl
+++ b/src/ebtree.erl
@@ -887,7 +887,24 @@ full_reduce_after_delete_test() ->
?assertEqual(0, full_reduce(Db, Tree)).
-reduce_test_() ->
+count_reduce_test_() ->
+ Db = erlfdb_util:get_test_db([empty]),
+ init(Db, <<1,2,3>>, 4),
+ Tree = open(Db, <<1,2,3>>, [{reduce_fun, fun reduce_count/2}]),
+ Max = 100,
+ Keys = [X || {_, X} <- lists:sort([ {rand:uniform(), N} || N <- lists:seq(1, Max)])],
+ lists:foreach(fun(Key) -> insert(Db, Tree, Key, Key) end, Keys),
+ Expected = fun(S, E) -> E - S + 1 end,
+ [
+ ?_test(?assertEqual(Expected(1, 5), reduce(Db, Tree, 1, 5))),
+ ?_test(?assertEqual(Expected(50, 60), reduce(Db, Tree, 50, 60))),
+ ?_test(?assertEqual(Expected(21, 83), reduce(Db, Tree, 21, 83))),
+ ?_test(?assertEqual(Expected(1, 1), reduce(Db, Tree, 1, 1))),
+ ?_test(?assertEqual(Expected(1, 100), reduce(Db, Tree, 0, 200))),
+ ?_test(?assertEqual(Expected(5, 7), reduce(Db, Tree, 5, 7)))
+ ].
+
+sum_reduce_test_() ->
Db = erlfdb_util:get_test_db([empty]),
init(Db, <<1,2,3>>, 4),
Tree = open(Db, <<1,2,3>>, [{reduce_fun, fun reduce_sum/2}]),
@@ -905,6 +922,23 @@ reduce_test_() ->
].
+stats_reduce_test_() ->
+ Db = erlfdb_util:get_test_db([empty]),
+ init(Db, <<1,2,3>>, 4),
+ Tree = open(Db, <<1,2,3>>, [{reduce_fun, fun reduce_stats/2}]),
+ Max = 100,
+ Keys = [X || {_, X} <- lists:sort([ {rand:uniform(), N} || N <- lists:seq(1, Max)])],
+ lists:foreach(fun(Key) -> insert(Db, Tree, Key, Key) end, Keys),
+ [
+ ?_test(?assertEqual({15,1,5,5,55}, reduce(Db, Tree, 1, 5))),
+ ?_test(?assertEqual({605,50,60,11,33385}, reduce(Db, Tree, 50, 60))),
+ ?_test(?assertEqual({3276,21,83,63,191184}, reduce(Db, Tree, 21, 83))),
+ ?_test(?assertEqual({1,1,1,1,1}, reduce(Db, Tree, 1, 1))),
+ ?_test(?assertEqual({5050,1,100,100,338350}, reduce(Db, Tree, 0, 200))),
+ ?_test(?assertEqual({18,5,7,3,110}, reduce(Db, Tree, 5, 7)))
+ ].
+
+
raw_collation_test() ->
Db = erlfdb_util:get_test_db([empty]),
init(Db, <<1,2,3>>, 4),