From d9ca6f8d9054e3441c0f291916cbedd2d0cad15f Mon Sep 17 00:00:00 2001 From: Jeff King Date: Fri, 4 Dec 2020 13:49:24 -0500 Subject: 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 Signed-off-by: Junio C Hamano --- t/t0064-oid-array.sh | 99 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100755 t/t0064-oid-array.sh (limited to 't/t0064-oid-array.sh') diff --git a/t/t0064-oid-array.sh b/t/t0064-oid-array.sh new file mode 100755 index 0000000000..71034a8007 --- /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 -- cgit v1.2.3 From 3ea922fc8b19d8cdf967ca7b3229856e6326d099 Mon Sep 17 00:00:00 2001 From: Jeff King Date: Fri, 4 Dec 2020 13:50:23 -0500 Subject: t0064: make duplicate tests more robust Our tests for handling duplicates in oid-array provide only a single duplicate for each number, so our sorted array looks like: 44 44 55 55 88 88 aa aa A slightly more interesting test is to have multiple duplicates, which makes sure that we not only skip the duplicate, but keep skipping until we are out of the set of matching duplicates. Unsurprisingly this works just fine, but it's worth beefing up this test since we're about to change the duplicate-detection code. Note that we do need to adjust the results on the lookup test, since it is returning the index of the found item (and now we have more items before our range, and the range itself is slightly larger, since we'll accept a match of any element). Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- t/t0064-oid-array.sh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 't/t0064-oid-array.sh') diff --git a/t/t0064-oid-array.sh b/t/t0064-oid-array.sh index 71034a8007..2e5438ccda 100755 --- a/t/t0064-oid-array.sh +++ b/t/t0064-oid-array.sh @@ -25,6 +25,7 @@ test_expect_success 'ordered enumeration' ' 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 @@ -52,17 +53,19 @@ test_expect_success 'lookup non-existing entry' ' 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 2 && - test "$n" -le 3 + 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 -- cgit v1.2.3