notionalSchedule.getFxReset().map(calc -> calc.resolve(refData)).orElse((i, p) -> Optional.empty());
public void test_resolve_initial_notional_override() { FxResetCalculation base = FxResetCalculation.builder() .index(EUR_GBP_ECB) .referenceCurrency(GBP) .fixingDateOffset(MINUS_TWO_DAYS) .initialNotionalValue(100000d) .build(); Optional<FxReset> fxResetFirstPeriod = base.resolve(REF_DATA).apply(0, SchedulePeriod.of(DATE_2014_03_31, DATE_2014_06_30)); assertFalse(fxResetFirstPeriod.isPresent()); Optional<FxReset> fxResetSecondPeriod = base.resolve(REF_DATA).apply(1, SchedulePeriod.of(DATE_2014_03_31, DATE_2014_06_30)); assertTrue(fxResetSecondPeriod.isPresent()); }
public void test_resolve_beforeStart_weekend() { FxResetCalculation base = FxResetCalculation.builder() .index(EUR_GBP_ECB) .referenceCurrency(GBP) .fixingDateOffset(MINUS_TWO_DAYS) .build(); Optional<FxReset> test = base.resolve(REF_DATA).apply(0, SchedulePeriod.of(DATE_2014_03_31, DATE_2014_06_30)); assertEquals(test, Optional.of(FxReset.of(FxIndexObservation.of(EUR_GBP_ECB, date(2014, 3, 27), REF_DATA), GBP))); }
public void test_resolve_beforeStart_threeDays() { FxResetCalculation base = FxResetCalculation.builder() .index(EUR_GBP_ECB) .referenceCurrency(GBP) .fixingDateOffset(MINUS_THREE_DAYS) .build(); Optional<FxReset> test = base.resolve(REF_DATA).apply(0, SchedulePeriod.of(DATE_2014_03_31, DATE_2014_06_30)); assertEquals(test, Optional.of(FxReset.of(FxIndexObservation.of(EUR_GBP_ECB, date(2014, 3, 26), REF_DATA), GBP))); }
public void test_resolve_beforeEnd_weekend() { FxResetCalculation base = FxResetCalculation.builder() .index(EUR_GBP_ECB) .referenceCurrency(GBP) .fixingDateOffset(MINUS_TWO_DAYS) .fixingRelativeTo(FxResetFixingRelativeTo.PERIOD_END) .build(); Optional<FxReset> test = base.resolve(REF_DATA).apply(0, SchedulePeriod.of(DATE_2014_03_31, DATE_2014_06_30)); assertEquals(test, Optional.of(FxReset.of(FxIndexObservation.of(EUR_GBP_ECB, date(2014, 6, 26), REF_DATA), GBP))); }