/**
* Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.financial.analytics.model.sabrcube;
import static org.testng.AssertJUnit.assertEquals;
import org.testng.annotations.Test;
import com.opengamma.analytics.util.amount.SurfaceValue;
import com.opengamma.financial.analytics.DoubleLabelledMatrix2D;
import com.opengamma.util.test.TestGroup;
import com.opengamma.util.tuple.DoublesPair;
/**
* Test.
*/
@Test(groups = TestGroup.UNIT)
public class SABRCubeUtilTest {
private static final double TOLERANCE = 1.0E-10;
@Test
/**
* Tests the toArray method.
*/
public void toDoubleLabelledMatrix2DFull() {
double[] x = new double[] {0.5, 2.5, 5.0};
double[] y = new double[] {1.0, 2.0, 5.0, 10.0};
double[][] vIn = new double[y.length][x.length];
SurfaceValue surf = new SurfaceValue();
for (int loopx = 0; loopx < x.length; loopx++) {
for (int loopy = 0; loopy < y.length; loopy++) {
vIn[loopy][loopx] = x[loopx] * y[loopy];
surf.add(DoublesPair.of(x[loopx], y[loopy]), vIn[loopy][loopx]);
}
}
DoubleLabelledMatrix2D vOut = SABRCubeUtils.toDoubleLabelledMatrix2D(surf);
for (int loopx = 0; loopx < x.length; loopx++) {
for (int loopy = 0; loopy < y.length; loopy++) {
assertEquals("Surface value - toArray", vIn[loopy][loopx], vOut.getValues()[loopy][loopx], TOLERANCE);
}
}
for (int loopx = 0; loopx < x.length; loopx++) {
assertEquals("Surface value - toArray", x[loopx], vOut.getXKeys()[loopx], TOLERANCE);
}
for (int loopy = 0; loopy < y.length; loopy++) {
assertEquals("Surface value - toArray", y[loopy], vOut.getYKeys()[loopy], TOLERANCE);
}
}
@Test
/**
* Tests the toArray method.
*/
public void toDoubleLabelledMatrix2DPartial() {
double[] x = new double[] {0.5, 2.5, 5.0};
double[] y = new double[] {1.0, 2.0, 5.0};
double[][] vIn = new double[x.length][x.length];
SurfaceValue surf = new SurfaceValue();
for (int loopx = 0; loopx < x.length; loopx++) {
vIn[loopx][loopx] = x[loopx] * y[loopx];
surf.add(DoublesPair.of(x[loopx], y[loopx]), vIn[loopx][loopx]);
}
DoubleLabelledMatrix2D vOut = SABRCubeUtils.toDoubleLabelledMatrix2D(surf);
for (int loopx = 0; loopx < x.length; loopx++) {
assertEquals("Surface value - toArray", vIn[loopx][loopx], vOut.getValues()[loopx][loopx], TOLERANCE);
}
for (int loopx = 0; loopx < x.length; loopx++) {
assertEquals("Surface value - toArray", x[loopx], vOut.getXKeys()[loopx], TOLERANCE);
}
for (int loopy = 0; loopy < x.length; loopy++) {
assertEquals("Surface value - toArray", y[loopy], vOut.getYKeys()[loopy], TOLERANCE);
}
}
}