1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.collections4.bloomfilter;
18
19 import static org.junit.jupiter.api.Assertions.assertEquals;
20 import static org.junit.jupiter.api.Assertions.assertThrows;
21
22 import org.junit.jupiter.api.Test;
23
24
25
26
27 public class EnhancedDoubleHasherTest extends AbstractHasherTest {
28 int[] expected = {1, 0, 71, 71, 1, 6, 15, 29, 49, 4, 39, 11, 65, 58, 63, 9, 41};
29
30 @Override
31 protected Hasher createEmptyHasher() {
32 return NullHasher.INSTANCE;
33 }
34
35 @Override
36 protected Hasher createHasher() {
37 return new EnhancedDoubleHasher(1, 1);
38 }
39
40 @Override
41 protected int getAsIndexArrayBehaviour() {
42
43 return 0;
44 }
45
46 @Override
47 protected int[] getExpectedIndices() {
48 return expected;
49 }
50
51 @Override
52 protected int getHasherSize(final Hasher hasher) {
53 return 1;
54 }
55
56 @Test
57 public void testByteConstructor() {
58
59 EnhancedDoubleHasher hasher = new EnhancedDoubleHasher(new byte[] {1});
60 assertEquals(0, hasher.getInitial());
61 assertEquals(0x01_00_00_00_00_00_00_00L, hasher.getIncrement());
62
63
64 hasher = new EnhancedDoubleHasher(new byte[] {1, 2});
65 assertEquals(0x01_00_00_00_00_00_00_00L, hasher.getInitial());
66 assertEquals(0x02_00_00_00_00_00_00_00L, hasher.getIncrement());
67
68
69 hasher = new EnhancedDoubleHasher(new byte[] {1, 2, 3});
70 assertEquals(0x01_00_00_00_00_00_00_00L, hasher.getInitial());
71 assertEquals(0x02_03_00_00_00_00_00_00L, hasher.getIncrement());
72
73
74 hasher = new EnhancedDoubleHasher(new byte[] {0, 1, 0, 2});
75 assertEquals(0x01_00_00_00_00_00_00L, hasher.getInitial());
76 assertEquals(0x02_00_00_00_00_00_00L, hasher.getIncrement());
77
78
79 hasher = new EnhancedDoubleHasher(new byte[] {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2});
80 assertEquals(1, hasher.getInitial());
81 assertEquals(2, hasher.getIncrement());
82
83
84 hasher = new EnhancedDoubleHasher(new byte[] {0, 0, 0, 0, 0, 0, 0, 1, 5, 5, 0, 0, 0, 0, 0, 0, 0, 2, 5, 5});
85 assertEquals(1, hasher.getInitial());
86 assertEquals(2, hasher.getIncrement());
87
88
89 hasher = new EnhancedDoubleHasher(new byte[] {0, 0, 0, 0, 0, 0, 0, 1, 5, 1, 0, 0, 0, 0, 0, 0, 2, 5, 5});
90 assertEquals(1, hasher.getInitial());
91 assertEquals(0x01_00_00_00_00_00_00_02L, hasher.getIncrement());
92
93
94 assertThrows(IllegalArgumentException.class, () -> new EnhancedDoubleHasher(new byte[0]));
95 }
96 }