@Override
    public Object evaluate(final ProcessingDTO processingDTO) {
        Number input = (Number) getFromPossibleSources(name, processingDTO)
                .orElse(mapMissingTo);
        if (input == null) {
            throw new KiePMMLException("Failed to retrieve input number for " + name);
        }
        return evaluate(input);
    }
@Test
    void evaluateWithExpectedValue() {
        KiePMMLNormContinuous kiePMMLNormContinuous = getKiePMMLNormContinuous(null, null, null);
        Number input = 24;
        Number retrieved = kiePMMLNormContinuous.evaluate(input);
        Number expected =
                kiePMMLNormContinuous.linearNorms.get(0).getNorm() +
                        ((input.doubleValue() - kiePMMLNormContinuous.linearNorms.get(0).getOrig()) / (kiePMMLNormContinuous.linearNorms.get(1).getOrig() - kiePMMLNormContinuous.linearNorms.get(0).getOrig()))
                                * (kiePMMLNormContinuous.linearNorms.get(1).getNorm() - kiePMMLNormContinuous.linearNorms.get(0).getNorm());
        assertThat(retrieved).isEqualTo(expected);
        input = 28;
        expected =
                kiePMMLNormContinuous.linearNorms.get(0).getNorm() +
                        ((input.doubleValue() - kiePMMLNormContinuous.linearNorms.get(0).getOrig()) / (kiePMMLNormContinuous.linearNorms.get(1).getOrig() - kiePMMLNormContinuous.linearNorms.get(0).getOrig()))
                                * (kiePMMLNormContinuous.linearNorms.get(1).getNorm() - kiePMMLNormContinuous.linearNorms.get(0).getNorm());
        retrieved = kiePMMLNormContinuous.evaluate(input);
        assertThat(retrieved).isEqualTo(expected);
        input = 30;
        retrieved = kiePMMLNormContinuous.evaluate(input);
        expected =
                kiePMMLNormContinuous.linearNorms.get(1).getNorm() +
                        ((input.doubleValue() - kiePMMLNormContinuous.linearNorms.get(1).getOrig()) / (kiePMMLNormContinuous.linearNorms.get(2).getOrig() - kiePMMLNormContinuous.linearNorms.get(1).getOrig()))
                                * (kiePMMLNormContinuous.linearNorms.get(2).getNorm() - kiePMMLNormContinuous.linearNorms.get(1).getNorm());
        assertThat(retrieved).isEqualTo(expected);
        input = 31;
        retrieved = kiePMMLNormContinuous.evaluate(input);
        expected =
                kiePMMLNormContinuous.linearNorms.get(1).getNorm() +
                        ((input.doubleValue() - kiePMMLNormContinuous.linearNorms.get(1).getOrig()) / (kiePMMLNormContinuous.linearNorms.get(2).getOrig() - kiePMMLNormContinuous.linearNorms.get(1).getOrig()))
                                * (kiePMMLNormContinuous.linearNorms.get(2).getNorm() - kiePMMLNormContinuous.linearNorms.get(1).getNorm());
        assertThat(retrieved).isEqualTo(expected);
        input = 36;
        retrieved = kiePMMLNormContinuous.evaluate(input);
        expected =
                kiePMMLNormContinuous.linearNorms.get(2).getNorm() +
                        ((input.doubleValue() - kiePMMLNormContinuous.linearNorms.get(2).getOrig()) / (kiePMMLNormContinuous.linearNorms.get(3).getOrig() - kiePMMLNormContinuous.linearNorms.get(2).getOrig()))
                                * (kiePMMLNormContinuous.linearNorms.get(3).getNorm() - kiePMMLNormContinuous.linearNorms.get(2).getNorm());
        assertThat(retrieved).isEqualTo(expected);
        input = 37;
        retrieved = kiePMMLNormContinuous.evaluate(input);
        expected =
                kiePMMLNormContinuous.linearNorms.get(2).getNorm() +
                        ((input.doubleValue() - kiePMMLNormContinuous.linearNorms.get(2).getOrig()) / (kiePMMLNormContinuous.linearNorms.get(3).getOrig() - kiePMMLNormContinuous.linearNorms.get(2).getOrig()))
                                * (kiePMMLNormContinuous.linearNorms.get(3).getNorm() - kiePMMLNormContinuous.linearNorms.get(2).getNorm());
        assertThat(retrieved).isEqualTo(expected);
        input = 40;
        retrieved = kiePMMLNormContinuous.evaluate(input);
        expected =
                kiePMMLNormContinuous.linearNorms.get(2).getNorm() +
                        ((input.doubleValue() - kiePMMLNormContinuous.linearNorms.get(2).getOrig()) / (kiePMMLNormContinuous.linearNorms.get(3).getOrig() - kiePMMLNormContinuous.linearNorms.get(2).getOrig()))
                                * (kiePMMLNormContinuous.linearNorms.get(3).getNorm() - kiePMMLNormContinuous.linearNorms.get(2).getNorm());
        assertThat(retrieved).isEqualTo(expected);
    }