/** * Copyright (c) 2009--2010 Red Hat, Inc. * * This software is licensed to you under the GNU General Public License, * version 2 (GPLv2). There is NO WARRANTY for this software, express or * implied, including the implied warranties of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2 * along with this software; if not, see * http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. * * Red Hat trademarks are not licensed under GPLv2. No permission is * granted to use or replicate Red Hat trademarks that are incorporated * in this software or its documentation. */ package com.redhat.rhn.domain.rhnset.test; import com.redhat.rhn.domain.rhnset.RhnSetElement; import com.redhat.rhn.domain.rhnset.RhnSetImpl; import com.redhat.rhn.testing.RhnBaseTestCase; import java.util.Iterator; import java.util.Set; /** * RhnSetTest * @version $Rev$ */ public class RhnSetTest extends RhnBaseTestCase { private static final String[] TEST_ELEMS = {"100", "150", "300", "175", "35"}; private RhnSetImpl set; protected void setUp() throws Exception { super.setUp(); set = new RhnSetImpl(); set.sync(); } protected void tearDown() throws Exception { super.tearDown(); set = null; } public void testUserId() { Long id = new Long(10); set.setUserId(id); assertEquals(id, set.getUserId()); } public void testLabel() { set.setLabel("set_label"); assertEquals("set_label", set.getLabel()); } public void testElement() { Long num = new Long(10); set.addElement(num, null); set.addElement(num, num); set.addElement(num, num, null); set.addElement(num, num, num); Set elements = set.getElements(); assertNotNull(elements); assertEquals(set.size(), elements.size()); assertEquals(3, set.size()); assertAddRemove(3, 0); int i = 0; for (Iterator itr = elements.iterator(); itr.hasNext();) { RhnSetElement element = (RhnSetElement) itr.next(); if (element.getElementTwo() != null && element.getElementThree() != null) { assertEquals(num, element.getElement()); assertEquals(num, element.getElementTwo()); assertEquals(num, element.getElementThree()); } else if (element.getElementTwo() != null && element.getElementThree() == null) { assertEquals(num, element.getElement()); assertEquals(num, element.getElementTwo()); assertNull(element.getElementThree()); } else if (element.getElementTwo() == null && element.getElementThree() != null) { assertEquals(num, element.getElement()); assertNull(element.getElementTwo()); assertEquals(num, element.getElementThree()); } else { assertEquals(num, element.getElement()); assertNull(element.getElementTwo()); assertNull(element.getElementThree()); } i++; } assertEquals(3, i); set.removeElement(num, num); assertEquals(2, set.size()); assertTrue(set.contains(num)); assertFalse(set.contains(num, num)); assertAddRemove(2, 0); set.setLabel("label"); assertEquals("label", set.getLabel()); } public void testGetElementValues() { set.addElement(new Long(100)); set.addElement(new Long(101)); Set values = set.getElementValues(); assertEquals(2, values.size()); assertTrue(values.contains(new Long(100))); assertTrue(values.contains(new Long(101))); } public void testAddElements() { set.addElements(TEST_ELEMS); Set elements = set.getElements(); assertNotNull(elements); assertEquals(TEST_ELEMS.length, elements.size()); assertEquals(5, elements.size()); String[] testElems2 = {"100|50", "10|90", "30|30"}; set.addElements(testElems2); elements = set.getElements(); assertEquals(8, elements.size()); assertTrue(set.contains(new Long("150"))); assertTrue(set.contains(new Long("100"), new Long("50"))); assertFalse(set.contains(new Long("10"), new Long("91"))); assertAddRemove(8, 0); } public void testRemoveElements() { String[] removeElems = {"100", "300"}; set.addElements(TEST_ELEMS); set.removeElements(removeElems); assertTrue(set.contains(new Long("150"))); assertFalse(set.contains(new Long("350"))); assertFalse(set.contains(new Long("300"))); assertAddRemove(3, 0); } public void testMark() { set.addElements(TEST_ELEMS); set.sync(); assertAddRemove(0, 0); set.removeElement(new Long(100)); assertAddRemove(0, 1); set.addElement(new Long(100)); assertAddRemove(0, 0); set.addElement(new Long(42)); assertAddRemove(1, 0); set.sync(); assertAddRemove(0, 0); } public void testNullAddElements() { // make sure we don't cause a NullPointerException try { set.addElements(null); Set elements = set.getElements(); assertNotNull(elements); assertEquals(0, elements.size()); String[] testElems2 = {"100|50", "10|90", "30|30"}; set.addElements(testElems2); elements = set.getElements(); assertEquals(3, elements.size()); assertTrue(set.contains(new Long("100"), new Long("50"))); assertFalse(set.contains(new Long("10"), new Long("91"))); assertAddRemove(3, 0); } catch (NullPointerException npe) { fail("addElements didn't accept a null array"); } } public void testNullRemoveElements() { try { set.removeElements(null); Set elements = set.getElements(); assertNotNull(elements); assertEquals(0, elements.size()); } catch (NullPointerException npe) { fail("removeElements didn't accept a null array"); } } private void assertAddRemove(int added, int removed) { assertEquals(added, set.getAdded().size()); assertEquals(removed, set.getRemoved().size()); } }