On Sat, Oct 5, 2024 at 11:46 AM Claude Warren <cla...@xenei.com> wrote:
> Your Fixture solution is close to correct. > > @Override > > public WrappedBloomFilter copy() { > > return new Fixture(getWrapped()); > > } > > > should return new Fixture(getWrapped().copy()); > Thank you for your review Claude. These changes are now in git master. Gary > > On Sat, Oct 5, 2024 at 4:42 PM Claude Warren <cla...@xenei.com> wrote: > > > Ignore my previous message. I don't know where my mind was. > > > > On Sat, Oct 5, 2024 at 4:26 PM Claude Warren <cla...@xenei.com> wrote: > > > >> WrappedBloomFilter is not a WrappedBloomFilter, > >> > >> > >> This is true in most useful cases for the test ` > >> assertEquals(bf1.getClass(), copy.getClass()); > >> > >> In a proposed KIP (Kafka Improvement Proposal) there is a Bloom filter > >> that is decorated with additional data (The timestamp for when it was > >> created). This class is called TimestampedBloomFilter and it extends > >> WrappedBloomFilter. > >> > >> When TimestampedBloomFilter is passed to the WrappedBloomFilterTest > >> classes and the "copy" method is called, the result is not a > >> WrappedBloomFilter but a TimestampedBloomFilter. > >> > >> If the TimestampedBloomFilterTest extends the WrappedBloomFilterTest the > >> test fails. > >> > >> > >> > >> > >> On Sat, Oct 5, 2024 at 3:21 PM Gary Gregory <garydgreg...@gmail.com> > >> wrote: > >> > >>> 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()); > >>> } > >>> > >> > >> > >> -- > >> LinkedIn: http://www.linkedin.com/in/claudewarren > >> > > > > > > -- > > LinkedIn: http://www.linkedin.com/in/claudewarren > > > > > -- > LinkedIn: http://www.linkedin.com/in/claudewarren >