### Question:
Min implements BinaryFunction<T, T, T> { public T evaluate(T left, T right) { return (comparator.compare(left, right) <= 0) ? left : right; } @SuppressWarnings("unchecked")  Min();  Min(Comparator<T> comparator); T evaluate(T left, T right); @Override boolean equals(Object obj); @Override int hashCode(); @Override String toString(); static Min<T> instance(); static Function<T, T> instance(T right); static final Min<Comparable<?>> INSTANCE; }### Answer:
@Test public void testEvaluate() { Min<Integer> f = Min.instance(); assertEquals(ONE, f.evaluate(ONE, ONE)); assertEquals(ZERO, f.evaluate(ZERO, ONE)); assertEquals(ZERO, f.evaluate(ONE, ZERO)); assertEquals(ONE, f.evaluate(ONE, MAX)); assertEquals(MIN, f.evaluate(MIN, MAX)); assertEquals(MIN, f.evaluate(MIN, MINUS_TWO)); }