package marubinotto.piggydb.model.utils;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.List;
import marubinotto.piggydb.model.Fragment;
import marubinotto.piggydb.model.ModelUtils;
import marubinotto.piggydb.model.entity.RawFragment;
import org.junit.Test;
public class GetCommonParentsTest {
@Test
public void zeroFragments() throws Exception {
List<Fragment>parents = ModelUtils.getCommonParents(new ArrayList<Fragment>());
assertTrue(parents.isEmpty());
}
@Test
public void oneFragmentWithoutParents() throws Exception {
List<Fragment> fragments = new ArrayList<Fragment>();
fragments.add(new RawFragment());
List<Fragment>parents = ModelUtils.getCommonParents(fragments);
assertTrue(parents.isEmpty());
}
@Test
public void oneFragmentWithOneParent() throws Exception {
List<Fragment> fragments = new ArrayList<Fragment>();
fragments.add(fragmentWithParents(1L));
List<Fragment>parents = ModelUtils.getCommonParents(fragments);
assertEquals(1, parents.size());
assertEquals(1L, parents.get(0).getId().longValue());
}
@Test
public void twoFragmentsWithoutCommonParents() throws Exception {
List<Fragment> fragments = new ArrayList<Fragment>();
fragments.add(fragmentWithParents(1L));
fragments.add(fragmentWithParents(2L));
List<Fragment>parents = ModelUtils.getCommonParents(fragments);
assertTrue(parents.isEmpty());
}
@Test
public void twoFragmentsWithOneCommonParents() throws Exception {
List<Fragment> fragments = new ArrayList<Fragment>();
fragments.add(fragmentWithParents(1L, 2L));
fragments.add(fragmentWithParents(2L, 3L));
List<Fragment>parents = ModelUtils.getCommonParents(fragments);
assertEquals(1, parents.size());
assertEquals(2L, parents.get(0).getId().longValue());
}
private static Fragment fragmentWithParents(long ... ids) {
RawFragment fragment = new RawFragment();
for (long id : ids) {
RawFragment parent = new RawFragment();
parent.setId(id);
fragment.addParent(parent);
}
return fragment;
}
}