Your Fixture solution is close to correct.

@Override
>         public WrappedBloomFilter copy() {
>             return new Fixture(getWrapped());
>         }


should return new Fixture(getWrapped().copy());

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

Reply via email to