blob: ff02661103c2901ac60fbbabe1e60f1f6c84b27f [file] [log] [blame]
/**
* Copyright (c) 2019 Eclipse contributors and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.html
*
* Contributed via https://bugs.eclipse.org/bugs/show_bug.cgi?id=550338
*/
package org.eclipse.emf.test.core.ecore;
import static java.util.Arrays.*;
import static org.junit.Assert.*;
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EcoreFactory;
import org.eclipse.emf.ecore.EcorePackage;
import org.eclipse.emf.ecore.impl.EClassImpl;
import org.junit.Test;
/**
* Test for super type adapter in {@link EClassImpl}.
*/
public class EClassGenericTypeCacheTest
{
@Test
public void testEClassImplSuperTypeAdapter()
{
EClass eClass = EcoreFactory.eINSTANCE.createEClass();
// add attribute1
EAttribute attribute1 = EcoreFactory.eINSTANCE.createEAttribute();
attribute1.setName("attribute1");
attribute1.setEType(EcorePackage.Literals.ESTRING);
assertNotNull(attribute1.getEGenericType());
assertEquals(EcorePackage.Literals.ESTRING, attribute1.getEGenericType().getEClassifier());
eClass.getEStructuralFeatures().add(attribute1);
assertEquals(asList(attribute1), eClass.getEAllStructuralFeatures());
assertNotNull(eClass.getFeatureType(attribute1));
assertEquals(EcorePackage.Literals.ESTRING, eClass.getFeatureType(attribute1).getEClassifier());
// add attribute2
EAttribute attribute2 = EcoreFactory.eINSTANCE.createEAttribute();
attribute2.setName("attribute2");
attribute2.setEType(EcorePackage.Literals.EINT);
assertNotNull(attribute2.getEGenericType());
assertEquals(EcorePackage.Literals.EINT, attribute2.getEGenericType().getEClassifier());
eClass.getEStructuralFeatures().add(attribute2);
assertEquals(asList(attribute1, attribute2), eClass.getEAllStructuralFeatures());
assertNotNull(eClass.getFeatureType(attribute1));
assertEquals(EcorePackage.Literals.ESTRING, eClass.getFeatureType(attribute1).getEClassifier());
assertNotNull(eClass.getFeatureType(attribute2));
assertEquals(EcorePackage.Literals.EINT, eClass.getFeatureType(attribute2).getEClassifier());
// add attribute3
EAttribute attribute3 = EcoreFactory.eINSTANCE.createEAttribute();
attribute3.setName("attribute2");
attribute3.setEType(EcorePackage.Literals.ELONG);
assertNotNull(attribute3.getEGenericType());
assertEquals(EcorePackage.Literals.ELONG, attribute3.getEGenericType().getEClassifier());
eClass.getEStructuralFeatures().add(attribute3);
assertEquals(asList(attribute1, attribute2, attribute3), eClass.getEAllStructuralFeatures());
assertNotNull(eClass.getFeatureType(attribute1));
assertEquals(EcorePackage.Literals.ESTRING, eClass.getFeatureType(attribute1).getEClassifier());
assertNotNull(eClass.getFeatureType(attribute2));
assertEquals(EcorePackage.Literals.EINT, eClass.getFeatureType(attribute2).getEClassifier());
assertNotNull(eClass.getFeatureType(attribute3));
assertEquals(EcorePackage.Literals.ELONG, eClass.getFeatureType(attribute3).getEClassifier());
// remove attribute2
eClass.getEStructuralFeatures().remove(attribute2);
assertEquals(asList(attribute1, attribute3), eClass.getEAllStructuralFeatures());
assertNotNull(eClass.getFeatureType(attribute1));
assertEquals(EcorePackage.Literals.ESTRING, eClass.getFeatureType(attribute1).getEClassifier());
assertNotNull(eClass.getFeatureType(attribute3));
assertEquals(EcorePackage.Literals.ELONG, eClass.getFeatureType(attribute3).getEClassifier());
// add attribute2 and remove attribute1
eClass.getEStructuralFeatures().add(attribute2);
eClass.getEStructuralFeatures().remove(attribute1);
assertEquals(asList(attribute3, attribute2), eClass.getEAllStructuralFeatures());
assertNotNull(eClass.getFeatureType(attribute3));
assertEquals(EcorePackage.Literals.ELONG, eClass.getFeatureType(attribute3).getEClassifier());
assertNotNull(eClass.getFeatureType(attribute2));
assertEquals(EcorePackage.Literals.EINT, eClass.getFeatureType(attribute2).getEClassifier());
}
}