/** * Tests that executing a function that returns a success result returns the underlying result * without wrapping it. */ public void executeSuccessResultValue() { SupplierFunction<Result<String>> fn = SupplierFunction.of(() -> Result.success("foo")); CalculationTask task = new CalculationTask(TARGET, 0, 0, fn, MAPPINGS, REPORTING_RULES); CalculationEnvironment marketData = CalculationEnvironment.builder().valuationDate(date(2011, 3, 8)).build(); CalculationResult calculationResult = task.execute(marketData); Result<?> result = calculationResult.getResult(); assertThat(result).hasValue("foo"); }
/** * Tests that executing a function that returns a failure result returns the underlying result * without wrapping it. */ public void executeFailureResultValue() { SupplierFunction<Result<String>> fn = SupplierFunction.of(() -> Result.failure(FailureReason.NOT_APPLICABLE, "bar")); CalculationTask task = new CalculationTask(TARGET, 0, 0, fn, MAPPINGS, REPORTING_RULES); CalculationEnvironment marketData = CalculationEnvironment.builder().valuationDate(date(2011, 3, 8)).build(); CalculationResult calculationResult = task.execute(marketData); Result<?> result = calculationResult.getResult(); assertThat(result).isFailure(FailureReason.NOT_APPLICABLE).hasFailureMessageMatching("bar"); }
/** * Tests that executing a function that throws an exception wraps the exception in a failure * result. */ public void executeException() { SupplierFunction<String> fn = SupplierFunction.of( () -> { throw new IllegalArgumentException("foo"); }); CalculationTask task = new CalculationTask(TARGET, 0, 0, fn, MAPPINGS, REPORTING_RULES); CalculationEnvironment marketData = CalculationEnvironment.builder().valuationDate(date(2011, 3, 8)).build(); CalculationResult calculationResult = task.execute(marketData); Result<?> result = calculationResult.getResult(); assertThat(result).isFailure(FailureReason.ERROR).hasFailureMessageMatching("foo"); }