@Override public ConstantNodalCurve withPerturbation(ParameterPerturbation perturbation) { double perturbedValue = perturbation.perturbParameter(0, yValue, getParameterMetadata(0)); return new ConstantNodalCurve(metadata, xValue, perturbedValue); }
@ImmutableConstructor private ConstantNodalCurve( CurveMetadata metadata, double xValue, double yValue) { JodaBeanUtils.notNull(metadata, "metadata"); metadata.getParameterMetadata().ifPresent(params -> { if (params.size() != 1) { throw new IllegalArgumentException("Length of parameter metadata must be 1"); } }); this.metadata = metadata; this.xValue = xValue; this.yValue = yValue; this.parameterMetadata = ImmutableList.of(getParameterMetadata(0)); }
public void test_of_noCurveMetadata() { ConstantNodalCurve test = ConstantNodalCurve.of(METADATA_NOPARAM, XVALUE, YVALUE); assertThat(test.getName()).isEqualTo(CURVE_NAME); assertThat(test.getParameterCount()).isEqualTo(SIZE); assertThat(test.getParameter(0)).isEqualTo(YVALUE); assertThat(test.getParameterMetadata(0)).isEqualTo(SimpleCurveParameterMetadata.of(ValueType.YEAR_FRACTION, XVALUE)); }
public void test_withNode() { ConstantNodalCurve base = ConstantNodalCurve.of(METADATA_ENTRIES, XVALUE, YVALUE); SimpleCurveParameterMetadata param = SimpleCurveParameterMetadata.of(ValueType.YEAR_FRACTION, XVALUE); ConstantNodalCurve test = base.withNode(XVALUE, 2d, param); assertThat(test.getXValue()).isEqualTo(XVALUE); assertThat(test.getYValue()).isEqualTo(2d); assertThat(test.getParameterMetadata(0)).isEqualTo(param); }
public void test_of_CurveMetadata() { ConstantNodalCurve test = ConstantNodalCurve.of(METADATA_ENTRIES, XVALUE, YVALUE); ConstantNodalCurve testRe = ConstantNodalCurve.of(METADATA_ENTRIES, XVALUE, YVALUE); assertThat(test).isEqualTo(testRe); assertThat(test.getName()).isEqualTo(CURVE_NAME); assertThat(test.getParameterCount()).isEqualTo(SIZE); assertThat(test.getParameter(0)).isEqualTo(YVALUE); assertThrowsIllegalArg(() -> test.getParameter(1)); assertThat(test.getParameterMetadata(0)).isSameAs(METADATA_ENTRIES.getParameterMetadata().get().get(0)); assertThat(test.withParameter(0, 2d)).isEqualTo(ConstantNodalCurve.of(METADATA_ENTRIES, XVALUE, 2d)); assertThrowsIllegalArg(() -> test.withParameter(1, 2d)); assertThat(test.withPerturbation((i, v, m) -> v - 2d)).isEqualTo( ConstantNodalCurve.of(METADATA_ENTRIES, XVALUE, YVALUE_BUMPED)); assertThat(test.getMetadata()).isEqualTo(METADATA_ENTRIES); assertThat(test.getXValues()).isEqualTo(XVALUE_ARRAY); assertThat(test.getYValues()).isEqualTo(YVALUE_ARRAY); }