t / t0064-sha1-array.shon commit Merge branch 'master' of https://github.com/vnwildman/git (26a567e)
   1#!/bin/sh
   2
   3test_description='basic tests for the SHA1 array implementation'
   4. ./test-lib.sh
   5
   6echoid () {
   7        prefix="${1:+$1 }"
   8        shift
   9        while test $# -gt 0
  10        do
  11                echo "$prefix$ZERO_OID" | sed -e "s/00/$1/g"
  12                shift
  13        done
  14}
  15
  16test_expect_success 'ordered enumeration' '
  17        echoid "" 44 55 88 aa >expect &&
  18        {
  19                echoid append 88 44 aa 55 &&
  20                echo for_each_unique
  21        } | test-tool sha1-array >actual &&
  22        test_cmp expect actual
  23'
  24
  25test_expect_success 'ordered enumeration with duplicate suppression' '
  26        echoid "" 44 55 88 aa >expect &&
  27        {
  28                echoid append 88 44 aa 55 &&
  29                echoid append 88 44 aa 55 &&
  30                echo for_each_unique
  31        } | test-tool sha1-array >actual &&
  32        test_cmp expect actual
  33'
  34
  35test_expect_success 'lookup' '
  36        {
  37                echoid append 88 44 aa 55 &&
  38                echoid lookup 55
  39        } | test-tool sha1-array >actual &&
  40        n=$(cat actual) &&
  41        test "$n" -eq 1
  42'
  43
  44test_expect_success 'lookup non-existing entry' '
  45        {
  46                echoid append 88 44 aa 55 &&
  47                echoid lookup 33
  48        } | test-tool sha1-array >actual &&
  49        n=$(cat actual) &&
  50        test "$n" -lt 0
  51'
  52
  53test_expect_success 'lookup with duplicates' '
  54        {
  55                echoid append 88 44 aa 55 &&
  56                echoid append 88 44 aa 55 &&
  57                echoid lookup 55
  58        } | test-tool sha1-array >actual &&
  59        n=$(cat actual) &&
  60        test "$n" -ge 2 &&
  61        test "$n" -le 3
  62'
  63
  64test_expect_success 'lookup non-existing entry with duplicates' '
  65        {
  66                echoid append 88 44 aa 55 &&
  67                echoid append 88 44 aa 55 &&
  68                echoid lookup 66
  69        } | test-tool sha1-array >actual &&
  70        n=$(cat actual) &&
  71        test "$n" -lt 0
  72'
  73
  74test_expect_success 'lookup with almost duplicate values' '
  75        # n-1 5s
  76        root=$(echoid "" 55) &&
  77        root=${root%5} &&
  78        {
  79                id1="${root}5" &&
  80                id2="${root}f" &&
  81                echo "append $id1" &&
  82                echo "append $id2" &&
  83                echoid lookup 55
  84        } | test-tool sha1-array >actual &&
  85        n=$(cat actual) &&
  86        test "$n" -eq 0
  87'
  88
  89test_expect_success 'lookup with single duplicate value' '
  90        {
  91                echoid append 55 55 &&
  92                echoid lookup 55
  93        } | test-tool sha1-array >actual &&
  94        n=$(cat actual) &&
  95        test "$n" -ge 0 &&
  96        test "$n" -le 1
  97'
  98
  99test_done