### Question:
Functional { public static <T> List<T> select(final Collection<T> items, final Callback<T, Boolean> filter) { List<T> selectedItems = new ArrayList<>(); for (T item : items) { if (filter.call(item)) { selectedItems.add(item); } } return selectedItems; } private  Functional(); static List<T> select(final Collection<T> items, final Callback<T, Boolean> filter);  }### Answer:
@Test public void testEmptyCollection() { Assert.assertEquals(EMPTY_LIST, Functional.select(EMPTY_LIST, ODD_FILTER)); }
@Test public void testSelectMany() { List<Integer> results = Functional.select(INPUT_LIST, ODD_FILTER); Assert.assertEquals(TWO, results.size()); Assert.assertTrue(results.contains(ONE)); Assert.assertTrue(results.contains(THREE)); }
@Test public void testSelectSingleElement() { List<Integer> results = Functional.select(INPUT_LIST, TWO_FILTER); Assert.assertEquals(ONE, results.size()); Assert.assertTrue(results.contains(TWO)); }
@Test public void testSelectNone() { Assert.assertEquals(EMPTY_LIST, Functional.select(INPUT_LIST, NONE_FILTER)); }