summaryrefslogtreecommitdiff
path: root/t/t0064-oid-array.sh
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2020-12-04 18:49:24 (GMT)
committerJunio C Hamano <gitster@pobox.com>2020-12-04 21:55:14 (GMT)
commitd9ca6f8d9054e3441c0f291916cbedd2d0cad15f (patch)
treec44fe31515ee34c67d390b5d4e2511b4cc236f56 /t/t0064-oid-array.sh
parentfb3920fd003e14283fb480b1eb4e8495b95034c9 (diff)
downloadgit-d9ca6f8d9054e3441c0f291916cbedd2d0cad15f.zip
git-d9ca6f8d9054e3441c0f291916cbedd2d0cad15f.tar.gz
git-d9ca6f8d9054e3441c0f291916cbedd2d0cad15f.tar.bz2
t0064: drop sha1 mention from filename
The data type is an oid_array these days, and we are using "test-tool oid-array", so let's name the test script appropriately. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t0064-oid-array.sh')
-rwxr-xr-xt/t0064-oid-array.sh99
1 files changed, 99 insertions, 0 deletions
diff --git a/t/t0064-oid-array.sh b/t/t0064-oid-array.sh
new file mode 100755
index 0000000..71034a8
--- /dev/null
+++ b/t/t0064-oid-array.sh
@@ -0,0 +1,99 @@
+#!/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 &&
+ 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 lookup 55
+ } | test-tool oid-array >actual &&
+ n=$(cat actual) &&
+ test "$n" -ge 2 &&
+ test "$n" -le 3
+'
+
+test_expect_success 'lookup non-existing entry with duplicates' '
+ {
+ 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