summaryrefslogtreecommitdiff
path: root/t/t0064-oid-array.sh
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2020-12-17 15:06:40 -0800
committerLibravatar Junio C Hamano <gitster@pobox.com>2020-12-17 15:06:40 -0800
commite5ace7167a7d84cc906fd01768c470d75763a22d (patch)
treee7a203a787d80f3f107f93783de0342829e7ff2a /t/t0064-oid-array.sh
parentMerge branch 'tb/partial-clone-filters-fix' (diff)
parentcommit-graph: use size_t for array allocation and indexing (diff)
downloadtgif-e5ace7167a7d84cc906fd01768c470d75763a22d.tar.xz
Merge branch 'jk/oid-array-cleanup'
Code clean-up. * jk/oid-array-cleanup: commit-graph: use size_t for array allocation and indexing commit-graph: replace packed_oid_list with oid_array commit-graph: drop count_distinct_commits() function oid-array: provide a for-loop iterator oid-array: make sort function public cache.h: move hash/oid functions to hash.h t0064: make duplicate tests more robust t0064: drop sha1 mention from filename oid-array.h: drop sha1 mention from header guard
Diffstat (limited to 't/t0064-oid-array.sh')
-rwxr-xr-xt/t0064-oid-array.sh102
1 files changed, 102 insertions, 0 deletions
diff --git a/t/t0064-oid-array.sh b/t/t0064-oid-array.sh
new file mode 100755
index 0000000000..2e5438ccda
--- /dev/null
+++ b/t/t0064-oid-array.sh
@@ -0,0 +1,102 @@
+#!/bin/sh
+
+test_description='basic tests for the oid array implementation'
+. ./test-lib.sh
+
+echoid () {
+ prefix="${1:+$1 }"
+ shift
+ while test $# -gt 0
+ do
+ echo "$prefix$ZERO_OID" | sed -e "s/00/$1/g"
+ shift
+ done
+}
+
+test_expect_success 'ordered enumeration' '
+ echoid "" 44 55 88 aa >expect &&
+ {
+ echoid append 88 44 aa 55 &&
+ echo for_each_unique
+ } | test-tool oid-array >actual &&
+ test_cmp expect actual
+'
+
+test_expect_success 'ordered enumeration with duplicate suppression' '
+ echoid "" 44 55 88 aa >expect &&
+ {
+ echoid append 88 44 aa 55 &&
+ echoid append 88 44 aa 55 &&
+ echoid append 88 44 aa 55 &&
+ echo for_each_unique
+ } | test-tool oid-array >actual &&
+ test_cmp expect actual
+'
+
+test_expect_success 'lookup' '
+ {
+ echoid append 88 44 aa 55 &&
+ echoid lookup 55
+ } | test-tool oid-array >actual &&
+ n=$(cat actual) &&
+ test "$n" -eq 1
+'
+
+test_expect_success 'lookup non-existing entry' '
+ {
+ echoid append 88 44 aa 55 &&
+ echoid lookup 33
+ } | test-tool oid-array >actual &&
+ n=$(cat actual) &&
+ test "$n" -lt 0
+'
+
+test_expect_success 'lookup with duplicates' '
+ {
+ echoid append 88 44 aa 55 &&
+ echoid append 88 44 aa 55 &&
+ echoid append 88 44 aa 55 &&
+ echoid lookup 55
+ } | test-tool oid-array >actual &&
+ n=$(cat actual) &&
+ test "$n" -ge 3 &&
+ test "$n" -le 5
+'
+
+test_expect_success 'lookup non-existing entry with duplicates' '
+ {
+ echoid append 88 44 aa 55 &&
+ echoid append 88 44 aa 55 &&
+ echoid append 88 44 aa 55 &&
+ echoid lookup 66
+ } | test-tool oid-array >actual &&
+ n=$(cat actual) &&
+ test "$n" -lt 0
+'
+
+test_expect_success 'lookup with almost duplicate values' '
+ # n-1 5s
+ root=$(echoid "" 55) &&
+ root=${root%5} &&
+ {
+ id1="${root}5" &&
+ id2="${root}f" &&
+ echo "append $id1" &&
+ echo "append $id2" &&
+ echoid lookup 55
+ } | test-tool oid-array >actual &&
+ n=$(cat actual) &&
+ test "$n" -eq 0
+'
+
+test_expect_success 'lookup with single duplicate value' '
+ {
+ echoid append 55 55 &&
+ echoid lookup 55
+ } | test-tool oid-array >actual &&
+ n=$(cat actual) &&
+ test "$n" -ge 0 &&
+ test "$n" -le 1
+'
+
+test_done