/** * Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.financial.fudgemsg; import static org.testng.AssertJUnit.assertEquals; import java.util.Arrays; import java.util.List; import java.util.Set; import java.util.TreeSet; import org.testng.annotations.Test; import org.threeten.bp.LocalDate; import com.opengamma.financial.analytics.curve.CurveDefinition; import com.opengamma.financial.analytics.curve.FixedDateInterpolatedCurveDefinition; import com.opengamma.financial.analytics.curve.InterpolatedCurveDefinition; import com.opengamma.financial.analytics.fudgemsg.AnalyticsTestBase; import com.opengamma.financial.analytics.ircurve.strips.CashNode; import com.opengamma.financial.analytics.ircurve.strips.CreditSpreadNode; import com.opengamma.financial.analytics.ircurve.strips.CurveNode; import com.opengamma.financial.analytics.ircurve.strips.SwapNode; import com.opengamma.id.ExternalId; import com.opengamma.id.UniqueId; import com.opengamma.util.test.TestGroup; import com.opengamma.util.time.Tenor; /** * Test. */ @Test(groups = TestGroup.UNIT) public class CurveDefinitionBuildersTest extends AnalyticsTestBase { /** * Tests the construction of curve definitions. */ @Test public void testCurveDefinition() { final Set<CurveNode> nodes = new TreeSet<>(); nodes.add(new CreditSpreadNode("X", Tenor.DAY)); nodes.add(new CreditSpreadNode("X", Tenor.EIGHT_YEARS)); nodes.add(new CreditSpreadNode("Y", Tenor.ONE_MONTH)); CurveDefinition definition = new CurveDefinition("NAME", nodes); assertEquals(definition, cycleObject(CurveDefinition.class, definition)); definition = new CurveDefinition("NAME", nodes); definition.setUniqueId(UniqueId.of("test", "id")); assertEquals(definition, cycleObject(CurveDefinition.class, definition)); } /** * Tests the construction of all interpolated curve definitions. */ @Test public void testInterpolatedCurveDefinitions() { final Set<CurveNode> nodes = new TreeSet<>(); final String curveNodeIdMapperName = "Id mapper"; final CashNode cash1w = new CashNode(Tenor.ONE_DAY, Tenor.ONE_WEEK, ExternalId.of("Test", "1W Cash"), curveNodeIdMapperName); final CashNode cash1m = new CashNode(Tenor.ONE_DAY, Tenor.ONE_MONTH, ExternalId.of("Test", "1m Cash"), curveNodeIdMapperName); final CashNode cash6m = new CashNode(Tenor.ONE_DAY, Tenor.SIX_MONTHS, ExternalId.of("Test", "6m Cash"), curveNodeIdMapperName); final CashNode cash12m = new CashNode(Tenor.ONE_DAY, Tenor.TWELVE_MONTHS, ExternalId.of("Test", "12m Cash"), curveNodeIdMapperName); final SwapNode swap2y = new SwapNode(Tenor.ONE_DAY, Tenor.TWO_YEARS, ExternalId.of("Test", "Pay leg 2y"), ExternalId.of("Test", "Receive leg 2y"), curveNodeIdMapperName); final SwapNode swap5y = new SwapNode(Tenor.ONE_DAY, Tenor.FIVE_YEARS, ExternalId.of("Test", "Pay leg 5y"), ExternalId.of("Test", "Receive leg 5y"), curveNodeIdMapperName); final SwapNode swap10y = new SwapNode(Tenor.ONE_DAY, Tenor.TEN_YEARS, ExternalId.of("Test", "Pay leg 10y"), ExternalId.of("Test", "Receive leg 10y"), curveNodeIdMapperName); nodes.add(cash1w); nodes.add(cash1m); nodes.add(cash6m); nodes.add(cash12m); nodes.add(swap2y); nodes.add(swap5y); nodes.add(swap10y); final String interpolatorName = "interpolator name"; final String leftExtrapolatorName = "left extrapolator name"; final String rightExtrapolatorName = "right extrapolator name"; final String curveName = "NAME"; InterpolatedCurveDefinition definition = new InterpolatedCurveDefinition(curveName, nodes, interpolatorName); definition.setUniqueId(UniqueId.of("test", "id1")); assertEquals(definition, cycleObject(InterpolatedCurveDefinition.class, definition)); definition = new InterpolatedCurveDefinition(curveName, nodes, interpolatorName, rightExtrapolatorName); definition.setUniqueId(UniqueId.of("test", "id2")); assertEquals(definition, cycleObject(InterpolatedCurveDefinition.class, definition)); definition = new InterpolatedCurveDefinition(curveName, nodes, interpolatorName, rightExtrapolatorName, leftExtrapolatorName); definition.setUniqueId(UniqueId.of("test", "id3")); assertEquals(definition, cycleObject(InterpolatedCurveDefinition.class, definition)); final List<LocalDate> fixedDates = Arrays.asList(LocalDate.of(2013, 10, 1), LocalDate.of(2013, 11, 1), LocalDate.of(2014, 1, 1)); FixedDateInterpolatedCurveDefinition fixedDateDefinition = new FixedDateInterpolatedCurveDefinition(curveName, nodes, interpolatorName, fixedDates); assertEquals(fixedDateDefinition, cycleObject(FixedDateInterpolatedCurveDefinition.class, fixedDateDefinition)); fixedDateDefinition = new FixedDateInterpolatedCurveDefinition(curveName, nodes, interpolatorName, rightExtrapolatorName, fixedDates); assertEquals(fixedDateDefinition, cycleObject(FixedDateInterpolatedCurveDefinition.class, fixedDateDefinition)); fixedDateDefinition = new FixedDateInterpolatedCurveDefinition(curveName, nodes, interpolatorName, rightExtrapolatorName, leftExtrapolatorName, fixedDates); assertEquals(fixedDateDefinition, cycleObject(FixedDateInterpolatedCurveDefinition.class, fixedDateDefinition)); } }