public virtual void test_of()
        {
            ThreeLegBasisSwapTemplate test = ThreeLegBasisSwapTemplate.of(Period.ofMonths(3), TENOR_10Y, CONV);

            assertEquals(test.PeriodToStart, Period.ofMonths(3));
            assertEquals(test.Tenor, TENOR_10Y);
            assertEquals(test.Convention, CONV);
        }
        //-------------------------------------------------------------------------
        public virtual void test_of_spot()
        {
            ThreeLegBasisSwapTemplate test = ThreeLegBasisSwapTemplate.of(TENOR_10Y, CONV);

            assertEquals(test.PeriodToStart, Period.ZERO);
            assertEquals(test.Tenor, TENOR_10Y);
            assertEquals(test.Convention, CONV);
        }
        //-------------------------------------------------------------------------
        public virtual void coverage()
        {
            ThreeLegBasisSwapTemplate test = ThreeLegBasisSwapTemplate.of(Period.ofMonths(3), TENOR_10Y, CONV);

            coverImmutableBean(test);
            ThreeLegBasisSwapTemplate test2 = ThreeLegBasisSwapTemplate.of(Period.ofMonths(2), TENOR_2Y, CONV2);

            coverBeanEquals(test, test2);
        }
        //-------------------------------------------------------------------------
        public virtual void test_createTrade()
        {
            ThreeLegBasisSwapTemplate @base = ThreeLegBasisSwapTemplate.of(Period.ofMonths(3), TENOR_10Y, CONV);
            LocalDate tradeDate             = LocalDate.of(2015, 5, 5);
            LocalDate startDate             = date(2015, 8, 7);
            LocalDate endDate  = date(2025, 8, 7);
            SwapTrade test     = @base.createTrade(tradeDate, BUY, NOTIONAL_2M, 0.25d, REF_DATA);
            Swap      expected = Swap.of(FIXED.toLeg(startDate, endDate, PAY, NOTIONAL_2M, 0.25d), IBOR3M.toLeg(startDate, endDate, PAY, NOTIONAL_2M), IBOR6M.toLeg(startDate, endDate, RECEIVE, NOTIONAL_2M));

            assertEquals(test.Info.TradeDate, tradeDate);
            assertEquals(test.Product, expected);
        }
 public override bool Equals(object obj)
 {
     if (obj == this)
     {
         return(true);
     }
     if (obj != null && obj.GetType() == this.GetType())
     {
         ThreeLegBasisSwapTemplate other = (ThreeLegBasisSwapTemplate)obj;
         return(JodaBeanUtils.equal(periodToStart, other.periodToStart) && JodaBeanUtils.equal(tenor, other.tenor) && JodaBeanUtils.equal(convention, other.convention));
     }
     return(false);
 }
 //-------------------------------------------------------------------------
 public virtual void test_builder_notEnoughData()
 {
     assertThrowsIllegalArg(() => ThreeLegBasisSwapTemplate.builder().tenor(TENOR_2Y).build());
 }
        public virtual void test_serialization()
        {
            ThreeLegBasisSwapTemplate test = ThreeLegBasisSwapTemplate.of(Period.ofMonths(3), TENOR_10Y, CONV);

            assertSerialization(test);
        }
 /// <summary>
 /// Creates a template based on the specified period, tenor and convention.
 /// <para>
 /// The period from the spot date to the start date is specified.
 ///
 /// </para>
 /// </summary>
 /// <param name="periodToStart">  the period between the spot date and the start date </param>
 /// <param name="tenor">  the tenor of the swap </param>
 /// <param name="convention">  the market convention </param>
 /// <returns> the template </returns>
 public static ThreeLegBasisSwapTemplate of(Period periodToStart, Tenor tenor, ThreeLegBasisSwapConvention convention)
 {
     return(ThreeLegBasisSwapTemplate.builder().periodToStart(periodToStart).tenor(tenor).convention(convention).build());
 }