/** * Copyright (c) 2013 itemis AG and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * itemis AG - initial API and implementation */ package org.eclipse.rmf.tests.serialization.load; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.emf.ecore.EcorePackage; import org.eclipse.emf.ecore.xml.type.AnyType; import org.eclipse.rmf.tests.serialization.model.nodes.Node; import org.eclipse.rmf.tests.serialization.model.nodes.NodesPackage; import org.eclipse.rmf.tests.serialization.util.AbstractTestCase; import org.eclipse.sphinx.emf.serialization.XMLPersistenceMappingResourceFactoryImpl; import org.junit.Before; import org.junit.Test; // Junit 3.8 test @SuppressWarnings("nls") public class FoereignNamespaceLoadTests extends AbstractTestCase { static final String INPUT_PATH = "org.eclipse.rmf.tests.serialization.load/"; @Override @Before public void setUp() throws Exception { super.setUp(); EPackage.Registry.INSTANCE.put(NodesPackage.eNS_URI, NodesPackage.eINSTANCE); EPackage.Registry.INSTANCE.put(EcorePackage.eNS_URI, EcorePackage.eINSTANCE); } @Test public void testEReference_Contained0001_Many_RegisteredPackage() { String inputFileName = INPUT_PATH + "EReference_WithTypeEObject_Contained0001Many_KnownNamespace.xml"; try { EObject modelRoot = loadInputFile(inputFileName, new XMLPersistenceMappingResourceFactoryImpl(), null); validateEPackageModelMany(modelRoot, NodesPackage.eINSTANCE.getNode_EReference_WithTypeEObject_Contained0001Many()); } catch (Exception ex) { ex.printStackTrace(); assertTrue(ex.getMessage(), false); } } @Test public void testEReference_Contained0001_Many_UnknownPackage() { String inputFileName = INPUT_PATH + "EReference_WithTypeEObject_Contained0001Many_UnknownNamespace.xml"; try { EObject modelRoot = loadInputFile(inputFileName, new XMLPersistenceMappingResourceFactoryImpl(), null); validateUnknownModelMany(modelRoot, NodesPackage.eINSTANCE.getNode_EReference_WithTypeEObject_Contained0001Many()); } catch (Exception ex) { ex.printStackTrace(); assertTrue(ex.getMessage(), false); } } @Test public void testEReference_Contained0001_Many_RedefinedEmptyUnknownNamespace() { String inputFileName = INPUT_PATH + "EReference_WithTypeEObject_Contained0001Many_RedefinedEmptyUnknownNamespace.xml"; try { EObject modelRoot = loadInputFile(inputFileName, new XMLPersistenceMappingResourceFactoryImpl(), null); validateUnknownModelMany(modelRoot, NodesPackage.eINSTANCE.getNode_EReference_WithTypeEObject_Contained0001Many()); } catch (Exception ex) { ex.printStackTrace(); assertTrue(ex.getMessage(), false); } } @Test public void testEReference_Contained0001_Many_RegisteredPackage_EmptyRootNamespace() { String inputFileName = INPUT_PATH + "EReference_WithTypeEObject_Contained0001Many_EmptyRootNamespace.xml"; try { EObject modelRoot = loadInputFile(inputFileName, new XMLPersistenceMappingResourceFactoryImpl(), null); validateEPackageModelMany(modelRoot, NodesPackage.eINSTANCE.getNode_EReference_WithTypeEObject_Contained0001Many()); } catch (Exception ex) { ex.printStackTrace(); assertTrue(ex.getMessage(), false); } } @Test public void testEReference_Contained0001_Many_RegisteredPackage_RedefinedEmptyNamespace() { String inputFileName = INPUT_PATH + "EReference_WithTypeEObject_Contained0001Many_RedefinedEmptyNamespace.xml"; try { EObject modelRoot = loadInputFile(inputFileName, new XMLPersistenceMappingResourceFactoryImpl(), null); validateEPackageModelMany(modelRoot, NodesPackage.eINSTANCE.getNode_EReference_WithTypeEObject_Contained0001Many()); } catch (Exception ex) { ex.printStackTrace(); assertTrue(ex.getMessage(), false); } } @Test public void testEReference_Contained0100_Many_RegisteredPackage() { String inputFileName = INPUT_PATH + "EReference_WithTypeEObject_Contained0100Many_KnownNamespace.xml"; try { EObject modelRoot = loadInputFile(inputFileName, new XMLPersistenceMappingResourceFactoryImpl(), null); validateEPackageModelMany(modelRoot, NodesPackage.eINSTANCE.getNode_EReference_WithTypeEObject_Contained0100Many()); } catch (Exception ex) { ex.printStackTrace(); assertTrue(ex.getMessage(), false); } } @Test public void testEReference_Contained0100_Many_UnknownPackage() { String inputFileName = INPUT_PATH + "EReference_WithTypeEObject_Contained0100Many_UnknownNamespace.xml"; try { EObject modelRoot = loadInputFile(inputFileName, new XMLPersistenceMappingResourceFactoryImpl(), null); validateUnknownModelMany(modelRoot, NodesPackage.eINSTANCE.getNode_EReference_WithTypeEObject_Contained0100Many()); } catch (Exception ex) { ex.printStackTrace(); assertTrue(ex.getMessage(), false); } } @Test public void testEReference_Contained0100_Many_RegisteredPackage_EmptyRootNamespace() { String inputFileName = INPUT_PATH + "EReference_WithTypeEObject_Contained0100Many_EmptyRootNamespace.xml"; try { EObject modelRoot = loadInputFile(inputFileName, new XMLPersistenceMappingResourceFactoryImpl(), null); validateEPackageModelMany(modelRoot, NodesPackage.eINSTANCE.getNode_EReference_WithTypeEObject_Contained0100Many()); } catch (Exception ex) { ex.printStackTrace(); assertTrue(ex.getMessage(), false); } } @Test public void testEReference_Contained0100_Many_RegisteredPackage_RedefinedEmptyNamespace() { String inputFileName = INPUT_PATH + "EReference_WithTypeEObject_Contained0100Many_RedefinedEmptyNamespace.xml"; try { EObject modelRoot = loadInputFile(inputFileName, new XMLPersistenceMappingResourceFactoryImpl(), null); validateEPackageModelMany(modelRoot, NodesPackage.eINSTANCE.getNode_EReference_WithTypeEObject_Contained0100Many()); } catch (Exception ex) { ex.printStackTrace(); assertTrue(ex.getMessage(), false); } } @Test public void testEReference_Contained0100_Many_RegisteredPackage_RedefinedEmptyUnknownNamespace() { String inputFileName = INPUT_PATH + "EReference_WithTypeEObject_Contained0100Many_RedefinedEmptyUnknownNamespace.xml"; try { EObject modelRoot = loadInputFile(inputFileName, new XMLPersistenceMappingResourceFactoryImpl(), null); validateUnknownModelMany(modelRoot, NodesPackage.eINSTANCE.getNode_EReference_WithTypeEObject_Contained0100Many()); } catch (Exception ex) { ex.printStackTrace(); assertTrue(ex.getMessage(), false); } } @SuppressWarnings("unchecked") protected void validateEPackageModelMany(EObject modelRoot, EStructuralFeature topFeature) { assert topFeature.isMany(); // check root node assertNotNull(modelRoot); assertSame(NodesPackage.eINSTANCE.getNode(), modelRoot.eClass()); Node node = (Node) modelRoot; // check intermediate nodes EList<Object> packages = (EList<Object>) node.eGet(topFeature); assertSame(2, packages.size()); Object packageObject1 = packages.get(0); assertTrue(packageObject1 instanceof EPackage); EPackage package1 = (EPackage) packageObject1; assertSame(2, package1.getEClassifiers().size()); Object packageObject2 = packages.get(0); assertTrue(packageObject2 instanceof EPackage); EPackage package2 = (EPackage) packageObject2; assertSame(2, package2.getEClassifiers().size()); } @SuppressWarnings("unchecked") protected void validateUnknownModelMany(EObject modelRoot, EStructuralFeature topFeature) { assert topFeature.isMany(); // check root node assertNotNull(modelRoot); assertSame(NodesPackage.eINSTANCE.getNode(), modelRoot.eClass()); Node node = (Node) modelRoot; // check intermediate nodes EList<Object> packages = (EList<Object>) node.eGet(topFeature); assertSame(2, packages.size()); Object packageObject1 = packages.get(0); assertTrue(packageObject1 instanceof AnyType); AnyType package1 = (AnyType) packageObject1; EClass ePackageClass1 = package1.eClass(); assertEquals("EPackage", ePackageClass1.getName()); assertSame(3, ePackageClass1.getFeatureCount()); assertSame(2, package1.getAny().size()); assertEquals("EPackage1", package1.getAnyAttribute().getValue(0)); assertEquals("eClassifiers", package1.getAny().get(0).getEStructuralFeature().getName()); assertEquals("EClass11", ((AnyType) package1.getAny().get(0).getValue()).getAnyAttribute().getValue(0)); assertEquals("EClass12", ((AnyType) package1.getAny().get(1).getValue()).getAnyAttribute().getValue(0)); Object packageObject2 = packages.get(1); assertTrue(packageObject2 instanceof AnyType); AnyType package2 = (AnyType) packageObject2; EClass ePackageClass2 = package2.eClass(); assertEquals("EPackage", ePackageClass2.getName()); assertSame(3, ePackageClass2.getFeatureCount()); assertSame(2, package2.getAny().size()); assertEquals("EPackage2", package2.getAnyAttribute().getValue(0)); assertEquals("eClassifiers", package2.getAny().get(0).getEStructuralFeature().getName()); assertEquals("EClass21", ((AnyType) package2.getAny().get(0).getValue()).getAnyAttribute().getValue(0)); assertEquals("EClass22", ((AnyType) package2.getAny().get(1).getValue()).getAnyAttribute().getValue(0)); } }