/* * Beanfabrics Framework Copyright (C) by Michael Karneim, beanfabrics.org * Use is subject to license terms. See license.txt. */ package org.beanfabrics.model; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.util.Collection; import java.util.HashSet; import java.util.Iterator; import junit.framework.JUnit4TestAdapter; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; /** * @author Michael Karneim */ public class SelectionTest { private final int ELEMENT_SIZE = 10; private IListPM<DummyPM> list; private Selection<DummyPM> selection; public static junit.framework.Test suite() { return new JUnit4TestAdapter(SelectionTest.class); } public SelectionTest() { } @BeforeClass public static void setUpClass() throws Exception { } @AfterClass public static void tearDownClass() throws Exception { } @org.junit.Before public void setUp() { MapPM<Integer, DummyPM> map = new MapPM<Integer, DummyPM>(); Selection<DummyPM> sel = map.getSelection(); assertNotNull("sel", sel); for (int i = 0; i < ELEMENT_SIZE; ++i) { DummyPM elem = new DummyPM(); elem.name.setText("name " + i); map.put(i, elem); } this.list = map; this.selection = sel; } @Test public void add() { selection.add(list.getAt(3)); assertEquals("selection.size()", 1, selection.size()); } @Test public void addAllFromProperty() { selection.addAll(); assertEquals("selection.size()", list.size(), selection.size()); } @Test public void addAll() { selection.addAll(list.toCollection()); assertEquals("selection.size()", list.size(), selection.size()); } @Test public void addInterval() { selection.addInterval(2, 4); // select elements with index 2,3,4 assertEquals("selection.size()", 3, selection.size()); assertTrue("selection.contains(2)", selection.contains(2)); assertTrue("selection.contains(3)", selection.contains(3)); assertTrue("selection.contains(4)", selection.contains(4)); } @Test public void clear() { selection.addAll(); assertEquals("selection.size()", list.size(), selection.size()); selection.clear(); assertEquals("selection.size()", 0, selection.size()); } @Test public void containsIndex() { selection.addInterval(2, 4); // select elements with index 2,3,4 int index = 2; assertEquals("selection.contains(index)", true, selection.contains(index)); index = 8; assertEquals("selection.contains(index)", false, selection.contains(index)); } @Test public void containsObject() { selection.addInterval(3, 3); Object obj = list.getAt(3); assertEquals("selection.contains(obj)", true, selection.contains(obj)); obj = list.getAt(4); assertEquals("selection.contains(obj)", false, selection.contains(obj)); } @Test public void containsAll() { Collection col = list.toCollection(); selection.addAll(col); assertEquals("selection.containsAll(col)", true, selection.containsAll(col)); selection.clear(); assertEquals("selection.isEmpty()", true, selection.isEmpty()); assertEquals("selection.containsAll(col)", false, selection.containsAll(col)); } @Test public void getFirstIndex() { selection.addInterval(3, 6); selection.addInterval(2, 2); assertEquals("selection.getFirstIndex()", 2, selection.getMinIndex()); selection.clear(); assertEquals("selection.getFirstIndex()", -1, selection.getMinIndex()); } @Test public void isEmpty() { assertEquals("selection.isEmpty()", true, selection.isEmpty()); selection.addInterval(3, 6); assertEquals("selection.isEmpty()", false, selection.isEmpty()); selection.clear(); assertEquals("selection.isEmpty()", true, selection.isEmpty()); } @Test public void iterator() { Iterator<DummyPM> it = selection.iterator(); assertNotNull("it", it); assertEquals("it.hasNext()", false, it.hasNext()); selection.addAll(); it = selection.iterator(); assertNotNull("it", it); assertEquals("it.hasNext()", true, it.hasNext()); HashSet elementsInIterator = new HashSet(); for (int i = 0; i < list.size(); ++i) { assertEquals("it.hasNext()", true, it.hasNext()); DummyPM elem = it.next(); assertNotNull("elem", elem); elementsInIterator.add(elem); } assertEquals("elementsInIterator.size()", list.size(), elementsInIterator.size()); Collection allElems = list.toCollection(); allElems.removeAll(elementsInIterator); assertEquals("allElems.isEmpty()", true, allElems.isEmpty()); allElems = list.toCollection(); allElems.retainAll(elementsInIterator); assertEquals("elementsInIterator.size()", allElems.size(), elementsInIterator.size()); } @Test public void iteratorRemove() { Iterator<DummyPM> it = selection.iterator(); assertNotNull("it", it); assertEquals("it.hasNext()", false, it.hasNext()); selection.addAll(); it = selection.iterator(); assertNotNull("it", it); assertEquals("it.hasNext()", true, it.hasNext()); while (it.hasNext()) { DummyPM elem = it.next(); assertEquals("selection.contains(elem)", true, selection.contains(elem)); it.remove(); assertEquals("selection.contains(elem)", false, selection.contains(elem)); } } @Test public void remove() { selection.addAll(); Object obj; selection.remove(list.getAt(4)); assertEquals("selection.contains(4)", false, selection.contains(4)); } @Test public void removeAll() { selection.addAll(); Collection col = list.toCollection(); selection.removeAll(col); assertEquals("selection.isEmpty()", true, selection.isEmpty()); } @Test public void removeInterval() { selection.addAll(); selection.removeInterval(3, 6); assertEquals("selection.size()", 6, selection.size()); for (int i = 0; i < 3; ++i) { assertEquals("selection.contains(" + i + ")", true, selection.contains(i)); } for (int i = 3; i <= 6; ++i) { assertEquals("selection.contains(" + i + ")", false, selection.contains(i)); } for (int i = 7; i < list.size(); ++i) { assertEquals("selection.contains(" + i + ")", true, selection.contains(i)); } } @Test public void retainAll() { selection.addAll(); assertEquals("selection.size()", list.size(), selection.size()); Collection col = list.toCollection(); assertEquals("col.size()", list.size(), col.size()); col.remove(list.getAt(2)); col.remove(list.getAt(3)); assertEquals("col.size()", list.size() - 2, col.size()); selection.retainAll(col); assertEquals("selection.size()", list.size() - 2, selection.size()); } @Test public void size() { assertEquals("selection.size()", 0, selection.size()); selection.addAll(); assertEquals("selection.size()", list.size(), selection.size()); } @Test public void toArray() { selection.addAll(); Object[] array = selection.toArray(); assertEquals("array.length", list.size(), array.length); for (int i = 0; i < array.length; ++i) { assertEquals("array[i]", list.getAt(i), array[i]); } } @Test public void genericToArray() { selection.addAll(); DummyPM[] array = selection.toArray(new DummyPM[list.size()]); assertEquals("array.length", list.size(), array.length); for (int i = 0; i < array.length; ++i) { assertEquals("array[i]", list.getAt(i), array[i]); } } private static class DummyPM extends AbstractPM { private TextPM name = new TextPM(); public DummyPM() { PMManager.setup(this); } } }