FunctionalDoublesSurface extends Surface<Double, Double, Double> { @Override public Double getZValue(final Double x, final Double y) { Validate.notNull(x, "x"); Validate.notNull(y, "y"); return _function.evaluate(x, y); } FunctionalDoublesSurface(final Function<Double, Double> function);  FunctionalDoublesSurface(final Function<Double, Double> function, final String name); static FunctionalDoublesSurface from(final Function<Double, Double> function); static FunctionalDoublesSurface from(final Function<Double, Double> function, final String name); @Override Double[] getXData(); @Override Double[] getYData(); @Override Double[] getZData(); @Override int size(); @Override Double getZValue(final Double x, final Double y); @Override Double getZValue(final Pair<Double, Double> xy); Function<Double, Double> getFunction(); @Override int hashCode(); @Override boolean equals(final Object obj);  }
@Test(expectedExceptions = IllegalArgumentException.class) public void testNullX() { SURFACE.getZValue(null, 2.); }
@Test(expectedExceptions = IllegalArgumentException.class) public void testNullY() { SURFACE.getZValue(1., null); }
@Test(expectedExceptions = IllegalArgumentException.class) public void testNullPair() { SURFACE.getZValue(null); }