/* * grEMF * * Copyright (C) 2006-2012 Institute for Software Technology * University of Koblenz-Landau, Germany * ist@uni-koblenz.de * * For bug reports, documentation and further information, visit * * https://github.com/jgralab/gremf * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 3 of the License, or (at your * option) any later version. * * This program 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 General * Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, see <http://www.gnu.org/licenses>. * * Additional permission under GNU GPL version 3 section 7 * * If you modify this Program, or any covered work, by linking or combining * it with Eclipse (or a modified version of that program or an Eclipse * plugin), containing parts covered by the terms of the Eclipse Public * License (EPL), the licensors of this Program grant you additional * permission to convey the resulting work. Corresponding Source for a * non-source form of such a combination shall include the source code for * the parts of JGraLab used as well as that of the covered work. */ package de.uni_koblenz.gremftest.collection; import static org.junit.Assert.assertEquals; import java.io.File; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.EAttribute; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.EcoreFactory; import org.eclipse.emf.ecore.EcorePackage; import org.junit.Before; import org.junit.Test; import de.uni_koblenz.gremf.GrEMFIO; import de.uni_koblenz.gremf.impl.GrEMFVertexImpl; import de.uni_koblenz.gremftest.notifications.TestAdapter; import de.uni_koblenz.jgralab.Graph; import de.uni_koblenz.jgralab.GraphIOException; import de.uni_koblenz.jgralab.ImplementationType; import de.uni_koblenz.jgralab.schema.Schema; import de.uni_koblenz.jgralab.schema.VertexClass; public class GrEMFAttributesListProxyTest { private EPackage pack; private EClass eclass; private EAttribute attribute; private EObject ob; static int variant = 1; @Before public void setUp() throws GraphIOException { if (variant == 0) { this.pack = EcoreFactory.eINSTANCE.createEPackage(); this.pack.setName("testPackage"); this.pack.setNsPrefix("test"); this.pack.setNsURI("org.test"); this.eclass = EcoreFactory.eINSTANCE.createEClass(); this.eclass.setName("EClass1"); this.pack.getEClassifiers().add(this.eclass); this.attribute = EcoreFactory.eINSTANCE.createEAttribute(); this.attribute.setName("testAttribute"); this.attribute.setEType(EcorePackage.eINSTANCE.getEString()); this.attribute.setUpperBound(-1); this.attribute.setUnique(false); this.eclass.getEStructuralFeatures().add(this.attribute); this.ob = this.pack.getEFactoryInstance().create(this.eclass); this.ob.eAdapters().add(new TestAdapter()); } else { Schema schema = GrEMFIO.loadSchemaFromFile(System .getProperty("user.dir") + File.separator + "models" + File.separator + "attributeListTestSchema.tg"); Graph g = schema.createGraph(ImplementationType.GENERIC); this.pack = (EPackage) schema.getDefaultPackage(); this.eclass = (EClass) schema.getGraphClass().getVertexClass( "EClass1"); this.attribute = (EAttribute) this.eclass .getEStructuralFeature("testAttribute"); GrEMFVertexImpl vertex = g.createVertex((VertexClass) this.eclass); this.ob = vertex; ArrayList<String> list = new ArrayList<String>(); list.add("Anna"); list.add("Ben"); list.add("Connie"); list.add("David"); } } @SuppressWarnings("unchecked") @Test public void testSize() { assertEquals(0, ((List<String>) this.ob.eGet(this.attribute)).size()); } @SuppressWarnings("unchecked") @Test public void testAdd() { int i = ((List<String>) this.ob.eGet(this.attribute)).size(); ((List<String>) this.ob.eGet(this.attribute)).add("Erwin"); assertEquals((i + 1), ((List<String>) this.ob.eGet(this.attribute)).size()); } @SuppressWarnings("unchecked") @Test public void testAddAll() { int i = ((List<String>) this.ob.eGet(this.attribute)).size(); ArrayList<String> list = new ArrayList<String>(); list.add("Anna"); list.add("Ben"); list.add("Connie"); list.add("David"); ((List<String>) this.ob.eGet(this.attribute)).addAll(list); assertEquals(i + list.size(), ((List<String>) this.ob.eGet(this.attribute)).size()); } @SuppressWarnings("unchecked") @Test public void testAddIndex() { ArrayList<String> list = new ArrayList<String>(); list.add("Anna"); list.add("Ben"); list.add("Connie"); list.add("David"); ((List<String>) this.ob.eGet(this.attribute)).addAll(list); ((List<String>) this.ob.eGet(this.attribute)).add(1, "Erwin"); assertEquals("Erwin", ((List<String>) this.ob.eGet(this.attribute)).get(1)); assertEquals("Ben", ((List<String>) this.ob.eGet(this.attribute)).get(2)); assertEquals(5, ((List<String>) this.ob.eGet(this.attribute)).size()); } @SuppressWarnings("unchecked") @Test public void testAddAllIndex() { ArrayList<String> list = new ArrayList<String>(); list.add("Anna"); list.add("Ben"); list.add("Connie"); list.add("David"); ((List<String>) this.ob.eGet(this.attribute)).addAll(list); ArrayList<String> listToInsert = new ArrayList<String>(); listToInsert.add("Erwin"); listToInsert.add("Frank"); listToInsert.add("Gerd"); ((List<String>) this.ob.eGet(this.attribute)).addAll(2, listToInsert); assertEquals("Erwin", ((List<String>) this.ob.eGet(this.attribute)).get(2)); assertEquals("Connie", ((List<String>) this.ob.eGet(this.attribute)).get(5)); assertEquals(7, ((List<String>) this.ob.eGet(this.attribute)).size()); } @SuppressWarnings("unchecked") @Test public void testClear() { ArrayList<String> list = new ArrayList<String>(); list.add("Anna"); list.add("Ben"); list.add("Connie"); list.add("David"); ((List<String>) this.ob.eGet(this.attribute)).addAll(list); ((List<String>) this.ob.eGet(this.attribute)).clear(); assertEquals(0, ((List<String>) this.ob.eGet(this.attribute)).size()); } @SuppressWarnings("unchecked") @Test public void testContains() { ArrayList<String> list = new ArrayList<String>(); list.add("Anna"); list.add("Ben"); list.add("Connie"); list.add("David"); ((List<String>) this.ob.eGet(this.attribute)).addAll(list); assertEquals(true, ((List<String>) this.ob.eGet(this.attribute)).contains("Anna")); assertEquals(true, ((List<String>) this.ob.eGet(this.attribute)).contains("Ben")); assertEquals(true, ((List<String>) this.ob.eGet(this.attribute)).contains("David")); assertEquals(false, ((List<String>) this.ob.eGet(this.attribute)).contains("Erwin")); } @SuppressWarnings("unchecked") @Test public void testContainsAll() { ArrayList<String> list = new ArrayList<String>(); list.add("Anna"); list.add("Ben"); list.add("Connie"); list.add("David"); ((List<String>) this.ob.eGet(this.attribute)).addAll(list); ArrayList<String> testList1 = new ArrayList<String>(); testList1.add("Anna"); testList1.add("Connie"); assertEquals(true, ((List<String>) this.ob.eGet(this.attribute)) .containsAll(testList1)); ArrayList<String> testList2 = new ArrayList<String>(); testList2.add("Anna"); testList2.add("Connie"); testList2.add("Erwin"); assertEquals(false, ((List<String>) this.ob.eGet(this.attribute)) .containsAll(testList2)); ArrayList<String> testList3 = new ArrayList<String>(); testList3.add("Erwin"); assertEquals(false, ((List<String>) this.ob.eGet(this.attribute)) .containsAll(testList3)); ArrayList<String> testList4 = new ArrayList<String>(); assertEquals(true, ((List<String>) this.ob.eGet(this.attribute)) .containsAll(testList4)); } @SuppressWarnings("unchecked") @Test public void testGet() { ArrayList<String> list = new ArrayList<String>(); list.add("Anna"); list.add("Ben"); list.add("Connie"); list.add("David"); ((List<String>) this.ob.eGet(this.attribute)).addAll(list); assertEquals("Anna", ((List<String>) this.ob.eGet(this.attribute)).get(0)); assertEquals("Ben", ((List<String>) this.ob.eGet(this.attribute)).get(1)); assertEquals("Connie", ((List<String>) this.ob.eGet(this.attribute)).get(2)); assertEquals("David", ((List<String>) this.ob.eGet(this.attribute)).get(3)); } @SuppressWarnings("unchecked") @Test public void testIndexOf() { ArrayList<String> list = new ArrayList<String>(); list.add("Anna"); list.add("Ben"); list.add("Connie"); list.add("David"); ((List<String>) this.ob.eGet(this.attribute)).addAll(list); assertEquals(0, ((List<String>) this.ob.eGet(this.attribute)).indexOf("Anna")); assertEquals(1, ((List<String>) this.ob.eGet(this.attribute)).indexOf("Ben")); assertEquals(2, ((List<String>) this.ob.eGet(this.attribute)).indexOf("Connie")); assertEquals(3, ((List<String>) this.ob.eGet(this.attribute)).indexOf("David")); } @SuppressWarnings("unchecked") @Test public void testIsEmpty() { assertEquals(true, ((List<String>) this.ob.eGet(this.attribute)).isEmpty()); ((List<String>) this.ob.eGet(this.attribute)).add("Anna"); assertEquals(false, ((List<String>) this.ob.eGet(this.attribute)).isEmpty()); } @SuppressWarnings("unchecked") @Test public void testIterator() { assertEquals(false, (((List<String>) this.ob.eGet(this.attribute)).iterator() .hasNext())); ArrayList<String> list = new ArrayList<String>(); list.add("Anna"); list.add("Ben"); list.add("Connie"); list.add("David"); ((List<String>) this.ob.eGet(this.attribute)).addAll(list); Iterator<?> it = ((List<String>) this.ob.eGet(this.attribute)) .iterator(); assertEquals("Anna", it.next()); assertEquals("Ben", it.next()); assertEquals("Connie", it.next()); assertEquals("David", it.next()); } @SuppressWarnings("unchecked") @Test public void testLastIndexOf() { ArrayList<String> list = new ArrayList<String>(); list.add("Anna"); list.add("Ben"); list.add("Connie"); list.add("David"); list.add("Ben"); list.add("Connie"); ((List<String>) this.ob.eGet(this.attribute)).addAll(list); assertEquals(4, ((List<String>) this.ob.eGet(this.attribute)) .lastIndexOf("Ben")); assertEquals(5, ((List<String>) this.ob.eGet(this.attribute)) .lastIndexOf("Connie")); assertEquals(0, ((List<String>) this.ob.eGet(this.attribute)) .lastIndexOf("Anna")); } @SuppressWarnings("unchecked") @Test public void testListIterator() { assertEquals(false, (((List<String>) this.ob.eGet(this.attribute)).listIterator() .hasNext())); ArrayList<String> list = new ArrayList<String>(); list.add("Anna"); list.add("Ben"); list.add("Connie"); list.add("David"); ((List<String>) this.ob.eGet(this.attribute)).addAll(list); Iterator<?> it = ((List<String>) this.ob.eGet(this.attribute)) .listIterator(); assertEquals("Anna", it.next()); assertEquals("Ben", it.next()); assertEquals("Connie", it.next()); assertEquals("David", it.next()); } @SuppressWarnings("unchecked") @Test public void testListIteratorIndex() { ArrayList<String> list = new ArrayList<String>(); list.add("Anna"); list.add("Ben"); list.add("Connie"); list.add("David"); ((List<String>) this.ob.eGet(this.attribute)).addAll(list); Iterator<?> it = ((List<String>) this.ob.eGet(this.attribute)) .listIterator(2); assertEquals("Connie", it.next()); assertEquals("David", it.next()); } @SuppressWarnings("unchecked") @Test public void testRemove() { ArrayList<String> list = new ArrayList<String>(); list.add("Anna"); list.add("Ben"); list.add("Connie"); list.add("David"); ((List<String>) this.ob.eGet(this.attribute)).addAll(list); ((List<String>) this.ob.eGet(this.attribute)).remove("Connie"); assertEquals(false, ((List<String>) this.ob.eGet(this.attribute)) .contains("Connie")); assertEquals(3, ((List<String>) this.ob.eGet(this.attribute)).size()); } @SuppressWarnings("unchecked") @Test public void testRemoveIndex() { ArrayList<String> list = new ArrayList<String>(); list.add("Anna"); list.add("Ben"); list.add("Connie"); list.add("David"); ((List<String>) this.ob.eGet(this.attribute)).addAll(list); ((List<String>) this.ob.eGet(this.attribute)).remove(2); assertEquals(false, ((List<String>) this.ob.eGet(this.attribute)) .contains("Connie")); assertEquals(3, ((List<String>) this.ob.eGet(this.attribute)).size()); } @SuppressWarnings("unchecked") @Test public void testRemoveAll() { ArrayList<String> list = new ArrayList<String>(); list.add("Anna"); list.add("Ben"); list.add("Connie"); list.add("David"); ((List<String>) this.ob.eGet(this.attribute)).addAll(list); ArrayList<String> listToRemove = new ArrayList<String>(); listToRemove.add("Anna"); listToRemove.add("Connie"); ((List<String>) this.ob.eGet(this.attribute)).removeAll(listToRemove); assertEquals(0, ((List<String>) this.ob.eGet(this.attribute)).indexOf("Ben")); assertEquals(2, ((List<String>) this.ob.eGet(this.attribute)).size()); } @SuppressWarnings("unchecked") @Test public void testRetainAll() { ArrayList<String> list = new ArrayList<String>(); list.add("Anna"); list.add("Ben"); list.add("Connie"); list.add("David"); list.add("Erwin"); list.add("Frank"); ((List<String>) this.ob.eGet(this.attribute)).addAll(list); ArrayList<String> listToRetain = new ArrayList<String>(); listToRetain.add("Anna"); listToRetain.add("Connie"); ((List<String>) this.ob.eGet(this.attribute)).retainAll(listToRetain); assertEquals(1, ((List<String>) this.ob.eGet(this.attribute)).indexOf("Connie")); assertEquals(2, ((List<String>) this.ob.eGet(this.attribute)).size()); } @SuppressWarnings("unchecked") @Test public void testSetIndex() { ArrayList<String> list = new ArrayList<String>(); list.add("Anna"); list.add("Ben"); list.add("Connie"); list.add("David"); ((List<String>) this.ob.eGet(this.attribute)).addAll(list); ((List<String>) this.ob.eGet(this.attribute)).set(1, "Bob"); assertEquals("Bob", ((List<String>) this.ob.eGet(this.attribute)).get(1)); } @SuppressWarnings("unchecked") @Test public void testSubList() { ArrayList<String> list = new ArrayList<String>(); list.add("Anna"); list.add("Ben"); list.add("Connie"); list.add("David"); list.add("Erwin"); list.add("Frank"); ((List<String>) this.ob.eGet(this.attribute)).addAll(list); List<String> sublist = ((List<String>) this.ob.eGet(this.attribute)) .subList(1, 4); assertEquals(3, sublist.size()); assertEquals("Ben", sublist.get(0)); assertEquals("David", sublist.get(2)); } @SuppressWarnings("unchecked") @Test public void testToArray() { ArrayList<String> list = new ArrayList<String>(); list.add("Anna"); list.add("Ben"); list.add("Connie"); list.add("David"); list.add("Erwin"); list.add("Frank"); ((List<String>) this.ob.eGet(this.attribute)).addAll(list); Object[] array = ((List<String>) this.ob.eGet(this.attribute)) .toArray(); assertEquals(6, array.length); assertEquals("Anna", array[0]); assertEquals("David", array[3]); assertEquals("Frank", array[5]); } @SuppressWarnings("unchecked") @Test public void testMove() { ArrayList<String> list = new ArrayList<String>(); list.add("Anna"); list.add("Ben"); list.add("Connie"); list.add("David"); list.add("Erwin"); list.add("Frank"); ((List<String>) this.ob.eGet(this.attribute)).addAll(list); ((EList<String>) this.ob.eGet(this.attribute)).move(1, "Frank"); assertEquals("Anna", ((List<String>) this.ob.eGet(this.attribute)).get(0)); assertEquals("Frank", ((List<String>) this.ob.eGet(this.attribute)).get(1)); assertEquals("Erwin", ((List<String>) this.ob.eGet(this.attribute)).get(5)); } @SuppressWarnings("unchecked") @Test public void testMoveIndex() { ArrayList<String> list = new ArrayList<String>(); list.add("Anna"); list.add("Ben"); list.add("Connie"); list.add("David"); list.add("Erwin"); list.add("Frank"); ((List<String>) this.ob.eGet(this.attribute)).addAll(list); ((EList<String>) this.ob.eGet(this.attribute)).move(0, 5); assertEquals("Anna", ((List<String>) this.ob.eGet(this.attribute)).get(1)); assertEquals("Frank", ((List<String>) this.ob.eGet(this.attribute)).get(0)); assertEquals("Erwin", ((List<String>) this.ob.eGet(this.attribute)).get(5)); } }