blob: ad886319f76017342193ed6277a0fbf8ec98af97 [file] [log] [blame]
/**
* <copyright>
*
* Copyright (c) 2014 itemis 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
* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
*
* Contributors:
* itemis - Initial API and implementation
*
* </copyright>
*/
package org.eclipse.sphinx.tests.emf.serialization.generators;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EClassifier;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.util.ExtendedMetaData;
import org.eclipse.sphinx.emf.serialization.XMLPersistenceMappingExtendedMetaData;
import org.eclipse.sphinx.emf.serialization.generators.persistencemapping.CreateDefaultXSDExtendedMetaData;
import org.eclipse.sphinx.tests.emf.serialization.generators.util.LoadSaveUtil;
import org.junit.BeforeClass;
import org.junit.Test;
@SuppressWarnings("nls")
public class CreateDefaultXMLPersistenceMappingExtendedMetadataTests {
static EPackage annotatedEPackage;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
EPackage ePackage = LoadSaveUtil.loadEcorePackage("resources/input/model/Nodes.ecore");
CreateDefaultXSDExtendedMetaData defaultXmlPersistenceExtendedMetadataGenerator = new CreateDefaultXSDExtendedMetaData(ePackage, "Nodes");
annotatedEPackage = defaultXmlPersistenceExtendedMetadataGenerator.execute(new NullProgressMonitor());
}
@Test
public void testNotNull() {
assertNotNull(annotatedEPackage);
}
@Test
public void testNodeEclassAnnotations() {
EClass nodeEClass = getNodeEClass();
assertEquals("NODE", EcoreUtil.getAnnotation(nodeEClass, ExtendedMetaData.ANNOTATION_URI, XMLPersistenceMappingExtendedMetaData.NAME));
assertEquals("NODES", EcoreUtil.getAnnotation(nodeEClass,
XMLPersistenceMappingExtendedMetaData.XML_PERSISTENCE_MAPPING_ANNOTATION_SOURCE_URI,
XMLPersistenceMappingExtendedMetaData.WRAPPER_NAME));
}
@Test
public void testSubNodeEclassAnnotations() {
EClass subNodeEClass = getSubNodeEClass();
assertEquals("SUB-NODE", EcoreUtil.getAnnotation(subNodeEClass, ExtendedMetaData.ANNOTATION_URI, XMLPersistenceMappingExtendedMetaData.NAME));
assertEquals("SUB-NODES", EcoreUtil.getAnnotation(subNodeEClass,
XMLPersistenceMappingExtendedMetaData.XML_PERSISTENCE_MAPPING_ANNOTATION_SOURCE_URI,
XMLPersistenceMappingExtendedMetaData.WRAPPER_NAME));
}
@Test
public void testChildEReferenceAnnotations() {
EReference childEReference = getNodeChildEReference();
assertEquals("CHILD", EcoreUtil.getAnnotation(childEReference, ExtendedMetaData.ANNOTATION_URI, XMLPersistenceMappingExtendedMetaData.NAME));
// assertEquals("##targetNamespace", EcoreUtil.getAnnotation(childEReference, ExtendedMetaData.ANNOTATION_URI,
// "namespace"));
assertEquals("CHILDS", EcoreUtil.getAnnotation(childEReference,
XMLPersistenceMappingExtendedMetaData.XML_PERSISTENCE_MAPPING_ANNOTATION_SOURCE_URI,
XMLPersistenceMappingExtendedMetaData.WRAPPER_NAME));
assertEquals("true", EcoreUtil.getAnnotation(childEReference,
XMLPersistenceMappingExtendedMetaData.XML_PERSISTENCE_MAPPING_ANNOTATION_SOURCE_URI,
XMLPersistenceMappingExtendedMetaData.FEATURE_WRAPPER_ELEMENT));
assertEquals("false", EcoreUtil.getAnnotation(childEReference,
XMLPersistenceMappingExtendedMetaData.XML_PERSISTENCE_MAPPING_ANNOTATION_SOURCE_URI,
XMLPersistenceMappingExtendedMetaData.FEATURE_ELEMENT));
assertEquals("false", EcoreUtil.getAnnotation(childEReference,
XMLPersistenceMappingExtendedMetaData.XML_PERSISTENCE_MAPPING_ANNOTATION_SOURCE_URI,
XMLPersistenceMappingExtendedMetaData.CLASSIFIER_WRAPPER_ELEMENT));
assertEquals("true", EcoreUtil.getAnnotation(childEReference,
XMLPersistenceMappingExtendedMetaData.XML_PERSISTENCE_MAPPING_ANNOTATION_SOURCE_URI,
XMLPersistenceMappingExtendedMetaData.CLASSIFIER_ELEMENT));
}
public EClass getNodeEClass() {
return getEClass("Node");
}
public EClass getSubNodeEClass() {
return getEClass("SubNode");
}
public EReference getNodeChildEReference() {
EClass nodeEClass = getNodeEClass();
EStructuralFeature childEStructuralFeature = nodeEClass.getEStructuralFeature("child");
assertNotNull(childEStructuralFeature);
assertTrue(childEStructuralFeature instanceof EReference);
return (EReference) childEStructuralFeature;
}
public EClass getEClass(String name) {
EClassifier eClassifier = annotatedEPackage.getEClassifier(name);
assertNotNull(eClassifier);
assertTrue(eClassifier instanceof EClass);
return (EClass) eClassifier;
}
}