The WrappedBloomFilterTest currently says [0][1] that a copy of a
WrappedBloomFilter is not a WrappedBloomFilter, which does not make sense
to me as non-SME.
Should the test be adjusted? It looks like the test is written in a
contrived way due to WrappedBloomFilter being abstract. I would make more
sense to me to have private static WrappedBloomFilter in the test and use
it, like this:
private static class Fixture extends WrappedBloomFilter {
public Fixture(BloomFilter wrapped) {
super(wrapped);
}
@Override
public WrappedBloomFilter copy() {
return new Fixture(getWrapped());
}
}
@Override
protected WrappedBloomFilter createEmptyFilter(final Shape shape) {
return new Fixture(new
DefaultBloomFilterTest.SparseDefaultBloomFilter(shape));
}
@ParameterizedTest
@ValueSource(ints = {0, 1, 34})
public void testCharacteristics(final int characteristics) {
final Shape shape = getTestShape();
final BloomFilter inner = new
DefaultBloomFilterTest.SparseDefaultBloomFilter(shape) {
@Override
public int characteristics() {
return characteristics;
}
};
final WrappedBloomFilter underTest = new Fixture(inner);
assertEquals(characteristics, underTest.characteristics());
}
WDYT?
Let's skip discussing the signature of the copy() method, I'll write a
separate email later about that.
TY,
Gary
[0]
https://github.com/apache/commons-collections/blob/730d972cdebb13dd3a896eb5b90ebc9e1f594d5b/src/test/java/org/apache/commons/collections4/bloomfilter/WrappedBloomFilterTest.java#L26-L56
[1] The above link in WrappedBloomFilterTest is:
@Override
protected WrappedBloomFilter createEmptyFilter(final Shape shape) {
return new WrappedBloomFilter(new
DefaultBloomFilterTest.SparseDefaultBloomFilter(shape)) {
@Override
public BloomFilter copy() {
final BloomFilter result = new
DefaultBloomFilterTest.SparseDefaultBloomFilter(shape);
result.merge(getWrapped());
return result;
}
};
}
@ParameterizedTest
@ValueSource(ints = {0, 1, 34})
public void testCharacteristics(final int characteristics) {
final Shape shape = getTestShape();
final BloomFilter inner = new
DefaultBloomFilterTest.SparseDefaultBloomFilter(shape) {
@Override
public int characteristics() {
return characteristics;
}
};
final WrappedBloomFilter underTest = new WrappedBloomFilter(inner) {
@Override
public BloomFilter copy() {
final BloomFilter result = new
DefaultBloomFilterTest.SparseDefaultBloomFilter(shape);
result.merge(getWrapped());
return result;
}
};
assertEquals(characteristics, underTest.characteristics());
}