/* * Copyright (c) Fabien Hermenier * * This file is part of Entropy. * * Entropy is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Entropy is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with Entropy. If not, see <http://www.gnu.org/licenses/>. */ package entropy.configuration; import org.testng.Assert; import org.testng.annotations.Test; /** * Unit tests related to ManagedElementSet. * * @author Fabien Hermenier */ @Test(groups = {"unit"}) public class TestSimpleManagedElementSet { /** * Make a default set of elements. * * @return a proper set */ private static ManagedElementSet<MockManagedElement> makeDefaultSet() { ManagedElementSet<MockManagedElement> set = new SimpleManagedElementSet<MockManagedElement>(); MockManagedElement n = new MockManagedElement("N0"); set.add(n); n = new MockManagedElement("N1"); set.add(n); n = new MockManagedElement("N2"); set.add(n); n = new MockManagedElement("N3"); set.add(n); return set; } public void testSingleton() { MockManagedElement n = new MockManagedElement("N0"); ManagedElementSet<MockManagedElement> set = new SimpleManagedElementSet<MockManagedElement>(n); Assert.assertTrue(set.contains(n)); Assert.assertEquals(set.size(), 1); } public void testGetFromName() { ManagedElementSet<MockManagedElement> orig = TestSimpleManagedElementSet.makeDefaultSet(); Assert.assertEquals(orig.get("N0"), new MockManagedElement("N0")); Assert.assertNull(orig.get("N7")); } /** * Check that the copy constructor makes a deep copy. */ public void testCopyConstructor() { ManagedElementSet<MockManagedElement> orig = TestSimpleManagedElementSet.makeDefaultSet(); ManagedElementSet<MockManagedElement> copy = orig.clone(); // Not the same reference Assert.assertFalse(orig == copy, "The copy should not have the same reference"); // But the same content Assert.assertEquals(copy, orig); } /** * Test the non-possibility of having 2 elements with the same name. */ public void testAdd() { ManagedElementSet<MockManagedElement> orig = TestSimpleManagedElementSet.makeDefaultSet(); Assert.assertFalse(orig.add(new MockManagedElement("N0"))); Assert.assertEquals(orig.size(), 4); } public void testRemove() { ManagedElementSet<MockManagedElement> orig = TestSimpleManagedElementSet.makeDefaultSet(); MockManagedElement m = orig.get("N1"); Assert.assertTrue(orig.remove(m)); Assert.assertFalse(orig.contains(m)); MockManagedElement m2 = new MockManagedElement("hop"); Assert.assertFalse(orig.remove(m2)); } public void testClear() { ManagedElementSet<MockManagedElement> orig = TestSimpleManagedElementSet.makeDefaultSet(); ManagedElementSet<MockManagedElement> orig2 = orig.clone(); orig2.clear(); Assert.assertEquals(orig2.size(), 0); for (MockManagedElement e : orig) { Assert.assertFalse(orig2.contains(e)); } } /** * Test the equals() method. */ public void testEquals() { ManagedElementSet<MockManagedElement> orig = TestSimpleManagedElementSet.makeDefaultSet(); ManagedElementSet<MockManagedElement> clone = TestSimpleManagedElementSet.makeDefaultSet(); Assert.assertEquals(clone, orig); clone.remove(clone.size() - 1); Assert.assertNotSame(clone, orig); clone = TestSimpleManagedElementSet.makeDefaultSet(); orig.remove(clone.size() - 1); Assert.assertNotSame(clone, orig); Assert.assertFalse(orig.equals(new Object())); } /** * Test addAll(). */ public void testAddAll() { ManagedElementSet<MockManagedElement> set = makeDefaultSet(); ManagedElementSet<MockManagedElement> s2 = new SimpleManagedElementSet<MockManagedElement>(); Assert.assertFalse(set.addAll(s2)); s2.add(new MockManagedElement("N0")); Assert.assertFalse(set.addAll(s2)); s2.add(new MockManagedElement("aaaa")); Assert.assertTrue(set.addAll(s2)); } public void testRetainAll() { ManagedElementSet<MockManagedElement> set = makeDefaultSet(); ManagedElementSet<MockManagedElement> toKeep = new SimpleManagedElementSet<MockManagedElement>(); MockManagedElement n1 = set.get("N1"); MockManagedElement n2 = set.get("N2"); MockManagedElement n3 = set.get("N3"); MockManagedElement n7 = new MockManagedElement("N7"); toKeep.add(n1); toKeep.add(n2); toKeep.add(n7); Assert.assertTrue(set.retainAll(toKeep)); Assert.assertTrue(set.contains(n1)); Assert.assertTrue(set.contains(n2)); Assert.assertFalse(set.contains(n3)); Assert.assertNull(set.get("N0")); } public void testToString() { ManagedElementSet<MockManagedElement> set = makeDefaultSet(); Assert.assertEquals(set.toString(), "{N0, N1, N2, N3}"); } public void testSet() { ManagedElementSet<MockManagedElement> set = makeDefaultSet(); MockManagedElement n0 = set.get(0); MockManagedElement n3 = set.get(3); set.set(3, n0); set.set(0, n3); Assert.assertEquals(set.toString(), "{N3, N1, N2, N0}"); Assert.assertTrue(set.contains(n0)); Assert.assertTrue(set.contains(n3)); Assert.assertEquals(set.get("N3"), n3); Assert.assertEquals(set.get("N0"), n0); } }