public void test_serialization() { assertSerialization(ValueAdjustment.ofReplace(200)); }
public void coverage() { coverImmutableBean(ValueAdjustment.ofReplace(200)); }
public void equals() { ValueAdjustment a1 = ValueAdjustment.ofReplace(200); ValueAdjustment a2 = ValueAdjustment.ofReplace(200); ValueAdjustment b = ValueAdjustment.ofDeltaMultiplier(200); ValueAdjustment c = ValueAdjustment.ofDeltaMultiplier(0.1); assertEquals(a1.equals(a2), true); assertEquals(a1.equals(b), false); assertEquals(a1.equals(c), false); }
public void test_ofReplace() { ValueAdjustment test = ValueAdjustment.ofReplace(200); assertEquals(test.getModifyingValue(), 200, TOLERANCE); assertEquals(test.getType(), ValueAdjustmentType.REPLACE); assertEquals(test.adjust(100), 200, TOLERANCE); assertEquals(test.toString(), "ValueAdjustment[result = 200.0]"); }
private ValueSchedule parseSchedule(XmlElement scheduleEl, double initialValue, ValueStepSequence seq, FpmlDocument document) { List<XmlElement> stepEls = scheduleEl.getChildren("step"); ImmutableList.Builder<ValueStep> stepBuilder = ImmutableList.builder(); for (XmlElement stepEl : stepEls) { LocalDate stepDate = document.parseDate(stepEl.getChild("stepDate")); double stepValue = document.parseDecimal(stepEl.getChild("stepValue")); stepBuilder.add(ValueStep.of(stepDate, ValueAdjustment.ofReplace(stepValue))); } return ValueSchedule.builder().initialValue(initialValue).steps(stepBuilder.build()).stepSequence(seq).build(); }
public void test_resolveValues_indexBased_duplicateDefinitionValid() { ValueStep step1 = ValueStep.of(1, ValueAdjustment.ofReplace(300d)); ValueStep step2 = ValueStep.of(1, ValueAdjustment.ofReplace(300d)); ValueSchedule test = ValueSchedule.of(200d, ImmutableList.of(step1, step2)); assertEquals(test.resolveValues(SCHEDULE), DoubleArray.of(200d, 300d, 300d)); }
public void test_resolveValues_indexBased_duplicateDefinitionInvalid() { ValueStep step1 = ValueStep.of(1, ValueAdjustment.ofReplace(300d)); ValueStep step2 = ValueStep.of(1, ValueAdjustment.ofReplace(400d)); ValueSchedule test = ValueSchedule.of(200d, ImmutableList.of(step1, step2)); assertThrowsIllegalArg(() -> test.resolveValues(SCHEDULE)); }
public void test_resolve() { ValueStepSequence test = ValueStepSequence.of(date(2016, 4, 20), date(2016, 10, 20), Frequency.P3M, ADJ); ValueStep baseStep = ValueStep.of(date(2016, 1, 20), ValueAdjustment.ofReplace(500d)); List<ValueStep> steps = test.resolve(ImmutableList.of(baseStep), RollConventions.NONE); assertEquals(steps.size(), 4); assertEquals(steps.get(0), baseStep); assertEquals(steps.get(1), ValueStep.of(date(2016, 4, 20), ADJ)); assertEquals(steps.get(2), ValueStep.of(date(2016, 7, 20), ADJ)); assertEquals(steps.get(3), ValueStep.of(date(2016, 10, 20), ADJ)); }
public void test_of_CurrencyAndValueSchedule() { ValueSchedule valueSchedule = ValueSchedule.of(1000d, ValueStep.of(1, ValueAdjustment.ofReplace(2000d))); NotionalSchedule test = NotionalSchedule.of(GBP, valueSchedule); assertEquals(test.getCurrency(), GBP); assertEquals(test.getAmount(), valueSchedule); assertEquals(test.getFxReset(), Optional.empty()); assertEquals(test.isInitialExchange(), false); assertEquals(test.isIntermediateExchange(), false); assertEquals(test.isFinalExchange(), false); }
public void test_resolveValues_dateBased_indexZeroValid() { ValueStep step = ValueStep.of(date(2014, 1, 1), ValueAdjustment.ofReplace(300d)); ValueSchedule test = ValueSchedule.of(200d, ImmutableList.of(step)); assertEquals(test.resolveValues(SCHEDULE), DoubleArray.of(300d, 300d, 300d)); }
public void test_resolveValues_indexBased_indexTooBig() { ValueStep step = ValueStep.of(3, ValueAdjustment.ofReplace(300d)); ValueSchedule test = ValueSchedule.of(200d, ImmutableList.of(step)); assertThrowsIllegalArg(() -> test.resolveValues(SCHEDULE)); }
public void test_resolveValues_dateBased_invalidChangeValue() { ValueStep step = ValueStep.of(date(2014, 4, 1), ValueAdjustment.ofReplace(300d)); ValueSchedule test = ValueSchedule.of(200d, ImmutableList.of(step)); assertThrowsIllegalArg(() -> test.resolveValues(SCHEDULE), "ValueStep date does not match a period boundary.*"); }
public void test_resolveValues_dateBased_invalidDateBefore() { ValueStep step = ValueStep.of(date(2013, 12, 31), ValueAdjustment.ofReplace(300d)); ValueSchedule test = ValueSchedule.of(200d, ImmutableList.of(step)); assertThrowsIllegalArg(() -> test.resolveValues(SCHEDULE), "ValueStep date is before the start of the schedule.*"); }
public void test_resolveValues_dateBased_invalidDateAfter() { ValueStep step = ValueStep.of(date(2014, 4, 3), ValueAdjustment.ofReplace(300d)); ValueSchedule test = ValueSchedule.of(200d, ImmutableList.of(step)); assertThrowsIllegalArg(() -> test.resolveValues(SCHEDULE), "ValueStep date is after the end of the schedule.*"); }
public void test_resolveValues_dateBased() { ValueStep step1 = ValueStep.of(date(2014, 2, 1), ValueAdjustment.ofReplace(300d)); ValueStep step2 = ValueStep.of(date(2014, 3, 1), ValueAdjustment.ofReplace(400d)); // no steps ValueSchedule test0 = ValueSchedule.of(200d, ImmutableList.of()); assertEquals(test0.resolveValues(SCHEDULE), DoubleArray.of(200d, 200d, 200d)); // step1 ValueSchedule test1a = ValueSchedule.of(200d, ImmutableList.of(step1)); assertEquals(test1a.resolveValues(SCHEDULE), DoubleArray.of(200d, 300d, 300d)); // step2 ValueSchedule test1b = ValueSchedule.of(200d, ImmutableList.of(step2)); assertEquals(test1b.resolveValues(SCHEDULE), DoubleArray.of(200d, 200d, 400d)); // step1 and step2 ValueSchedule test2 = ValueSchedule.of(200d, ImmutableList.of(step1, step2)); assertEquals(test2.resolveValues(SCHEDULE), DoubleArray.of(200d, 300d, 400d)); }
public void test_resolveValues_dateBased_ignoreExcess() { ValueStep step1 = ValueStep.of(date(2014, 2, 1), ValueAdjustment.ofReplace(300d)); ValueStep step2 = ValueStep.of(date(2014, 2, 15), ValueAdjustment.ofReplace(300d)); // no change to value ValueStep step3 = ValueStep.of(date(2014, 3, 1), ValueAdjustment.ofReplace(400d)); ValueStep step4 = ValueStep.of(date(2014, 3, 15), ValueAdjustment.ofDeltaAmount(0d)); // no change to value ValueStep step5 = ValueStep.of(date(2014, 4, 1), ValueAdjustment.ofMultiplier(1d)); ValueSchedule test = ValueSchedule.of(200d, ImmutableList.of(step1, step2, step3, step4, step5)); assertEquals(test.resolveValues(SCHEDULE), DoubleArray.of(200d, 300d, 400d)); }
public void test_resolveValues_dateBased_matchAdjusted() { ValueStep step1 = ValueStep.of(date(2014, 2, 1), ValueAdjustment.ofReplace(300d)); ValueStep step2 = ValueStep.of(date(2014, 3, 2), ValueAdjustment.ofReplace(400d)); // no steps ValueSchedule test0 = ValueSchedule.of(200d, ImmutableList.of()); assertEquals(test0.resolveValues(SCHEDULE), DoubleArray.of(200d, 200d, 200d)); // step1 ValueSchedule test1a = ValueSchedule.of(200d, ImmutableList.of(step1)); assertEquals(test1a.resolveValues(SCHEDULE), DoubleArray.of(200d, 300d, 300d)); // step2 ValueSchedule test1b = ValueSchedule.of(200d, ImmutableList.of(step2)); assertEquals(test1b.resolveValues(SCHEDULE), DoubleArray.of(200d, 200d, 400d)); // step1 and step2 ValueSchedule test2 = ValueSchedule.of(200d, ImmutableList.of(step1, step2)); assertEquals(test2.resolveValues(SCHEDULE), DoubleArray.of(200d, 300d, 400d)); }
public void test_resolve_invalid() { ValueStepSequence test = ValueStepSequence.of(date(2016, 4, 20), date(2016, 10, 20), Frequency.P12M, ADJ); ValueStep baseStep = ValueStep.of(date(2016, 1, 20), ValueAdjustment.ofReplace(500d)); assertThrowsIllegalArg(() -> test.resolve(ImmutableList.of(baseStep), RollConventions.NONE)); }
public void test_resolveValues_sequenceAndSteps() { ValueStepSequence seq = ValueStepSequence.of( date(2014, 2, 1), date(2014, 3, 1), Frequency.P1M, ValueAdjustment.ofDeltaAmount(100)); ValueStep step1 = ValueStep.of(date(2014, 1, 1), ValueAdjustment.ofReplace(350d)); ValueSchedule test = ValueSchedule.builder().initialValue(200d).steps(step1).stepSequence(seq).build(); assertEquals(test.resolveValues(SCHEDULE), DoubleArray.of(350d, 450d, 550d)); }
public void test_resolveValues_sequenceAndStepClash() { ValueStepSequence seq = ValueStepSequence.of( date(2014, 2, 1), date(2014, 3, 1), Frequency.P1M, ValueAdjustment.ofDeltaAmount(100)); ValueStep step1 = ValueStep.of(date(2014, 2, 1), ValueAdjustment.ofReplace(350d)); ValueSchedule test = ValueSchedule.builder().initialValue(200d).steps(step1).stepSequence(seq).build(); assertThrowsIllegalArg(() -> test.resolveValues(SCHEDULE)); }