package combo; import org.assertj.core.api.AbstractAssert; import org.assertj.core.api.Assertions; import java.util.Optional; public final class ComboAssertions extends Assertions { public static ConsumedFactAssert assertThat(final ConsumedFact actual) { return new ConsumedFactAssert(actual); } public static <T> OptionalAssert<T> assertThat(final Optional<T> actual) { return new OptionalAssert<>(actual); } private ComboAssertions() { } static final class OptionalAssert<T> extends AbstractAssert<OptionalAssert<T>, Optional<T>> { protected OptionalAssert(final Optional<T> actual) { super(actual, OptionalAssert.class); } OptionalAssert<T> isAbsent() { isNotNull(); assertThat(actual.isPresent()) .describedAs("Expecting optional value to be absent") .isFalse(); return this; } } }