@ImmutableConstructor private ParameterizedFunctionalCurve( CurveMetadata metadata, DoubleArray parameters, BiFunction<DoubleArray, Double, Double> valueFunction, BiFunction<DoubleArray, Double, Double> derivativeFunction, BiFunction<DoubleArray, Double, DoubleArray> sensitivityFunction) { JodaBeanUtils.notNull(metadata, "metadata"); JodaBeanUtils.notNull(parameters, "parameters"); JodaBeanUtils.notNull(valueFunction, "valueFunction"); JodaBeanUtils.notNull(derivativeFunction, "derivativeFunction"); JodaBeanUtils.notNull(sensitivityFunction, "sensitivityFunction"); this.metadata = metadata; this.parameters = parameters; this.valueFunction = valueFunction; this.derivativeFunction = derivativeFunction; this.sensitivityFunction = sensitivityFunction; this.parameterMetadata = IntStream.range(0, getParameterCount()) .mapToObj(i -> getParameterMetadata(i)) .collect(toImmutableList()); }
public void test_of() { ParameterizedFunctionalCurve test = ParameterizedFunctionalCurve.of( METADATA, PARAMETERS, VALUE_FUNCTION, DERIVATIVE_FUNCTION, SENSITIVITY_FUNCTION); assertEquals(test.getValueFunction(), VALUE_FUNCTION); assertEquals(test.getDerivativeFunction(), DERIVATIVE_FUNCTION); assertEquals(test.getSensitivityFunction(), SENSITIVITY_FUNCTION); assertEquals(test.getMetadata(), METADATA); assertEquals(test.getName(), METADATA.getCurveName()); assertEquals(test.getParameter(2), PARAMETERS.get(2)); assertEquals(test.getParameterCount(), PARAMETERS.size()); assertEquals(test.getParameterMetadata(1), METADATA.getParameterMetadata(1)); assertEquals(test.getParameters(), PARAMETERS); }