about summary refs log tree commit diff
path: root/t/t0064-sha1-array.sh
diff options
context:
space:
mode:
Diffstat (limited to 't/t0064-sha1-array.sh')
-rwxr-xr-xt/t0064-sha1-array.sh99
1 files changed, 99 insertions, 0 deletions
diff --git a/t/t0064-sha1-array.sh b/t/t0064-sha1-array.sh
new file mode 100755
index 000000000000..5dda570b9a1e
--- /dev/null
+++ b/t/t0064-sha1-array.sh
@@ -0,0 +1,99 @@
+#!/bin/sh
+
+test_description='basic tests for the SHA1 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 sha1-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 sha1-array >actual &&
+	test_cmp expect actual
+'
+
+test_expect_success 'lookup' '
+	{
+		echoid append 88 44 aa 55 &&
+		echoid lookup 55
+	} | test-tool sha1-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 sha1-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 sha1-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 sha1-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 sha1-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 sha1-array >actual &&
+	n=$(cat actual) &&
+	test "$n" -ge 0 &&
+	test "$n" -le 1
+'
+
+test_done