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 import static org.junit.Assert.assertFalse;
21 import static org.junit.jupiter.api.Assertions.assertTrue;
22
23 import java.util.ArrayList;
24 import java.util.List;
25 import java.util.function.BiPredicate;
26
27 import org.apache.commons.lang3.tuple.Pair;
28 import org.junit.jupiter.api.Test;
29
30 public class CountingPredicateTest {
31
32 private Integer[] ary = {Integer.valueOf(1), Integer.valueOf(2)};
33
34 private BiPredicate<Integer, Integer> makeFunc(BiPredicate<Integer, Integer> inner, List<Pair<Integer, Integer>> result) {
35 return (x, y) -> {
36 if (inner.test(x, y)) {
37 result.add(Pair.of(x, y));
38 return true;
39 }
40 return false;
41 };
42 }
43
44
45
46
47
48 @Test
49 public void testPredicateLonger() {
50 List<Pair<Integer, Integer>> expected = new ArrayList<>();
51 List<Pair<Integer, Integer>> result = new ArrayList<>();
52 expected.add(Pair.of(1, 3));
53
54 CountingPredicate<Integer> cp = new CountingPredicate<>(ary, makeFunc((x, y) -> x!=null, result));
55 assertTrue(cp.test(Integer.valueOf(3)));
56 assertEquals(expected, result);
57 expected.add(Pair.of(2, null));
58 assertTrue(cp.forEachRemaining());
59 assertEquals(expected, result);
60
61
62
63 expected.clear();
64 expected.add(Pair.of(1, null));
65 expected.add(Pair.of(2, null));
66 result.clear();
67 cp = new CountingPredicate<>(ary, makeFunc((x, y) -> x!=null, result));
68 assertTrue(cp.forEachRemaining());
69 assertEquals( expected, result);
70
71
72
73 expected.clear();
74 expected.add(Pair.of(1, null));
75 result.clear();
76 cp = new CountingPredicate<>(ary, makeFunc((x, y) -> x == Integer.valueOf(1), result));
77 assertFalse(cp.forEachRemaining());
78 assertEquals(expected, result);
79 }
80
81
82
83
84
85 @Test
86 public void testPredicateSameLength() {
87 List<Pair<Integer, Integer>> expected = new ArrayList<>();
88 List<Pair<Integer, Integer>> result = new ArrayList<>();
89 expected.add( Pair.of(1, 3));
90 expected.add( Pair.of(2, 3));
91 CountingPredicate<Integer> cp = new CountingPredicate<>(ary, makeFunc((x, y) -> true, result));
92 assertTrue(cp.test(3));
93 assertTrue(cp.test(3));
94 assertEquals(expected, result);
95 assertTrue(cp.forEachRemaining());
96 assertEquals(expected, result);
97 }
98
99
100
101
102
103 @Test
104 public void testPredicateShorter() {
105 List<Pair<Integer, Integer>> expected = new ArrayList<>();
106 List<Pair<Integer, Integer>> result = new ArrayList<>();
107 Integer[] shortAry = {Integer.valueOf(3)};
108 expected.add(Pair.of(3, 1));
109 expected.add(Pair.of(null, 2));
110 CountingPredicate<Integer> cp = new CountingPredicate<>(shortAry, makeFunc((x, y) -> true, result));
111 for (Integer i : ary) {
112 assertTrue(cp.test(i));
113 }
114 assertEquals(expected, result);
115 assertTrue(cp.forEachRemaining());
116 assertEquals(expected, result);
117 }
118 }