public void Test()
{
double[,] values = { { .5, .015 },
{ 1, .0165 },
{ 2, .0168 },
{ 3, .0172 },
{ 5, .0182 },
{ 8, .0210 },
{ 10, .025 },
{ 15, .031 },
{ 20, .035 },
{ 30, .037 },
{ 40, .038 }, };
Function zeroratecurve = new PFunction(null);
zeroratecurve.Expr = values;
(zeroratecurve as PFunction).m_Function.iType = EInterpolationType.LINEAR;
// Execute the test.
CapHW1 hwc = new CapHW1(zeroratecurve);
// CAP and FLOOR Tests.
double[] results = new double[2];
results[0] = hwc.HWCap(0.14, 0.02, 0.02, 0.5, 1);
results[1] = hwc.HWCap(0.14, 0.02, 0.02, 0.5, 2);
Console.WriteLine("CAP 2 col 1 row:" + results[0]);
Console.WriteLine("CAP 2 col 2 row:" + results[1]);
// Check the results with previously manually calculated values.
double[] targets = { 0.00214717607719883, 0.0084939015243779 };
double eps = 10e-6;
for (int r = 0; r < results.Length; r++)
{
Assert.LessOrEqual(Math.Abs(targets[r] - results[r]), eps);
}
}