mirror of
https://github.com/git/git.git
synced 2024-12-01 22:13:45 +08:00
99094a7ad4
These are tests which are missing a link in their &&-chain, but during a setup phase. We may fail to notice failure in commands that build the test environment, but these are typically not expected to fail at all (but it's still good to double-check that our test environment is what we expect). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
254 lines
3.6 KiB
Bash
Executable File
254 lines
3.6 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='test hashmap and string hash functions'
|
|
. ./test-lib.sh
|
|
|
|
test_hashmap() {
|
|
echo "$1" | test-hashmap $3 > actual &&
|
|
echo "$2" > expect &&
|
|
test_cmp expect actual
|
|
}
|
|
|
|
test_expect_success 'hash functions' '
|
|
|
|
test_hashmap "hash key1" "2215982743 2215982743 116372151 116372151" &&
|
|
test_hashmap "hash key2" "2215982740 2215982740 116372148 116372148" &&
|
|
test_hashmap "hash fooBarFrotz" "1383912807 1383912807 3189766727 3189766727" &&
|
|
test_hashmap "hash foobarfrotz" "2862305959 2862305959 3189766727 3189766727"
|
|
|
|
'
|
|
|
|
test_expect_success 'put' '
|
|
|
|
test_hashmap "put key1 value1
|
|
put key2 value2
|
|
put fooBarFrotz value3
|
|
put foobarfrotz value4
|
|
size" "NULL
|
|
NULL
|
|
NULL
|
|
NULL
|
|
64 4"
|
|
|
|
'
|
|
|
|
test_expect_success 'put (case insensitive)' '
|
|
|
|
test_hashmap "put key1 value1
|
|
put key2 value2
|
|
put fooBarFrotz value3
|
|
size" "NULL
|
|
NULL
|
|
NULL
|
|
64 3" ignorecase
|
|
|
|
'
|
|
|
|
test_expect_success 'replace' '
|
|
|
|
test_hashmap "put key1 value1
|
|
put key1 value2
|
|
put fooBarFrotz value3
|
|
put fooBarFrotz value4
|
|
size" "NULL
|
|
value1
|
|
NULL
|
|
value3
|
|
64 2"
|
|
|
|
'
|
|
|
|
test_expect_success 'replace (case insensitive)' '
|
|
|
|
test_hashmap "put key1 value1
|
|
put Key1 value2
|
|
put fooBarFrotz value3
|
|
put foobarfrotz value4
|
|
size" "NULL
|
|
value1
|
|
NULL
|
|
value3
|
|
64 2" ignorecase
|
|
|
|
'
|
|
|
|
test_expect_success 'get' '
|
|
|
|
test_hashmap "put key1 value1
|
|
put key2 value2
|
|
put fooBarFrotz value3
|
|
put foobarfrotz value4
|
|
get key1
|
|
get key2
|
|
get fooBarFrotz
|
|
get notInMap" "NULL
|
|
NULL
|
|
NULL
|
|
NULL
|
|
value1
|
|
value2
|
|
value3
|
|
NULL"
|
|
|
|
'
|
|
|
|
test_expect_success 'get (case insensitive)' '
|
|
|
|
test_hashmap "put key1 value1
|
|
put key2 value2
|
|
put fooBarFrotz value3
|
|
get Key1
|
|
get keY2
|
|
get foobarfrotz
|
|
get notInMap" "NULL
|
|
NULL
|
|
NULL
|
|
value1
|
|
value2
|
|
value3
|
|
NULL" ignorecase
|
|
|
|
'
|
|
|
|
test_expect_success 'add' '
|
|
|
|
test_hashmap "add key1 value1
|
|
add key1 value2
|
|
add fooBarFrotz value3
|
|
add fooBarFrotz value4
|
|
get key1
|
|
get fooBarFrotz
|
|
get notInMap" "value2
|
|
value1
|
|
value4
|
|
value3
|
|
NULL"
|
|
|
|
'
|
|
|
|
test_expect_success 'add (case insensitive)' '
|
|
|
|
test_hashmap "add key1 value1
|
|
add Key1 value2
|
|
add fooBarFrotz value3
|
|
add foobarfrotz value4
|
|
get key1
|
|
get Foobarfrotz
|
|
get notInMap" "value2
|
|
value1
|
|
value4
|
|
value3
|
|
NULL" ignorecase
|
|
|
|
'
|
|
|
|
test_expect_success 'remove' '
|
|
|
|
test_hashmap "put key1 value1
|
|
put key2 value2
|
|
put fooBarFrotz value3
|
|
remove key1
|
|
remove key2
|
|
remove notInMap
|
|
size" "NULL
|
|
NULL
|
|
NULL
|
|
value1
|
|
value2
|
|
NULL
|
|
64 1"
|
|
|
|
'
|
|
|
|
test_expect_success 'remove (case insensitive)' '
|
|
|
|
test_hashmap "put key1 value1
|
|
put key2 value2
|
|
put fooBarFrotz value3
|
|
remove Key1
|
|
remove keY2
|
|
remove notInMap
|
|
size" "NULL
|
|
NULL
|
|
NULL
|
|
value1
|
|
value2
|
|
NULL
|
|
64 1" ignorecase
|
|
|
|
'
|
|
|
|
test_expect_success 'iterate' '
|
|
|
|
test_hashmap "put key1 value1
|
|
put key2 value2
|
|
put fooBarFrotz value3
|
|
iterate" "NULL
|
|
NULL
|
|
NULL
|
|
key2 value2
|
|
key1 value1
|
|
fooBarFrotz value3"
|
|
|
|
'
|
|
|
|
test_expect_success 'iterate (case insensitive)' '
|
|
|
|
test_hashmap "put key1 value1
|
|
put key2 value2
|
|
put fooBarFrotz value3
|
|
iterate" "NULL
|
|
NULL
|
|
NULL
|
|
fooBarFrotz value3
|
|
key2 value2
|
|
key1 value1" ignorecase
|
|
|
|
'
|
|
|
|
test_expect_success 'grow / shrink' '
|
|
|
|
rm -f in &&
|
|
rm -f expect &&
|
|
for n in $(test_seq 51)
|
|
do
|
|
echo put key$n value$n >> in &&
|
|
echo NULL >> expect
|
|
done &&
|
|
echo size >> in &&
|
|
echo 64 51 >> expect &&
|
|
echo put key52 value52 >> in &&
|
|
echo NULL >> expect &&
|
|
echo size >> in &&
|
|
echo 256 52 >> expect &&
|
|
for n in $(test_seq 12)
|
|
do
|
|
echo remove key$n >> in &&
|
|
echo value$n >> expect
|
|
done &&
|
|
echo size >> in &&
|
|
echo 256 40 >> expect &&
|
|
echo remove key40 >> in &&
|
|
echo value40 >> expect &&
|
|
echo size >> in &&
|
|
echo 64 39 >> expect &&
|
|
cat in | test-hashmap > out &&
|
|
test_cmp expect out
|
|
|
|
'
|
|
|
|
test_expect_success 'string interning' '
|
|
|
|
test_hashmap "intern value1
|
|
intern Value1
|
|
intern value2
|
|
intern value2
|
|
" "value1
|
|
Value1
|
|
value2
|
|
value2"
|
|
|
|
'
|
|
|
|
test_done
|