Now, we can generate FooAssert with the generator, but the ListAssert we get out of assertThat in this case does, of course, not known about the generated assertion; we get a regular ObjectAssert<Foo>.
We can work around this by creating something like this here:
public class FooIterableAssert
extends AbstractIterableAssert<FooIterableAssert, Iterable<? extends Foo>, Foo, FooIterableAssert> {
protected FooIterableAssert(Iterable<? extends Foo> foos, Class<?> selfType) {
super(foos, selfType);
}
@Override
protected FooAssert toAssert(Foo value, String description) {
return new FooAssert(value);
}
@Override
protected FooIterableAssert newAbstractIterableAssert(Iterable<? extends Foo> iterable) {
return new FooIterableAssert(iterable, FooIterableAssert.class);
}
public static FooIterableAssert assertThat(List<Foo> foos) {
return new FooIterableAssert(foos, FooIterableAssert.class);
}
}
This has the feel of "should be a template" and "surely not only we want this", so I'm raising this issue. :)
I'm also not sure whether one would have/want to fiddle with the entrypoint methods in support of this.
PS: I was considering to use Lombok's @ExtensionMethod on ListAssert to add something like FooAssert singleFoo() to it. Unfortunately, it does not seem possible to get the actual value back from an Assert, so I was stuck there.
We would like to write something like this:
Now, we can generate
FooAssert
with the generator, but theListAssert
we get out ofassertThat
in this case does, of course, not known about the generated assertion; we get a regularObjectAssert<Foo>
.We can work around this by creating something like this here:
This has the feel of "should be a template" and "surely not only we want this", so I'm raising this issue. :) I'm also not sure whether one would have/want to fiddle with the entrypoint methods in support of this.
PS: I was considering to use Lombok's
@ExtensionMethod
onListAssert
to add something likeFooAssert singleFoo()
to it. Unfortunately, it does not seem possible to get the actual value back from an Assert, so I was stuck there.