import org.junit.Test; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.stream.Collector; import java.util.stream.Collectors; import static org.junit.Assert.*; public class RemoveFirstNameDuplicatesTest { private List<String> expected; private List<RemoveFirstNameDuplicates.Name> A; @Test public void eliminateDuplicates1() throws Exception { expected = Arrays.asList("Ian", "David"); A = Arrays.asList( new RemoveFirstNameDuplicates.Name("Ian","Botham"), new RemoveFirstNameDuplicates.Name("David","Gower"), new RemoveFirstNameDuplicates.Name("Ian","Bell"), new RemoveFirstNameDuplicates.Name("Ian","Chappell") ); test(expected, A); } @Test public void eliminateDuplicates2() throws Exception { expected = Arrays.asList("Ian"); A = Arrays.asList( new RemoveFirstNameDuplicates.Name("Ian","Botham"), new RemoveFirstNameDuplicates.Name("Ian","Bell"), new RemoveFirstNameDuplicates.Name("Ian","Chappell") ); test(expected, A); } @Test public void eliminateDuplicates3() throws Exception { expected = Arrays.asList("Ian", "David", "Chazz"); A = Arrays.asList( new RemoveFirstNameDuplicates.Name("Ian","Botham"), new RemoveFirstNameDuplicates.Name("David","Gower"), new RemoveFirstNameDuplicates.Name("Ian","Bell"), new RemoveFirstNameDuplicates.Name("Chazz","Chappell") ); test(expected, A); } private void test(List<String> expected, List<RemoveFirstNameDuplicates.Name> A) { RemoveFirstNameDuplicates.eliminateDuplicates(A); List<String> result = A.stream() .map(name -> name.first) .collect(Collectors.toList()); AssertUtils.assertSameContentsString(expected, result); } }