/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.analytics.math.surface; import static org.testng.AssertJUnit.assertTrue; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import org.testng.annotations.Test; import com.opengamma.util.test.TestGroup; import com.opengamma.util.tuple.DoublesPair; import com.opengamma.util.tuple.Pair; import com.opengamma.util.tuple.Triple; /** * Abstract test. */ @Test(groups = TestGroup.UNIT) public abstract class DoublesSurfaceTestCase { static final String NAME = "a"; static final double[] X_PRIMITIVE; static final double[] Y_PRIMITIVE; static final double[] Z_PRIMITIVE; static final Double[] X_OBJECT; static final Double[] Y_OBJECT; static final Double[] Z_OBJECT; static final List<Double> X_LIST; static final List<Double> Y_LIST; static final List<Double> Z_LIST; static final DoublesPair[] XY_PAIR; static final List<DoublesPair> XY_PAIR_LIST; static final Map<DoublesPair, Double> XYZ_MAP; static final List<Triple<Double, Double, Double>> XYZ_LIST; static { final int n = 10; X_PRIMITIVE = new double[n]; Y_PRIMITIVE = new double[n]; Z_PRIMITIVE = new double[n]; X_OBJECT = new Double[n]; Y_OBJECT = new Double[n]; Z_OBJECT = new Double[n]; X_LIST = new ArrayList<>(); Y_LIST = new ArrayList<>(); Z_LIST = new ArrayList<>(); XY_PAIR = new DoublesPair[n]; XY_PAIR_LIST = new ArrayList<>(); XYZ_MAP = new LinkedHashMap<>(); XYZ_LIST = new ArrayList<>(); for (int i = 0; i < n; i++) { final double x = i < 5 ? i : i - 5; final double y = i < 5 ? 0 : 1; final double z = 4 * x; final DoublesPair xy = DoublesPair.of(x, y); final Triple<Double, Double, Double> xyz = new Triple<>(x, y, z); X_PRIMITIVE[i] = x; Y_PRIMITIVE[i] = y; Z_PRIMITIVE[i] = z; X_OBJECT[i] = x; Y_OBJECT[i] = y; Z_OBJECT[i] = z; X_LIST.add(x); Y_LIST.add(y); Z_LIST.add(z); XY_PAIR[i] = xy; XY_PAIR_LIST.add(xy); XYZ_MAP.put(xy, z); XYZ_LIST.add(xyz); } } @Test public void testObjectArrays() { final DoublesSurface surface = new DummySurface(XYZ_LIST); final Double[] x = surface.getXData(); assertTrue(x == surface.getXData()); final Double[] y = surface.getYData(); assertTrue(y == surface.getYData()); final Double[] z = surface.getZData(); assertTrue(z == surface.getZData()); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull1() { new DummySurface((double[]) null, Y_PRIMITIVE, Z_PRIMITIVE, NAME); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull2() { new DummySurface(X_PRIMITIVE, (double[]) null, Z_PRIMITIVE, NAME); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull3() { new DummySurface(X_PRIMITIVE, Y_PRIMITIVE, (double[]) null, NAME); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull4() { new DummySurface((Double[]) null, Y_OBJECT, Z_OBJECT, NAME); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull5() { new DummySurface(X_OBJECT, (Double[]) null, Z_OBJECT, NAME); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull6() { new DummySurface(X_OBJECT, Y_OBJECT, (Double[]) null, NAME); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull7() { new DummySurface((List<Double>) null, Y_LIST, Z_LIST, NAME); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull8() { final List<Double> l = Arrays.asList(3., null); new DummySurface(l, Y_LIST, Z_LIST, NAME); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull9() { final List<Double> l = Arrays.asList(3., null); new DummySurface(X_LIST, l, Z_LIST, NAME); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull10() { final List<Double> l = Arrays.asList(3., null); new DummySurface(X_LIST, Y_LIST, l, NAME); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull11() { new DummySurface((DoublesPair[]) null, X_PRIMITIVE, NAME); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull12() { new DummySurface(XY_PAIR, (double[]) null, NAME); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull13() { new DummySurface(new DoublesPair[] {null}, Z_PRIMITIVE, NAME); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull14() { new DummySurface((DoublesPair[]) null, Z_OBJECT, NAME); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull15() { new DummySurface(XY_PAIR, (Double[]) null, NAME); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull16() { new DummySurface(new DoublesPair[] {null}, Z_OBJECT, NAME); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull17() { new DummySurface((List<DoublesPair>) null, Z_LIST, NAME); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull18() { new DummySurface(XY_PAIR_LIST, (List<Double>) null, NAME); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull19() { new DummySurface(Arrays.asList(DoublesPair.of(1., 2.), null), Z_LIST, NAME); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull20() { new DummySurface(XY_PAIR_LIST, Arrays.asList(1., null), NAME); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull21() { new DummySurface((Map<DoublesPair, Double>) null, NAME); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull22() { final Map<DoublesPair, Double> m = new HashMap<>(); m.put(DoublesPair.of(1., 2.), 3.); m.put(null, 3.); new DummySurface(m, NAME); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull23() { final Map<DoublesPair, Double> m = new HashMap<>(); m.put(DoublesPair.of(1., 2.), 3.); m.put(DoublesPair.of(1., 3.), null); new DummySurface(m, NAME); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull24() { new DummySurface((List<Triple<Double, Double, Double>>) null, NAME); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull25() { final List<Triple<Double, Double, Double>> l = Arrays.asList(new Triple<>(1., 2., 3.), null); new DummySurface(l, NAME); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull26() { new DummySurface((double[]) null, Y_PRIMITIVE, Z_PRIMITIVE); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull27() { new DummySurface(X_PRIMITIVE, (double[]) null, Z_PRIMITIVE); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull28() { new DummySurface(X_PRIMITIVE, Y_PRIMITIVE, (double[]) null); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull29() { new DummySurface((Double[]) null, Y_OBJECT, Z_OBJECT); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull30() { new DummySurface(X_OBJECT, (Double[]) null, Z_OBJECT); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull31() { new DummySurface(X_OBJECT, Y_OBJECT, (Double[]) null); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull32() { new DummySurface((List<Double>) null, Y_LIST, Z_LIST); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull33() { final List<Double> l = Arrays.asList(3., null); new DummySurface(l, Y_LIST, Z_LIST); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull34() { final List<Double> l = Arrays.asList(3., null); new DummySurface(X_LIST, l, Z_LIST); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull35() { final List<Double> l = Arrays.asList(3., null); new DummySurface(X_LIST, Y_LIST, l); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull36() { new DummySurface((DoublesPair[]) null, X_PRIMITIVE); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull37() { new DummySurface(XY_PAIR, (double[]) null); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull38() { new DummySurface(new DoublesPair[] {null}, Z_PRIMITIVE); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull39() { new DummySurface((DoublesPair[]) null, Z_OBJECT); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull40() { new DummySurface(XY_PAIR, (Double[]) null); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull41() { new DummySurface(new DoublesPair[] {null}, Z_OBJECT); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull42() { new DummySurface((List<DoublesPair>) null, Z_LIST); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull43() { new DummySurface(XY_PAIR_LIST, (List<Double>) null); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull44() { new DummySurface(Arrays.asList(DoublesPair.of(1., 2.), null), Z_LIST); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull45() { new DummySurface(XY_PAIR_LIST, Arrays.asList(1., null)); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull46() { new DummySurface((Map<DoublesPair, Double>) null); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull47() { final Map<DoublesPair, Double> m = new HashMap<>(); m.put(DoublesPair.of(1., 2.), 3.); m.put(null, 3.); new DummySurface(m); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull48() { final Map<DoublesPair, Double> m = new HashMap<>(); m.put(DoublesPair.of(1., 2.), 3.); m.put(DoublesPair.of(1., 3.), null); new DummySurface(m); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull49() { new DummySurface((List<Triple<Double, Double, Double>>) null); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull50() { final List<Triple<Double, Double, Double>> l = Arrays.asList(new Triple<>(1., 2., 3.), null); new DummySurface(l); } private static class DummySurface extends DoublesSurface { public DummySurface(final double[] xData, final double[] yData, final double[] zData) { super(xData, yData, zData); } public DummySurface(final Double[] xData, final Double[] yData, final Double[] zData) { super(xData, yData, zData); } public DummySurface(final List<Double> xData, final List<Double> yData, final List<Double> zData) { super(xData, yData, zData); } public DummySurface(final DoublesPair[] xyData, final double[] zData) { super(xyData, zData); } public DummySurface(final DoublesPair[] xyData, final Double[] zData) { super(xyData, zData); } public DummySurface(final List<DoublesPair> xyData, final List<Double> zData) { super(xyData, zData); } public DummySurface(final Map<DoublesPair, Double> xyzData) { super(xyzData); } public DummySurface(final List<Triple<Double, Double, Double>> xyzData) { super(xyzData); } public DummySurface(final double[] xData, final double[] yData, final double[] zData, final String name) { super(xData, yData, zData, name); } public DummySurface(final Double[] xData, final Double[] yData, final Double[] zData, final String name) { super(xData, yData, zData, name); } public DummySurface(final List<Double> xData, final List<Double> yData, final List<Double> zData, final String name) { super(xData, yData, zData, name); } public DummySurface(final DoublesPair[] xyData, final double[] zData, final String name) { super(xyData, zData, name); } public DummySurface(final DoublesPair[] xyData, final Double[] zData, final String name) { super(xyData, zData, name); } public DummySurface(final List<DoublesPair> xyData, final List<Double> zData, final String name) { super(xyData, zData, name); } public DummySurface(final Map<DoublesPair, Double> xyzData, final String name) { super(xyzData, name); } public DummySurface(final List<Triple<Double, Double, Double>> xyzData, final String name) { super(xyzData, name); } @Override public Double getZValue(final Double x, final Double y) { return null; } @Override public Double getZValue(final Pair<Double, Double> xy) { return null; } } }