/** * 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 org.testng.annotations.Test; import com.opengamma.core.id.ExternalSchemes; import com.opengamma.financial.analytics.fudgemsg.AnalyticsTestBase; import com.opengamma.financial.analytics.ircurve.strips.BillNode; import com.opengamma.financial.analytics.ircurve.strips.BondNode; import com.opengamma.financial.analytics.ircurve.strips.CalendarSwapNode; import com.opengamma.financial.analytics.ircurve.strips.CashNode; import com.opengamma.financial.analytics.ircurve.strips.ContinuouslyCompoundedRateNode; import com.opengamma.financial.analytics.ircurve.strips.CreditSpreadNode; import com.opengamma.financial.analytics.ircurve.strips.CurveNodeWithIdentifier; import com.opengamma.financial.analytics.ircurve.strips.DataFieldType; import com.opengamma.financial.analytics.ircurve.strips.DeliverableSwapFutureNode; import com.opengamma.financial.analytics.ircurve.strips.DiscountFactorNode; import com.opengamma.financial.analytics.ircurve.strips.FRANode; import com.opengamma.financial.analytics.ircurve.strips.FXForwardNode; import com.opengamma.financial.analytics.ircurve.strips.InflationNodeType; import com.opengamma.financial.analytics.ircurve.strips.PeriodicallyCompoundedRateNode; import com.opengamma.financial.analytics.ircurve.strips.RateFutureNode; import com.opengamma.financial.analytics.ircurve.strips.RollDateFRANode; import com.opengamma.financial.analytics.ircurve.strips.RollDateSwapNode; import com.opengamma.financial.analytics.ircurve.strips.SwapNode; import com.opengamma.financial.analytics.ircurve.strips.ThreeLegBasisSwapNode; import com.opengamma.financial.analytics.ircurve.strips.ZeroCouponInflationNode; import com.opengamma.id.ExternalId; import com.opengamma.util.money.Currency; import com.opengamma.util.test.TestGroup; import com.opengamma.util.time.Tenor; /** * Tests builders for curve nodes. */ @Test(groups = TestGroup.UNIT) public class CurveNodeBuildersTest extends AnalyticsTestBase { @Test public void testBillNodeBuilder() { BillNode node = new BillNode(Tenor.ONE_YEAR, "TEST"); assertEquals(node, cycleObject(BillNode.class, node)); node = new BillNode(Tenor.TWO_YEARS, "TEST", "name"); assertEquals(node, cycleObject(BillNode.class, node)); } @Test public void testBondNodeBuilder() { BondNode node = new BondNode(Tenor.ONE_YEAR, "TEST"); assertEquals(node, cycleObject(BondNode.class, node)); node = new BondNode(Tenor.TWO_YEARS, "TEST", "name"); assertEquals(node, cycleObject(BondNode.class, node)); } @Test public void testCashNodeBuilder() { CashNode node = new CashNode(Tenor.ONE_DAY, Tenor.ONE_YEAR, ExternalId.of("convention", "name"), "TEST"); assertEquals(node, cycleObject(CashNode.class, node)); node = new CashNode(Tenor.ONE_DAY, Tenor.ONE_YEAR, ExternalId.of("convention", "name"), "TEST", null); assertEquals(node, cycleObject(CashNode.class, node)); node = new CashNode(Tenor.ONE_DAY, Tenor.ONE_YEAR, ExternalId.of("convention", "name"), "TEST", "Name"); assertEquals(node, cycleObject(CashNode.class, node)); } @Test public void testContinuouslyCompoundedRateNodeBuilder() { ContinuouslyCompoundedRateNode node = new ContinuouslyCompoundedRateNode("TEST", Tenor.EIGHT_MONTHS); assertEquals(node, cycleObject(ContinuouslyCompoundedRateNode.class, node)); node = new ContinuouslyCompoundedRateNode("TEST", Tenor.EIGHT_MONTHS, null); assertEquals(node, cycleObject(ContinuouslyCompoundedRateNode.class, node)); node = new ContinuouslyCompoundedRateNode("TEST", Tenor.EIGHT_MONTHS, "Name"); assertEquals(node, cycleObject(ContinuouslyCompoundedRateNode.class, node)); } @Test public void testPeriodicallyCompoundedRateNodeBuilder() { PeriodicallyCompoundedRateNode node = new PeriodicallyCompoundedRateNode("TEST", Tenor.EIGHT_MONTHS, 4); assertEquals(node, cycleObject(PeriodicallyCompoundedRateNode.class, node)); node = new PeriodicallyCompoundedRateNode("TEST", Tenor.EIGHT_MONTHS, null, 2); assertEquals(node, cycleObject(PeriodicallyCompoundedRateNode.class, node)); node = new PeriodicallyCompoundedRateNode("TEST", Tenor.EIGHT_MONTHS, "Name", 1); assertEquals(node, cycleObject(PeriodicallyCompoundedRateNode.class, node)); } @Test public void testCreditCurveNodeBuilder() { CreditSpreadNode node = new CreditSpreadNode("TEST", Tenor.EIGHT_MONTHS); assertEquals(node, cycleObject(CreditSpreadNode.class, node)); node = new CreditSpreadNode("TEST", Tenor.EIGHT_MONTHS, null); assertEquals(node, cycleObject(CreditSpreadNode.class, node)); node = new CreditSpreadNode("TEST", Tenor.EIGHT_MONTHS, "Name"); assertEquals(node, cycleObject(CreditSpreadNode.class, node)); } @Test public void testDeliverableSwapFutureNodeBuilder() { DeliverableSwapFutureNode node = new DeliverableSwapFutureNode(2, Tenor.ONE_DAY, Tenor.THREE_MONTHS, Tenor.ONE_MONTH, ExternalId.of("convention", "future"), ExternalId.of("convention", "swap"), "TEST"); assertEquals(node, cycleObject(DeliverableSwapFutureNode.class, node)); node = new DeliverableSwapFutureNode(2, Tenor.ONE_DAY, Tenor.THREE_MONTHS, Tenor.ONE_MONTH, ExternalId.of("convention", "future"), ExternalId.of("convention", "swap"), "TEST", null); assertEquals(node, cycleObject(DeliverableSwapFutureNode.class, node)); node = new DeliverableSwapFutureNode(2, Tenor.ONE_DAY, Tenor.THREE_MONTHS, Tenor.ONE_MONTH, ExternalId.of("convention", "future"), ExternalId.of("convention", "swap"), "TEST", "Name"); assertEquals(node, cycleObject(DeliverableSwapFutureNode.class, node)); } @Test public void testDiscountFactorNodeBuilder() { DiscountFactorNode node = new DiscountFactorNode("TEST", Tenor.EIGHT_MONTHS); assertEquals(node, cycleObject(DiscountFactorNode.class, node)); node = new DiscountFactorNode("TEST", Tenor.EIGHT_MONTHS, null); assertEquals(node, cycleObject(DiscountFactorNode.class, node)); node = new DiscountFactorNode("TEST", Tenor.EIGHT_MONTHS, "Name"); assertEquals(node, cycleObject(DiscountFactorNode.class, node)); } @Test public void testFRANodeBuilder() { FRANode node = new FRANode(Tenor.SIX_MONTHS, Tenor.NINE_MONTHS, ExternalId.of("convention", "name"), "TEST"); assertEquals(node, cycleObject(FRANode.class, node)); node = new FRANode(Tenor.SIX_MONTHS, Tenor.NINE_MONTHS, ExternalId.of("convention", "name"), "TEST", null); assertEquals(node, cycleObject(FRANode.class, node)); node = new FRANode(Tenor.SIX_MONTHS, Tenor.NINE_MONTHS, ExternalId.of("convention", "name"), "TEST", "Name"); assertEquals(node, cycleObject(FRANode.class, node)); } @Test public void testFXForwardNodeBuilder() { FXForwardNode node = new FXForwardNode(Tenor.ONE_DAY, Tenor.TWO_YEARS, ExternalId.of("convention", "name"), Currency.USD, Currency.JPY, "TEST"); assertEquals(node, cycleObject(FXForwardNode.class, node)); node = new FXForwardNode(Tenor.ONE_DAY, Tenor.TWO_YEARS, ExternalId.of("convention", "name"), Currency.USD, Currency.JPY, "TEST", null); assertEquals(node, cycleObject(FXForwardNode.class, node)); node = new FXForwardNode(Tenor.ONE_DAY, Tenor.TWO_YEARS, ExternalId.of("convention", "name"), Currency.USD, Currency.JPY, "TEST", "Name"); assertEquals(node, cycleObject(FXForwardNode.class, node)); } @Test public void testIMMFRANodeBuilder() { RollDateFRANode node = new RollDateFRANode(Tenor.ONE_DAY, Tenor.ONE_MONTH, 4, 40, ExternalId.of("convention", "ibor"), "TEST"); assertEquals(node, cycleObject(RollDateFRANode.class, node)); node = new RollDateFRANode(Tenor.ONE_DAY, Tenor.ONE_MONTH, 4, 40, ExternalId.of("convention", "ibor"), "TEST", "name"); assertEquals(node, cycleObject(RollDateFRANode.class, node)); } @Test public void testIMMSwapNodeBuilder() { RollDateSwapNode node = new RollDateSwapNode(Tenor.ONE_DAY, 4, 40, ExternalId.of("convention", "swap"), "TEST"); assertEquals(node, cycleObject(RollDateSwapNode.class, node)); node = new RollDateSwapNode(Tenor.ONE_DAY, 4, 40, ExternalId.of("convention", "swap"), true, "TEST"); assertEquals(node, cycleObject(RollDateSwapNode.class, node)); node = new RollDateSwapNode(Tenor.ONE_DAY, 4, 40, ExternalId.of("convention", "swap"), "TEST", "name"); assertEquals(node, cycleObject(RollDateSwapNode.class, node)); node = new RollDateSwapNode(Tenor.ONE_DAY, 4, 40, ExternalId.of("convention", "swap"), true, "TEST", "name"); assertEquals(node, cycleObject(RollDateSwapNode.class, node)); } @Test public void testRateFutureNodeBuilder() { RateFutureNode node = new RateFutureNode(2, Tenor.ONE_DAY, Tenor.THREE_MONTHS, Tenor.ONE_MONTH, ExternalId.of("convention", "future"), "TEST"); assertEquals(node, cycleObject(RateFutureNode.class, node)); node = new RateFutureNode(2, Tenor.ONE_DAY, Tenor.THREE_MONTHS, Tenor.ONE_MONTH, ExternalId.of("convention", "future"), "TEST", null); assertEquals(node, cycleObject(RateFutureNode.class, node)); node = new RateFutureNode(2, Tenor.ONE_DAY, Tenor.THREE_MONTHS, Tenor.ONE_MONTH, ExternalId.of("convention", "future"), "TEST", "Name"); assertEquals(node, cycleObject(RateFutureNode.class, node)); } @Test public void testSwapNodeBuilder() { SwapNode node = new SwapNode(Tenor.ONE_DAY, Tenor.TEN_YEARS, ExternalId.of("convention", "pay"), ExternalId.of("convention", "receive"), "TEST"); assertEquals(node, cycleObject(SwapNode.class, node)); node = new SwapNode(Tenor.ONE_DAY, Tenor.TEN_YEARS, ExternalId.of("convention", "pay"), ExternalId.of("convention", "receive"), "TEST", null); assertEquals(node, cycleObject(SwapNode.class, node)); node = new SwapNode(Tenor.ONE_DAY, Tenor.TEN_YEARS, ExternalId.of("convention", "pay"), ExternalId.of("convention", "receive"), "TEST", "Name"); assertEquals(node, cycleObject(SwapNode.class, node)); node = new SwapNode(Tenor.ONE_DAY, Tenor.TEN_YEARS, ExternalId.of("convention", "pay"), ExternalId.of("convention", "receive"), false, "TEST"); assertEquals(node, cycleObject(SwapNode.class, node)); node = new SwapNode(Tenor.ONE_DAY, Tenor.TEN_YEARS, ExternalId.of("convention", "pay"), ExternalId.of("convention", "receive"), false, "TEST", null); assertEquals(node, cycleObject(SwapNode.class, node)); node = new SwapNode(Tenor.ONE_DAY, Tenor.TEN_YEARS, ExternalId.of("convention", "pay"), ExternalId.of("convention", "receive"), false, "TEST", "Name"); assertEquals(node, cycleObject(SwapNode.class, node)); } @Test public void testThreeLegBasisSwapNodeBuilder() { ThreeLegBasisSwapNode node = new ThreeLegBasisSwapNode(Tenor.ONE_DAY, Tenor.TEN_YEARS, ExternalId.of("convention", "pay"), ExternalId.of("convention", "receive"), ExternalId.of("convention", "spread"), "TEST"); assertEquals(node, cycleObject(ThreeLegBasisSwapNode.class, node)); node = new ThreeLegBasisSwapNode(Tenor.ONE_DAY, Tenor.TEN_YEARS, ExternalId.of("convention", "pay"), ExternalId.of("convention", "receive"), ExternalId.of("convention", "spread"), "TEST", null); assertEquals(node, cycleObject(ThreeLegBasisSwapNode.class, node)); node = new ThreeLegBasisSwapNode(Tenor.ONE_DAY, Tenor.TEN_YEARS, ExternalId.of("convention", "pay"), ExternalId.of("convention", "receive"), ExternalId.of("convention", "spread"), "TEST", "Name"); assertEquals(node, cycleObject(ThreeLegBasisSwapNode.class, node)); node = new ThreeLegBasisSwapNode(Tenor.ONE_DAY, Tenor.TEN_YEARS, ExternalId.of("convention", "pay"), ExternalId.of("convention", "receive"), ExternalId.of("convention", "spread"), false, "TEST"); assertEquals(node, cycleObject(ThreeLegBasisSwapNode.class, node)); node = new ThreeLegBasisSwapNode(Tenor.ONE_DAY, Tenor.TEN_YEARS, ExternalId.of("convention", "pay"), ExternalId.of("convention", "receive"), ExternalId.of("convention", "spread"), false, "TEST", null); assertEquals(node, cycleObject(ThreeLegBasisSwapNode.class, node)); node = new ThreeLegBasisSwapNode(Tenor.ONE_DAY, Tenor.TEN_YEARS, ExternalId.of("convention", "pay"), ExternalId.of("convention", "receive"), ExternalId.of("convention", "spread"), false, "TEST", "Name"); assertEquals(node, cycleObject(ThreeLegBasisSwapNode.class, node)); } @Test public void testZeroCouponInflationNodeBuilder() { ZeroCouponInflationNode node = new ZeroCouponInflationNode(Tenor.EIGHT_MONTHS, ExternalId.of("convention", "CPI"), ExternalId.of("convention", "Fixed"), InflationNodeType.MONTHLY, "TEST"); assertEquals(node, cycleObject(ZeroCouponInflationNode.class, node)); node = new ZeroCouponInflationNode(Tenor.EIGHT_MONTHS, ExternalId.of("convention", "CPI"), ExternalId.of("convention", "Fixed"), InflationNodeType.MONTHLY, "TEST", null); assertEquals(node, cycleObject(ZeroCouponInflationNode.class, node)); node = new ZeroCouponInflationNode(Tenor.EIGHT_MONTHS, ExternalId.of("convention", "CPI"), ExternalId.of("convention", "Fixed"), InflationNodeType.MONTHLY, "TEST", "Name"); assertEquals(node, cycleObject(ZeroCouponInflationNode.class, node)); } @Test public void testCurveNodeWithIdentifiers() { final CreditSpreadNode node = new CreditSpreadNode("TEST", Tenor.EIGHT_YEARS); final CurveNodeWithIdentifier nodeWithId = new CurveNodeWithIdentifier(node, ExternalSchemes.bloombergTickerSecurityId("AAA"), "Market_Close", DataFieldType.OUTRIGHT); assertEquals(nodeWithId, cycleObject(CurveNodeWithIdentifier.class, nodeWithId)); } @Test public void testCalendarSwapNode() { final CalendarSwapNode node = new CalendarSwapNode("ECB", Tenor.ONE_MONTH, 2, 3, ExternalId.of("id", "swap"), "mapper", "a name"); assertEquals(node, cycleObject(CalendarSwapNode.class, node)); final CalendarSwapNode node2 = new CalendarSwapNode("ECB", Tenor.ONE_MONTH, 2, 3, ExternalId.of("id", "swap"), "mapper"); assertEquals(node2, cycleObject(CalendarSwapNode.class, node2)); } }