René Scharfe | 38d905b | 2014-10-01 17:00:33 +0200 | [diff] [blame] | 1 | #!/bin/sh |
| 2 | |
Jeff King | d9ca6f8 | 2020-12-04 13:49:24 -0500 | [diff] [blame] | 3 | test_description='basic tests for the oid array implementation' |
René Scharfe | 38d905b | 2014-10-01 17:00:33 +0200 | [diff] [blame] | 4 | . ./test-lib.sh |
| 5 | |
brian m. carlson | 1374003 | 2018-09-13 05:17:36 +0000 | [diff] [blame] | 6 | echoid () { |
René Scharfe | 38d905b | 2014-10-01 17:00:33 +0200 | [diff] [blame] | 7 | prefix="${1:+$1 }" |
| 8 | shift |
| 9 | while test $# -gt 0 |
| 10 | do |
brian m. carlson | 1374003 | 2018-09-13 05:17:36 +0000 | [diff] [blame] | 11 | echo "$prefix$ZERO_OID" | sed -e "s/00/$1/g" |
René Scharfe | 38d905b | 2014-10-01 17:00:33 +0200 | [diff] [blame] | 12 | shift |
| 13 | done |
| 14 | } |
| 15 | |
| 16 | test_expect_success 'ordered enumeration' ' |
brian m. carlson | 1374003 | 2018-09-13 05:17:36 +0000 | [diff] [blame] | 17 | echoid "" 44 55 88 aa >expect && |
René Scharfe | 38d905b | 2014-10-01 17:00:33 +0200 | [diff] [blame] | 18 | { |
brian m. carlson | 1374003 | 2018-09-13 05:17:36 +0000 | [diff] [blame] | 19 | echoid append 88 44 aa 55 && |
René Scharfe | 38d905b | 2014-10-01 17:00:33 +0200 | [diff] [blame] | 20 | echo for_each_unique |
Jeff King | ed4b804 | 2020-03-30 10:04:03 -0400 | [diff] [blame] | 21 | } | test-tool oid-array >actual && |
René Scharfe | 38d905b | 2014-10-01 17:00:33 +0200 | [diff] [blame] | 22 | test_cmp expect actual |
| 23 | ' |
| 24 | |
| 25 | test_expect_success 'ordered enumeration with duplicate suppression' ' |
brian m. carlson | 1374003 | 2018-09-13 05:17:36 +0000 | [diff] [blame] | 26 | echoid "" 44 55 88 aa >expect && |
René Scharfe | 38d905b | 2014-10-01 17:00:33 +0200 | [diff] [blame] | 27 | { |
brian m. carlson | 1374003 | 2018-09-13 05:17:36 +0000 | [diff] [blame] | 28 | echoid append 88 44 aa 55 && |
| 29 | echoid append 88 44 aa 55 && |
Jeff King | 3ea922f | 2020-12-04 13:50:23 -0500 | [diff] [blame] | 30 | echoid append 88 44 aa 55 && |
René Scharfe | 38d905b | 2014-10-01 17:00:33 +0200 | [diff] [blame] | 31 | echo for_each_unique |
Jeff King | ed4b804 | 2020-03-30 10:04:03 -0400 | [diff] [blame] | 32 | } | test-tool oid-array >actual && |
René Scharfe | 38d905b | 2014-10-01 17:00:33 +0200 | [diff] [blame] | 33 | test_cmp expect actual |
| 34 | ' |
| 35 | |
| 36 | test_expect_success 'lookup' ' |
| 37 | { |
brian m. carlson | 1374003 | 2018-09-13 05:17:36 +0000 | [diff] [blame] | 38 | echoid append 88 44 aa 55 && |
| 39 | echoid lookup 55 |
Jeff King | ed4b804 | 2020-03-30 10:04:03 -0400 | [diff] [blame] | 40 | } | test-tool oid-array >actual && |
René Scharfe | 38d905b | 2014-10-01 17:00:33 +0200 | [diff] [blame] | 41 | n=$(cat actual) && |
| 42 | test "$n" -eq 1 |
| 43 | ' |
| 44 | |
| 45 | test_expect_success 'lookup non-existing entry' ' |
| 46 | { |
brian m. carlson | 1374003 | 2018-09-13 05:17:36 +0000 | [diff] [blame] | 47 | echoid append 88 44 aa 55 && |
| 48 | echoid lookup 33 |
Jeff King | ed4b804 | 2020-03-30 10:04:03 -0400 | [diff] [blame] | 49 | } | test-tool oid-array >actual && |
René Scharfe | 38d905b | 2014-10-01 17:00:33 +0200 | [diff] [blame] | 50 | n=$(cat actual) && |
| 51 | test "$n" -lt 0 |
| 52 | ' |
| 53 | |
| 54 | test_expect_success 'lookup with duplicates' ' |
| 55 | { |
brian m. carlson | 1374003 | 2018-09-13 05:17:36 +0000 | [diff] [blame] | 56 | echoid append 88 44 aa 55 && |
| 57 | echoid append 88 44 aa 55 && |
Jeff King | 3ea922f | 2020-12-04 13:50:23 -0500 | [diff] [blame] | 58 | echoid append 88 44 aa 55 && |
brian m. carlson | 1374003 | 2018-09-13 05:17:36 +0000 | [diff] [blame] | 59 | echoid lookup 55 |
Jeff King | ed4b804 | 2020-03-30 10:04:03 -0400 | [diff] [blame] | 60 | } | test-tool oid-array >actual && |
René Scharfe | 38d905b | 2014-10-01 17:00:33 +0200 | [diff] [blame] | 61 | n=$(cat actual) && |
Jeff King | 3ea922f | 2020-12-04 13:50:23 -0500 | [diff] [blame] | 62 | test "$n" -ge 3 && |
| 63 | test "$n" -le 5 |
René Scharfe | 38d905b | 2014-10-01 17:00:33 +0200 | [diff] [blame] | 64 | ' |
| 65 | |
| 66 | test_expect_success 'lookup non-existing entry with duplicates' ' |
| 67 | { |
brian m. carlson | 1374003 | 2018-09-13 05:17:36 +0000 | [diff] [blame] | 68 | echoid append 88 44 aa 55 && |
| 69 | echoid append 88 44 aa 55 && |
Jeff King | 3ea922f | 2020-12-04 13:50:23 -0500 | [diff] [blame] | 70 | echoid append 88 44 aa 55 && |
brian m. carlson | 1374003 | 2018-09-13 05:17:36 +0000 | [diff] [blame] | 71 | echoid lookup 66 |
Jeff King | ed4b804 | 2020-03-30 10:04:03 -0400 | [diff] [blame] | 72 | } | test-tool oid-array >actual && |
René Scharfe | 38d905b | 2014-10-01 17:00:33 +0200 | [diff] [blame] | 73 | n=$(cat actual) && |
| 74 | test "$n" -lt 0 |
| 75 | ' |
| 76 | |
René Scharfe | 0eb0fb8 | 2014-10-01 17:02:37 +0200 | [diff] [blame] | 77 | test_expect_success 'lookup with almost duplicate values' ' |
brian m. carlson | 1374003 | 2018-09-13 05:17:36 +0000 | [diff] [blame] | 78 | # n-1 5s |
| 79 | root=$(echoid "" 55) && |
| 80 | root=${root%5} && |
René Scharfe | 0eb0fb8 | 2014-10-01 17:02:37 +0200 | [diff] [blame] | 81 | { |
brian m. carlson | 1374003 | 2018-09-13 05:17:36 +0000 | [diff] [blame] | 82 | id1="${root}5" && |
| 83 | id2="${root}f" && |
| 84 | echo "append $id1" && |
| 85 | echo "append $id2" && |
| 86 | echoid lookup 55 |
Jeff King | ed4b804 | 2020-03-30 10:04:03 -0400 | [diff] [blame] | 87 | } | test-tool oid-array >actual && |
René Scharfe | 0eb0fb8 | 2014-10-01 17:02:37 +0200 | [diff] [blame] | 88 | n=$(cat actual) && |
| 89 | test "$n" -eq 0 |
| 90 | ' |
| 91 | |
| 92 | test_expect_success 'lookup with single duplicate value' ' |
| 93 | { |
brian m. carlson | 1374003 | 2018-09-13 05:17:36 +0000 | [diff] [blame] | 94 | echoid append 55 55 && |
| 95 | echoid lookup 55 |
Jeff King | ed4b804 | 2020-03-30 10:04:03 -0400 | [diff] [blame] | 96 | } | test-tool oid-array >actual && |
René Scharfe | 0eb0fb8 | 2014-10-01 17:02:37 +0200 | [diff] [blame] | 97 | n=$(cat actual) && |
| 98 | test "$n" -ge 0 && |
| 99 | test "$n" -le 1 |
| 100 | ' |
| 101 | |
René Scharfe | 38d905b | 2014-10-01 17:00:33 +0200 | [diff] [blame] | 102 | test_done |