package com.tek271.funj; import org.junit.Test; import java.util.List; import static com.google.common.collect.Lists.newArrayList; import static org.junit.Assert.assertEquals; public class FinderTest { private static final String NOT_EXIST = "propertyNameWhichDoesNotExist"; final Zoo z1 = Zoo.createZoo(1); final Zoo z2 = Zoo.createZoo(2); final Zoo z3 = Zoo.createZoo(3); final Zoo z4 = Zoo.createZoo(4); final List<Zoo> zoos = newArrayList(z1, z2, z3, z4); @Test public void findAllReturnsEmptyListIfNoData() { List<Zoo> list = newArrayList(); List<Zoo> found = Finder.findAll(list, "id", 1, 2); assertEquals(true, found.isEmpty()); found = Finder.findAll(zoos, "id"); assertEquals(true, found.isEmpty()); } @Test(expected = IllegalArgumentException.class) public void findAllReturnsFailsIfBadPropertyName() { Finder.findAll(zoos, NOT_EXIST, 1, 2); } @Test public void findAllReturnsFoundElements() { List<Zoo> found = Finder.findAll(zoos, "city", "city_1", "city_3", "city_xx"); assertEquals(2, found.size()); assertEquals(z1, found.get(0)); assertEquals(z3, found.get(1)); } @Test public void testFindFirst() { assertEquals(z2, Finder.findFirst(zoos, "id", 2)); assertEquals(null, Finder.findFirst(zoos, "id", "2")); assertEquals(null, Finder.findFirst(zoos, "id", 100)); assertEquals(null, Finder.findFirst(zoos, "id", "invalid filter")); } @Test public void rejectWillExcludeMatchingObjects() { List<Zoo> found = Finder.reject(zoos, "id", 1, 2); assertEquals(newArrayList(z3, z4), found); } @Test public void rejectWillReturnOriginalListIfNoMatchers() { List<Zoo> found = Finder.reject(zoos, "id"); assertEquals(zoos, found); } }