Max { public static Combine.BinaryCombineDoubleFn ofDoubles() { return new Max.MaxDoubleFn(); } private  Max(); static Combine.Globally<Integer, Integer> integersGlobally(); static Combine.PerKey<K, Integer, Integer> integersPerKey(); static Combine.Globally<Long, Long> longsGlobally(); static Combine.PerKey<K, Long, Long> longsPerKey(); static Combine.Globally<Double, Double> doublesGlobally(); static Combine.PerKey<K, Double, Double> doublesPerKey(); static Combine.BinaryCombineIntegerFn ofIntegers(); static Combine.BinaryCombineLongFn ofLongs(); static Combine.BinaryCombineDoubleFn ofDoubles(); static BinaryCombineFn<T> of(
      final T identity, final ComparatorT comparator); static BinaryCombineFn<T> of(
      final ComparatorT comparator); static BinaryCombineFn<T> naturalOrder(T identity); static BinaryCombineFn<T> naturalOrder(); static Combine.Globally<T, T> globally(); static Combine.PerKey<K, T, T> perKey(); static Combine.Globally<T, T> globally(ComparatorT comparator); static Combine.PerKey<K, T, T> perKey(ComparatorT comparator);  }
@Test public void testMaxDoubleFn() { testCombineFn(Max.ofDoubles(), Lists.newArrayList(1.0, 2.0, 3.0, 4.0), 4.0); }
@Test public void testMaxDoubleFnInfinity() { testCombineFn( Max.ofDoubles(), Lists.newArrayList(Double.NEGATIVE_INFINITY, 2.0, 3.0, Double.POSITIVE_INFINITY), Double.POSITIVE_INFINITY); }
@Test public void testMaxDoubleFnNan() { testCombineFn( Max.ofDoubles(), Lists.newArrayList(Double.NaN, 2.0, 3.0, Double.POSITIVE_INFINITY), Double.NaN); }