}
@Test
public void testCombined() {
TradePositionResolver resolver = new TradePositionResolver(ImmutableSet.of("T1","T2","T3","T4","T5"));
resolver.addToPosition("P1", "T1");
resolver.addToPosition("P2", "T1");
resolver.addToPosition("P2", "T2");
resolver.addToPosition("P1", "T3");
resolver.addToPosition("P2", "T4");
resolver.addToPosition("P3", "T6");
resolver.resolve();
Iterator<String> orphans = resolver.getOrphans().iterator();
assertEquals(orphans.next(), "T5");
assertFalse(orphans.hasNext());
Multimap<String, String> positions = resolver.getPositions();
assertEquals(positions.keySet().size(), 3);
assertEquals(positions.get("P1"), ImmutableList.of("T1", "T3"));
assertEquals(positions.get("P2"), ImmutableList.of("T1", "T2", "T4"));
assertEquals(positions.get("P3"), ImmutableList.of("T6"));
assertEquals(ImmutableSet.copyOf(resolver.getUnknownTrades()), ImmutableSet.of("T6"));
Multimap<String, String> duplicateTrades = resolver.getDuplicateTrades();
assertEquals(duplicateTrades.keySet().size(), 1);
assertEquals(duplicateTrades.get("T1"), ImmutableSet.of("P1", "P2"));
}