public void test_merge_size1_stub() { Schedule test = Schedule.builder() .periods(ImmutableList.of(P1_STUB)) .frequency(P1M) .rollConvention(DAY_17) .build(); assertEquals(test.mergeRegular(2, true), test); assertEquals(test.mergeRegular(2, false), test); assertEquals(test.merge(2, P1_STUB.getUnadjustedStartDate(), P1_STUB.getUnadjustedEndDate()), test); assertEquals(test.merge(2, P1_STUB.getStartDate(), P1_STUB.getEndDate()), test); }
public void test_merge_groupSizeOneNoChange() { Schedule test = Schedule.builder() .periods(ImmutableList.of(P2_NORMAL, P3_NORMAL, P4_NORMAL, P5_NORMAL, P6_NORMAL)) .frequency(P1M) .rollConvention(DAY_17) .build(); assertEquals(test.mergeRegular(1, true), test); assertEquals(test.mergeRegular(1, false), test); assertEquals(test.merge(1, P2_NORMAL.getUnadjustedStartDate(), P6_NORMAL.getUnadjustedEndDate()), test); assertEquals(test.merge(1, P2_NORMAL.getStartDate(), P6_NORMAL.getEndDate()), test); }
public void test_isEndOfMonthConvention_eom() { // schedule doesn't make sense, but test only requires roll convention of EOM Schedule test = Schedule.builder() .periods(ImmutableList.of(P2_NORMAL, P3_NORMAL)) .frequency(P1M) .rollConvention(RollConventions.EOM) .build(); assertEquals(test.isEndOfMonthConvention(), true); }
public void test_createSchedule_firstAndLastDate() { PaymentSchedule test = PaymentSchedule.builder() .paymentFrequency(P3M) .paymentDateOffset(DaysAdjustment.ofBusinessDays(2, GBLO)) .firstRegularStartDate(DATE_01_06) .lastRegularEndDate(DATE_04_07) .build(); Schedule schedule = test.createSchedule(ACCRUAL_SCHEDULE, REF_DATA); Schedule expected = Schedule.builder() .periods(SchedulePeriod.of(DATE_01_06, DATE_04_07, DATE_01_05, DATE_04_05)) .frequency(P3M) .rollConvention(DAY_5) .build(); assertEquals(schedule, expected); }
public void test_createSchedule_partMergeForwards() { PaymentSchedule test = PaymentSchedule.builder() .paymentFrequency(P2M) .paymentDateOffset(DaysAdjustment.ofBusinessDays(2, GBLO)) .build(); Schedule schedule = test.createSchedule(ACCRUAL_SCHEDULE, REF_DATA); Schedule expected = Schedule.builder() .periods( SchedulePeriod.of(DATE_01_06, DATE_03_05, DATE_01_05, DATE_03_05), SchedulePeriod.of(DATE_03_05, DATE_04_07, DATE_03_05, DATE_04_05)) .frequency(P2M) .rollConvention(DAY_5) .build(); assertEquals(schedule, expected); }
public void test_createSchedule_lastDate() { PaymentSchedule test = PaymentSchedule.builder() .paymentFrequency(P3M) .paymentDateOffset(DaysAdjustment.ofBusinessDays(2, GBLO)) .lastRegularEndDate(DATE_04_05) .build(); Schedule schedule = test.createSchedule(ACCRUAL_SCHEDULE, REF_DATA); Schedule expected = Schedule.builder() .periods(SchedulePeriod.of(DATE_01_06, DATE_04_07, DATE_01_05, DATE_04_05)) .frequency(P3M) .rollConvention(DAY_5) .build(); assertEquals(schedule, expected); }
public void test_createSchedule_firstDate() { PaymentSchedule test = PaymentSchedule.builder() .paymentFrequency(P3M) .paymentDateOffset(DaysAdjustment.ofBusinessDays(2, GBLO)) .firstRegularStartDate(DATE_01_06) .build(); Schedule schedule = test.createSchedule(ACCRUAL_SCHEDULE, REF_DATA); Schedule expected = Schedule.builder() .periods(SchedulePeriod.of(DATE_01_06, DATE_04_07, DATE_01_05, DATE_04_05)) .frequency(P3M) .rollConvention(DAY_5) .build(); assertEquals(schedule, expected); }
public void test_merge_group2_within6_includeFinalStub() { Schedule test = Schedule.builder() .periods(ImmutableList.of(P1_STUB, P2_NORMAL, P3_NORMAL, P4_STUB)) .frequency(P1M) .rollConvention(DAY_17) .build(); Schedule expected = Schedule.builder() .periods(ImmutableList.of(P1_2, P3_4STUB)) .frequency(P2M) .rollConvention(DAY_17) .build(); assertEquals(test.merge(2, P1_STUB.getUnadjustedStartDate(), P2_NORMAL.getUnadjustedEndDate()), expected); assertEquals(test.merge(2, P1_STUB.getStartDate(), P2_NORMAL.getEndDate()), expected); }
public void test_merge_group2_within6_includeInitialStub() { Schedule test = Schedule.builder() .periods(ImmutableList.of(P1_STUB, P2_NORMAL, P3_NORMAL, P4_NORMAL, P5_NORMAL, P6_NORMAL)) .frequency(P1M) .rollConvention(DAY_17) .build(); Schedule expected = Schedule.builder() .periods(ImmutableList.of(P1_2, P3_4, P5_6)) .frequency(P2M) .rollConvention(DAY_17) .build(); assertEquals(test.merge(2, P3_NORMAL.getUnadjustedStartDate(), P6_NORMAL.getUnadjustedEndDate()), expected); assertEquals(test.merge(2, P3_NORMAL.getStartDate(), P6_NORMAL.getEndDate()), expected); }
public void test_getPeriodEndDate() { // schedule doesn't make sense, but test only requires roll convention of EOM Schedule test = Schedule.builder() .periods(ImmutableList.of(P2_NORMAL, P3_NORMAL)) .frequency(P1M) .rollConvention(DAY_17) .build(); assertEquals(test.getPeriodEndDate(P2_NORMAL.getStartDate()), P2_NORMAL.getEndDate()); assertEquals(test.getPeriodEndDate(P2_NORMAL.getStartDate().plusDays(1)), P2_NORMAL.getEndDate()); assertEquals(test.getPeriodEndDate(P3_NORMAL.getStartDate()), P3_NORMAL.getEndDate()); assertEquals(test.getPeriodEndDate(P3_NORMAL.getStartDate().plusDays(1)), P3_NORMAL.getEndDate()); assertThrowsIllegalArg(() -> test.getPeriodEndDate(P2_NORMAL.getStartDate().minusDays(1))); }
public void test_createSchedule_fullMerge() { PaymentSchedule test = PaymentSchedule.builder() .paymentFrequency(P3M) .paymentDateOffset(DaysAdjustment.ofBusinessDays(2, GBLO)) .build(); Schedule schedule = test.createSchedule(ACCRUAL_SCHEDULE, REF_DATA); Schedule expected = Schedule.builder() .periods(SchedulePeriod.of(DATE_01_06, DATE_04_07, DATE_01_05, DATE_04_05)) .frequency(P3M) .rollConvention(DAY_5) .build(); assertEquals(schedule, expected); }
public void test_merge_groupSizeInvalid() { Schedule test = Schedule.builder() .periods(ImmutableList.of(P2_NORMAL, P3_NORMAL, P4_NORMAL, P5_NORMAL, P6_NORMAL)) .frequency(P1M) .rollConvention(DAY_17) .build(); assertThrowsIllegalArg(() -> test.mergeRegular(0, true)); assertThrowsIllegalArg(() -> test.mergeRegular(0, false)); assertThrowsIllegalArg(() -> test.mergeRegular(-1, true)); assertThrowsIllegalArg(() -> test.mergeRegular(-1, false)); assertThrowsIllegalArg(() -> test.merge(0, P2_NORMAL.getUnadjustedStartDate(), P6_NORMAL.getUnadjustedEndDate())); assertThrowsIllegalArg(() -> test.merge(-1, P2_NORMAL.getUnadjustedStartDate(), P6_NORMAL.getUnadjustedEndDate())); }
public void test_merge_badGroupSize() { Schedule test = Schedule.builder() .periods(ImmutableList.of(P2_NORMAL, P3_NORMAL, P4_NORMAL, P5_NORMAL, P6_NORMAL)) .frequency(P1M) .rollConvention(DAY_17) .build(); assertThrows( () -> test.merge(2, P2_NORMAL.getUnadjustedStartDate(), P6_NORMAL.getUnadjustedEndDate()), ScheduleException.class, "Unable to merge schedule, firstRegularStartDate " + P2_NORMAL.getUnadjustedStartDate() + " and lastRegularEndDate " + P6_NORMAL.getUnadjustedEndDate() + " cannot be used to create regular periods of frequency 'P2M'"); }
public void test_serialization() { Schedule test = Schedule.builder() .periods(ImmutableList.of(P1_STUB, P2_NORMAL)) .frequency(P1M) .rollConvention(DAY_17) .build(); assertSerialization(test); }
public void test_mergeToTerm_size1_stub() { Schedule test = Schedule.builder() .periods(ImmutableList.of(P1_STUB)) .frequency(P1M) .rollConvention(DAY_17) .build(); assertEquals(test.mergeToTerm(), Schedule.ofTerm(P1_STUB)); }
public void coverage_builder() { Schedule.Builder builder = Schedule.builder(); builder .periods(P1_STUB) .frequency(P1M) .rollConvention(DAY_17) .build(); }
public void test_mergeToTerm() { Schedule testNormal = Schedule.builder() .periods(ImmutableList.of(P1_STUB, P2_NORMAL, P3_NORMAL)) .frequency(P1M) .rollConvention(DAY_17) .build(); assertEquals(testNormal.mergeToTerm(), Schedule.ofTerm(P1_3)); assertEquals(testNormal.mergeToTerm().mergeToTerm(), Schedule.ofTerm(P1_3)); }
public void test_createSchedule_dualStub() { PaymentSchedule test = PaymentSchedule.builder() .paymentFrequency(P2M) .paymentDateOffset(DaysAdjustment.ofBusinessDays(2, GBLO)) .build(); Schedule schedule = test.createSchedule(ACCRUAL_SCHEDULE_STUBS, REF_DATA); assertEquals(schedule, ACCRUAL_SCHEDULE_STUBS.toBuilder().frequency(P2M).build()); }
public void coverage() { Schedule test = Schedule.builder() .periods(ImmutableList.of(P1_STUB, P2_NORMAL)) .frequency(P1M) .rollConvention(DAY_17) .build(); coverImmutableBean(test); }
public void test_merge_badDate() { Schedule test = Schedule.builder() .periods(ImmutableList.of(P2_NORMAL, P3_NORMAL, P4_NORMAL, P5_NORMAL, P6_NORMAL)) .frequency(P1M) .rollConvention(DAY_17) .build(); assertThrows(() -> test.merge(2, JUL_03, AUG_17), ScheduleException.class); assertThrows(() -> test.merge(2, JUL_17, SEP_30), ScheduleException.class); }