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.Assert.assertEquals;
20
21 import java.util.ArrayList;
22 import java.util.List;
23 import java.util.function.LongPredicate;
24
25 import org.junit.jupiter.api.Test;
26
27 public class IndexProducerFromBitmapProducerTest extends AbstractIndexProducerTest {
28
29 private static final class TestingBitMapProducer implements BitMapProducer {
30 long[] values;
31
32 TestingBitMapProducer(final long[] values) {
33 this.values = values;
34 }
35
36 @Override
37 public boolean forEachBitMap(final LongPredicate consumer) {
38 for (final long l : values) {
39 if (!consumer.test(l)) {
40 return false;
41 }
42 }
43 return true;
44 }
45 }
46
47 @Override
48 protected IndexProducer createEmptyProducer() {
49 final TestingBitMapProducer producer = new TestingBitMapProducer(new long[0]);
50 return IndexProducer.fromBitMapProducer(producer);
51 }
52
53 @Override
54 protected IndexProducer createProducer() {
55
56
57
58
59
60
61
62
63
64
65
66 final TestingBitMapProducer producer = new TestingBitMapProducer(new long[] {1L, 2L, 3L});
67 return IndexProducer.fromBitMapProducer(producer);
68 }
69
70 @Override
71 protected int getAsIndexArrayBehaviour() {
72
73 return DISTINCT | ORDERED;
74 }
75
76 @Override
77 protected int[] getExpectedIndices() {
78 return new int[] {0, 65, 128, 129};
79 }
80
81 @Test
82 public final void testFromBitMapProducerTest() {
83 IndexProducer underTest = createProducer();
84 List<Integer> lst = new ArrayList<>();
85
86 underTest.forEachIndex(lst::add);
87 assertEquals(4, lst.size());
88 assertEquals(Integer.valueOf(0), lst.get(0));
89 assertEquals(Integer.valueOf(1 + 64), lst.get(1));
90 assertEquals(Integer.valueOf(0 + 128), lst.get(2));
91 assertEquals(Integer.valueOf(1 + 128), lst.get(3));
92
93 final BitMapProducer producer = new TestingBitMapProducer(new long[] {0xFFFFFFFFFFFFFFFFL});
94 underTest = IndexProducer.fromBitMapProducer(producer);
95 lst = new ArrayList<>();
96
97 underTest.forEachIndex(lst::add);
98
99 assertEquals(64, lst.size());
100 for (int i = 0; i < 64; i++) {
101 assertEquals(Integer.valueOf(i), lst.get(i));
102 }
103 }
104 }