blob: 1e9fec02035dafb45075dfb752fe62f528cb76bd [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.robustness;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
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.EObject;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.xmi.FeatureNotFoundException;
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.rmf.tests.serialization.util.LoadSaveUtil;
import org.eclipse.sphinx.emf.serialization.XMLPersistenceMappingResourceFactoryImpl;
import org.junit.Before;
import org.junit.Test;
@SuppressWarnings("nls")
public class LoadPatternAttribute0100RobustnessTests extends AbstractTestCase {
static final String INPUT_PATH = "org.eclipse.rmf.tests.serialization.robustness/";
@Override
@Before
public void setUp() throws Exception {
super.setUp();
EPackage.Registry.INSTANCE.put(NodesPackage.eNS_URI, NodesPackage.eINSTANCE);
}
@Test
public void testEAttribute_Attribute0100_Single_NestedElements() {
String inputFileName = INPUT_PATH + "EAttribute_Attribute0100Single_NestedElements.xml";
try {
Resource resource = LoadSaveUtil.loadResource("resources/input/" + inputFileName, new XMLPersistenceMappingResourceFactoryImpl(), null);
assertSame(1, resource.getErrors().size());
assertTrue(resource.getErrors().get(0) instanceof FeatureNotFoundException);
validateEAttributeSingle(resource, NodesPackage.eINSTANCE.getNode_EAttribute_Attribute0100Single(),
NodesPackage.eINSTANCE.getNode_EAttribute_Attribute1100Single());
} catch (Exception ex) {
assertTrue(ex.getMessage(), false);
}
}
@Test
public void testEAttribute_Attribute0100_Many_NestedElements() {
String inputFileName = INPUT_PATH + "EAttribute_Attribute0100Many_NestedElements.xml";
try {
Resource resource = LoadSaveUtil.loadResource("resources/input/" + inputFileName, new XMLPersistenceMappingResourceFactoryImpl(), null);
assertSame(1, resource.getErrors().size());
assertTrue(resource.getErrors().get(0) instanceof FeatureNotFoundException);
validateEAttributeSingle(resource, NodesPackage.eINSTANCE.getNode_EAttribute_Attribute0100Many(),
NodesPackage.eINSTANCE.getNode_EAttribute_Attribute1100Many());
} catch (Exception ex) {
assertTrue(ex.getMessage(), false);
}
}
protected void validateEAttributeSingle(Resource resource, EStructuralFeature badFeature, EStructuralFeature goodFeature) {
assertNotNull(resource);
assertSame(1, resource.getContents().size());
EObject object = resource.getContents().get(0);
assertSame(NodesPackage.eINSTANCE.getNode(), object.eClass());
Node node = (Node) object;
assertFalse(node.eIsSet(badFeature));
assertTrue(node.eIsSet(goodFeature));
if (goodFeature.isMany()) {
assertEquals("value2", ((EList) node.eGet(goodFeature)).get(0));
} else {
assertEquals("value2", node.eGet(goodFeature));
}
}
}