package org.nextprot.api.commons.utils; import com.google.common.base.Function; import org.junit.Assert; import org.junit.Test; import org.mockito.Mockito; import java.util.*; public class CollectionTesterTest { @Test public void foundValidElement() throws Exception { List<Person> persons = Arrays.asList(new Person("bob", 23), new Person("jon", 29), new Person("loki", 450)); CollectionTester<Person, String> tester = new CollectionTester<Person, String>(persons) { @Override protected Function<Person, String> createElementToKeyFunc() { return new Function<Person, String>() { @Override public String apply(Person person) { return person.getName()+person.getAge(); } }; } @Override protected boolean isEquals(Person element, Person expectedElement) { return expectedElement.getName().equals(element.getName()) && expectedElement.getAge() == element.getAge(); } }; Assert.assertTrue(tester.contains(mockPerson("jon", 29))); } @Test public void foundValidElements() throws Exception { List<Person> persons = Arrays.asList(new Person("bob", 23), new Person("jon", 29), new Person("loki", 450)); CollectionTester<Person, String> tester = new CollectionTester<Person, String>(persons) { @Override protected Function<Person, String> createElementToKeyFunc() { return new Function<Person, String>() { @Override public String apply(Person person) { return person.getName()+person.getAge(); } }; } @Override protected boolean isEquals(Person element, Person expectedElement) { return expectedElement.getName().equals(element.getName()) && expectedElement.getAge() == element.getAge(); } }; Assert.assertTrue(tester.contains(Arrays.asList(mockPerson("jon", 29), mockPerson("bob", 23)))); } private Person mockPerson(String name, int age) { Person person = Mockito.mock(Person.class); Mockito.when(person.getName()).thenReturn(name); Mockito.when(person.getAge()).thenReturn(age); return person; } private static class Person { private final String name; private final int age; Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } int getAge() { return age; } } }