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