package com.spencerwi.hamcrestJDK8Time.matchers;
import org.hamcrest.Description;
import org.hamcrest.Factory;
import org.hamcrest.TypeSafeMatcher;
import java.time.temporal.Temporal;
public class IsStrictlyBetween<T extends Temporal & Comparable<T>> extends TypeSafeMatcher<T> {
private T start, end;
public IsStrictlyBetween(T start, T end) {
this.start = start;
this.end = end;
}
@Override
protected boolean matchesSafely(T item) {
final boolean isAfterStart = item.compareTo(start) > 0;
final boolean isBeforeEnd = item.compareTo(end) < 0;
return isAfterStart && isBeforeEnd;
}
@Override
public void describeTo(Description description) {
description
.appendText("a " + start.getClass().getSimpleName() + " strictly between ")
.appendValue(start)
.appendText(" and ")
.appendValue(end);
}
@Factory
public static <T extends Temporal & Comparable<T>> IsStrictlyBetween<T> strictlyBetween(T start, T end){
return new IsStrictlyBetween<>(start, end);
}
}