package com.annimon.stream.test.mockito;
import com.annimon.stream.Optional;
import org.mockito.ArgumentMatcher;
import static org.mockito.ArgumentMatchers.argThat;
public class OptionalMatcher {
private OptionalMatcher() { }
public static <T> Optional<T> anyPresentOptional() {
return argThat(new PresentOptionalMatcher<T>());
}
public static <T> Optional<T> anyPresentOptional(@SuppressWarnings("UnusedParameters") Class<T> clazz) {
return argThat(new PresentOptionalMatcher<T>());
}
public static <T> Optional<T> anyEmptyOptional() {
return argThat(new EmptyOptionalMatcher<T>());
}
public static <T> Optional<T> anyEmptyOptional(@SuppressWarnings("UnusedParameters") Class<T> clazz) {
return argThat(new EmptyOptionalMatcher<T>());
}
public static class PresentOptionalMatcher<T> implements ArgumentMatcher<Optional<T>> {
@Override
public boolean matches(Optional<T> argument) {
return argument != null && argument.isPresent();
}
@Override
public String toString() {
return "anyPresentOptional()";
}
}
public static class EmptyOptionalMatcher<T> implements ArgumentMatcher<Optional<T>> {
@Override
public boolean matches(Optional<T> argument) {
return argument != null && !argument.isPresent();
}
@Override
public String toString() {
return "anyEmptyOptional()";
}
}
}