3 test_description
='Testing the various Bloom filter computations in bloom.c'
5 TEST_PASSES_SANITIZE_LEAK
=true
8 test_expect_success
'compute unseeded murmur3 hash for empty string' '
10 Murmur3 Hash with seed=0:0x00000000
12 test-tool bloom get_murmur3 "" >actual &&
13 test_cmp expect actual
16 test_expect_success
'compute unseeded murmur3 hash for test string 1' '
17 cat >expect <<-\EOF &&
18 Murmur3 Hash with seed=0:0x627b0c2c
20 test-tool bloom get_murmur3 "Hello world!" >actual &&
21 test_cmp expect actual
24 test_expect_success
'compute unseeded murmur3 hash for test string 2' '
25 cat >expect <<-\EOF &&
26 Murmur3 Hash with seed=0:0x2e4ff723
28 test-tool bloom get_murmur3 "The quick brown fox jumps over the lazy dog" >actual &&
29 test_cmp expect actual
32 test_expect_success
'compute unseeded murmur3 hash for test string 3' '
33 cat >expect <<-\EOF &&
34 Murmur3 Hash with seed=0:0xa183ccfd
36 test-tool bloom get_murmur3_seven_highbit >actual &&
37 test_cmp expect actual
40 test_expect_success
'compute bloom key for empty string' '
41 cat >expect <<-\EOF &&
42 Hashes:0x5615800c|0x5b966560|0x61174ab4|0x66983008|0x6c19155c|0x7199fab0|0x771ae004|
46 test-tool bloom generate_filter "" >actual &&
47 test_cmp expect actual
50 test_expect_success
'compute bloom key for whitespace' '
51 cat >expect <<-\EOF &&
52 Hashes:0xf178874c|0x5f3d6eb6|0xcd025620|0x3ac73d8a|0xa88c24f4|0x16510c5e|0x8415f3c8|
56 test-tool bloom generate_filter " " >actual &&
57 test_cmp expect actual
60 test_expect_success
'compute bloom key for test string 1' '
61 cat >expect <<-\EOF &&
62 Hashes:0xb270de9b|0x1bb6f26e|0x84fd0641|0xee431a14|0x57892de7|0xc0cf41ba|0x2a15558d|
66 test-tool bloom generate_filter "Hello world!" >actual &&
67 test_cmp expect actual
70 test_expect_success
'compute bloom key for test string 2' '
71 cat >expect <<-\EOF &&
72 Hashes:0x20ab385b|0xf5237fe2|0xc99bc769|0x9e140ef0|0x728c5677|0x47049dfe|0x1b7ce585|
76 test-tool bloom generate_filter "file.txt" >actual &&
77 test_cmp expect actual
80 test_expect_success
!SANITIZE_LEAK
'get bloom filters for commit with no changes' '
82 git commit --allow-empty -m "c0" &&
83 cat >expect <<-\EOF &&
87 test-tool bloom get_filter_for_commit "$(git rev-parse HEAD)" >actual &&
88 test_cmp expect actual
91 test_expect_success
'get bloom filter for commit with 10 changes' '
95 for i in $(test_seq 0 9)
97 echo $i >smallDir/$i || return 1
100 git commit -m "commit with 10 changes" &&
101 cat >expect <<-\EOF &&
103 Filter_Data:02|b3|c4|a0|34|e7|fe|eb|cb|47|fe|a0|e8|72|
105 test-tool bloom get_filter_for_commit "$(git rev-parse HEAD)" >actual &&
106 test_cmp expect actual
109 test_expect_success EXPENSIVE
'get bloom filter for commit with 513 changes' '
113 for i in $(test_seq 0 511)
115 echo $i >bigDir/$i || return 1
118 git commit -m "commit with 513 changes" &&
119 cat >expect <<-\EOF &&
123 test-tool bloom get_filter_for_commit "$(git rev-parse HEAD)" >actual &&
124 test_cmp expect actual