3ea922fc8b
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 <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
103 lines
2.0 KiB
Bash
Executable File
103 lines
2.0 KiB
Bash
Executable File
#!/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
|