blob: 4c56d7abf384d54a095bde2421d0b891100fac8b [file] [log] [blame]
/**
* 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.serialization.XMLPersistenceMappingResourceFactoryImpl;
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.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));
}
}