@Override protected Object propertyGet(Bean bean, String propertyName, boolean quiet) { switch (propertyName.hashCode()) { case 111972721: // value return ((ValueWithFailures<?>) bean).getValue(); case 675938345: // failures return ((ValueWithFailures<?>) bean).getFailures(); } return super.propertyGet(bean, propertyName, quiet); }
public void test_flatMap() { ValueWithFailures<List<String>> base = ValueWithFailures.of(ImmutableList.of("1", "a", "2"), ImmutableList.of(FAILURE1)); ValueWithFailures<List<Integer>> test = base.flatMap(this::flatMapFunction); assertEquals(test.getValue(), ImmutableList.of(Integer.valueOf(1), Integer.valueOf(2))); assertEquals(test.getFailures().size(), 2); assertEquals(test.getFailures().get(0), FAILURE1); assertEquals(test.getFailures().get(1).getReason(), FailureReason.INVALID); }
@Test public void test_combining() { ValueWithFailures<List<String>> base = ValueWithFailures.of(ImmutableList.of("a"), ImmutableList.of(FAILURE1)); ValueWithFailures<List<String>> other = ValueWithFailures.of(ImmutableList.of("b", "c"), ImmutableList.of(FAILURE2)); ValueWithFailures<List<String>> test = Stream.of(base, other) .reduce(ValueWithFailures.combiningValues(Guavate::concatToList)) .get(); assertEquals(test.getValue(), ImmutableList.of("a", "b", "c")); assertEquals(test.getFailures(), ImmutableList.of(FAILURE1, FAILURE2)); }
public void test_map() { ValueWithFailures<List<String>> base = ValueWithFailures.of(ImmutableList.of("1", "2"), ImmutableList.of(FAILURE1)); ValueWithFailures<List<Integer>> test = base.map(list -> list.stream().map(s -> Integer.valueOf(s)).collect(toImmutableList())); assertEquals(test.getValue(), ImmutableList.of(Integer.valueOf(1), Integer.valueOf(2))); assertEquals(test.getFailures(), ImmutableList.of(FAILURE1)); }
public void test_load_filtered() { TradeCsvLoader test = TradeCsvLoader.standard(); ValueWithFailures<List<Trade>> trades = test.parse( ImmutableList.of(FILE.getCharSource()), ImmutableList.of(FraTrade.class, TermDepositTrade.class)); assertEquals(trades.getValue().size(), 6); assertEquals(trades.getFailures().size(), 10); assertEquals(trades.getFailures().get(0).getMessage(), "Trade type not allowed " + SwapTrade.class.getName() + ", only these types are supported: FraTrade, TermDepositTrade"); }
public void test_load_invalidNoHeader() { PositionCsvLoader test = PositionCsvLoader.standard(); ValueWithFailures<List<Position>> trades = test.parse(ImmutableList.of(CharSource.wrap(""))); assertEquals(trades.getFailures().size(), 1); FailureItem failure = trades.getFailures().get(0); assertEquals(failure.getReason(), FailureReason.PARSING); assertEquals(failure.getMessage().contains("CSV file could not be parsed"), true); }
public void test_load_invalidNoHeader() { TradeCsvLoader test = TradeCsvLoader.standard(); ValueWithFailures<List<Trade>> trades = test.parse(ImmutableList.of(CharSource.wrap(""))); assertEquals(trades.getFailures().size(), 1); FailureItem failure = trades.getFailures().get(0); assertEquals(failure.getReason(), FailureReason.PARSING); assertEquals(failure.getMessage().contains("CSV file could not be parsed"), true); }
public void test_withValue_valueFailures() { ValueWithFailures<List<String>> base = ValueWithFailures.of(ImmutableList.of("a"), ImmutableList.of(FAILURE1)); ValueWithFailures<String> test = base.withValue("combined", ImmutableList.of(FAILURE2)); assertEquals(test.getValue(), "combined"); assertEquals(test.getFailures(), ImmutableList.of(FAILURE1, FAILURE2)); }
public void test_load_invalidNoType() { PositionCsvLoader test = PositionCsvLoader.standard(); ValueWithFailures<List<Position>> trades = test.parse(ImmutableList.of(CharSource.wrap("Id"))); assertEquals(trades.getFailures().size(), 1); FailureItem failure = trades.getFailures().get(0); assertEquals(failure.getReason(), FailureReason.PARSING); assertEquals(failure.getMessage().contains("CSV file does not contain 'Strata Position Type' header"), true); }
public void test_withAdditionalFailures() { ValueWithFailures<String> base = ValueWithFailures.of("combined", ImmutableList.of(FAILURE1)); ValueWithFailures<String> test = base.withAdditionalFailures(ImmutableList.of(FAILURE2)); assertEquals(test.getValue(), "combined"); assertEquals(test.getFailures(), ImmutableList.of(FAILURE1, FAILURE2)); }
public void test_combinedWith_differentTypes() { ValueWithFailures<Boolean> base = ValueWithFailures.of(Boolean.TRUE, ImmutableList.of(FAILURE1)); ValueWithFailures<Integer> other = ValueWithFailures.of(Integer.valueOf(1), ImmutableList.of(FAILURE2)); ValueWithFailures<String> test = base.combinedWith(other, (a, b) -> a.toString() + b.toString()); assertEquals(test.getValue(), "true1"); assertEquals(test.getFailures(), ImmutableList.of(FAILURE1, FAILURE2)); }
public void test_load_invalidUnknownType() { PositionCsvLoader test = PositionCsvLoader.standard(); ValueWithFailures<List<Position>> trades = test.parse(ImmutableList.of(CharSource.wrap("Strata Position Type\nFoo"))); assertEquals(trades.getFailures().size(), 1); FailureItem failure = trades.getFailures().get(0); assertEquals(failure.getReason(), FailureReason.PARSING); assertEquals(failure.getMessage(), "CSV file position type 'Foo' is not known at line 2"); }
public void test_load_invalidUnknownType() { TradeCsvLoader test = TradeCsvLoader.standard(); ValueWithFailures<List<Trade>> trades = test.parse(ImmutableList.of(CharSource.wrap("Strata Trade Type\nFoo"))); assertEquals(trades.getFailures().size(), 1); FailureItem failure = trades.getFailures().get(0); assertEquals(failure.getReason(), FailureReason.PARSING); assertEquals(failure.getMessage(), "CSV file trade type 'Foo' is not known at line 2"); }
public void test_load_invalidSwap() { TradeCsvLoader test = TradeCsvLoader.standard(); ValueWithFailures<List<Trade>> trades = test.parse(ImmutableList.of(CharSource.wrap("Strata Trade Type,Buy Sell\nSwap,Buy"))); assertEquals(trades.getFailures().size(), 1); FailureItem failure = trades.getFailures().get(0); assertEquals(failure.getReason(), FailureReason.PARSING); assertEquals(failure.getMessage(), "CSV file trade could not be parsed at line 2: Swap trade had invalid combination of fields. " + "Must include either 'Convention' or '" + "Leg 1 Direction'"); }
public void test_combinedWith() { ValueWithFailures<List<String>> base = ValueWithFailures.of(ImmutableList.of("a"), ImmutableList.of(FAILURE1)); ValueWithFailures<List<String>> other = ValueWithFailures.of(ImmutableList.of("b", "c"), ImmutableList.of(FAILURE2)); ValueWithFailures<List<String>> test = base.combinedWith(other, Guavate::concatToList); assertEquals(test.getValue(), ImmutableList.of("a", "b", "c")); assertEquals(test.getFailures(), ImmutableList.of(FAILURE1, FAILURE2)); }
public void test_load_invalidTermDeposit() { TradeCsvLoader test = TradeCsvLoader.standard(); ValueWithFailures<List<Trade>> trades = test.parse(ImmutableList.of(CharSource.wrap("Strata Trade Type,Buy Sell\nTermDeposit,Buy"))); assertEquals(trades.getFailures().size(), 1); FailureItem failure = trades.getFailures().get(0); assertEquals(failure.getReason(), FailureReason.PARSING); assertEquals(failure.getMessage(), "CSV file trade could not be parsed at line 2: Header not found: 'Notional'"); }
public void test_of_list() { ValueWithFailures<String> test = ValueWithFailures.of("success", ImmutableList.of(FAILURE1, FAILURE2)); assertEquals(test.hasFailures(), true); assertEquals(test.getValue(), "success"); assertEquals(test.getFailures(), ImmutableList.of(FAILURE1, FAILURE2)); }
public void test_of_array() { ValueWithFailures<String> test = ValueWithFailures.of("success", FAILURE1, FAILURE2); assertEquals(test.hasFailures(), true); assertEquals(test.getValue(), "success"); assertEquals(test.getFailures(), ImmutableList.of(FAILURE1, FAILURE2)); }
public void test_withValue_ValueWithFailures() { ValueWithFailures<List<String>> base = ValueWithFailures.of(ImmutableList.of("a"), ImmutableList.of(FAILURE1)); ValueWithFailures<String> test = base.withValue(ValueWithFailures.of("combined", ImmutableList.of(FAILURE2))); assertEquals(test.getValue(), "combined"); assertEquals(test.getFailures(), ImmutableList.of(FAILURE1, FAILURE2)); }
public void test_toValueWithFailures() { List<Double> testList = ImmutableList.of(5d, 6d, 7d); ValueWithFailures<Double> result = testList.stream() .map(value -> mockCalc(value)) .collect(ValueWithFailures.toValueWithFailures(1d, (val1, val2) -> val1 * val2)); assertEquals(result.getValue(), 210d); //5 * 6 * 7 = 210 List<FailureItem> failures = result.getFailures(); assertEquals(failures.size(), 3); //One failure item for each element in testList. assertEquals(failures.get(0).getMessage(), Messages.format("Error calculating result for input value {}", 5d)); assertEquals(failures.get(1).getMessage(), Messages.format("Error calculating result for input value {}", 6d)); assertEquals(failures.get(2).getMessage(), Messages.format("Error calculating result for input value {}", 7d)); }