blob: 2e5438ccdacdeb31d60d3ffab22dcbc8151134fd [file] [log] [blame]
René Scharfe38d905b2014-10-01 17:00:33 +02001#!/bin/sh
2
Jeff Kingd9ca6f82020-12-04 13:49:24 -05003test_description='basic tests for the oid array implementation'
René Scharfe38d905b2014-10-01 17:00:33 +02004. ./test-lib.sh
5
brian m. carlson13740032018-09-13 05:17:36 +00006echoid () {
René Scharfe38d905b2014-10-01 17:00:33 +02007 prefix="${1:+$1 }"
8 shift
9 while test $# -gt 0
10 do
brian m. carlson13740032018-09-13 05:17:36 +000011 echo "$prefix$ZERO_OID" | sed -e "s/00/$1/g"
René Scharfe38d905b2014-10-01 17:00:33 +020012 shift
13 done
14}
15
16test_expect_success 'ordered enumeration' '
brian m. carlson13740032018-09-13 05:17:36 +000017 echoid "" 44 55 88 aa >expect &&
René Scharfe38d905b2014-10-01 17:00:33 +020018 {
brian m. carlson13740032018-09-13 05:17:36 +000019 echoid append 88 44 aa 55 &&
René Scharfe38d905b2014-10-01 17:00:33 +020020 echo for_each_unique
Jeff Kinged4b8042020-03-30 10:04:03 -040021 } | test-tool oid-array >actual &&
René Scharfe38d905b2014-10-01 17:00:33 +020022 test_cmp expect actual
23'
24
25test_expect_success 'ordered enumeration with duplicate suppression' '
brian m. carlson13740032018-09-13 05:17:36 +000026 echoid "" 44 55 88 aa >expect &&
René Scharfe38d905b2014-10-01 17:00:33 +020027 {
brian m. carlson13740032018-09-13 05:17:36 +000028 echoid append 88 44 aa 55 &&
29 echoid append 88 44 aa 55 &&
Jeff King3ea922f2020-12-04 13:50:23 -050030 echoid append 88 44 aa 55 &&
René Scharfe38d905b2014-10-01 17:00:33 +020031 echo for_each_unique
Jeff Kinged4b8042020-03-30 10:04:03 -040032 } | test-tool oid-array >actual &&
René Scharfe38d905b2014-10-01 17:00:33 +020033 test_cmp expect actual
34'
35
36test_expect_success 'lookup' '
37 {
brian m. carlson13740032018-09-13 05:17:36 +000038 echoid append 88 44 aa 55 &&
39 echoid lookup 55
Jeff Kinged4b8042020-03-30 10:04:03 -040040 } | test-tool oid-array >actual &&
René Scharfe38d905b2014-10-01 17:00:33 +020041 n=$(cat actual) &&
42 test "$n" -eq 1
43'
44
45test_expect_success 'lookup non-existing entry' '
46 {
brian m. carlson13740032018-09-13 05:17:36 +000047 echoid append 88 44 aa 55 &&
48 echoid lookup 33
Jeff Kinged4b8042020-03-30 10:04:03 -040049 } | test-tool oid-array >actual &&
René Scharfe38d905b2014-10-01 17:00:33 +020050 n=$(cat actual) &&
51 test "$n" -lt 0
52'
53
54test_expect_success 'lookup with duplicates' '
55 {
brian m. carlson13740032018-09-13 05:17:36 +000056 echoid append 88 44 aa 55 &&
57 echoid append 88 44 aa 55 &&
Jeff King3ea922f2020-12-04 13:50:23 -050058 echoid append 88 44 aa 55 &&
brian m. carlson13740032018-09-13 05:17:36 +000059 echoid lookup 55
Jeff Kinged4b8042020-03-30 10:04:03 -040060 } | test-tool oid-array >actual &&
René Scharfe38d905b2014-10-01 17:00:33 +020061 n=$(cat actual) &&
Jeff King3ea922f2020-12-04 13:50:23 -050062 test "$n" -ge 3 &&
63 test "$n" -le 5
René Scharfe38d905b2014-10-01 17:00:33 +020064'
65
66test_expect_success 'lookup non-existing entry with duplicates' '
67 {
brian m. carlson13740032018-09-13 05:17:36 +000068 echoid append 88 44 aa 55 &&
69 echoid append 88 44 aa 55 &&
Jeff King3ea922f2020-12-04 13:50:23 -050070 echoid append 88 44 aa 55 &&
brian m. carlson13740032018-09-13 05:17:36 +000071 echoid lookup 66
Jeff Kinged4b8042020-03-30 10:04:03 -040072 } | test-tool oid-array >actual &&
René Scharfe38d905b2014-10-01 17:00:33 +020073 n=$(cat actual) &&
74 test "$n" -lt 0
75'
76
René Scharfe0eb0fb82014-10-01 17:02:37 +020077test_expect_success 'lookup with almost duplicate values' '
brian m. carlson13740032018-09-13 05:17:36 +000078 # n-1 5s
79 root=$(echoid "" 55) &&
80 root=${root%5} &&
René Scharfe0eb0fb82014-10-01 17:02:37 +020081 {
brian m. carlson13740032018-09-13 05:17:36 +000082 id1="${root}5" &&
83 id2="${root}f" &&
84 echo "append $id1" &&
85 echo "append $id2" &&
86 echoid lookup 55
Jeff Kinged4b8042020-03-30 10:04:03 -040087 } | test-tool oid-array >actual &&
René Scharfe0eb0fb82014-10-01 17:02:37 +020088 n=$(cat actual) &&
89 test "$n" -eq 0
90'
91
92test_expect_success 'lookup with single duplicate value' '
93 {
brian m. carlson13740032018-09-13 05:17:36 +000094 echoid append 55 55 &&
95 echoid lookup 55
Jeff Kinged4b8042020-03-30 10:04:03 -040096 } | test-tool oid-array >actual &&
René Scharfe0eb0fb82014-10-01 17:02:37 +020097 n=$(cat actual) &&
98 test "$n" -ge 0 &&
99 test "$n" -le 1
100'
101
René Scharfe38d905b2014-10-01 17:00:33 +0200102test_done