blob: 35e35dc6aafbd33f3a7f36683621e63aefa27e77 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010, 2013 E.D.Willink 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:
* E.D.Willink - initial API and implementation
*******************************************************************************/
package org.eclipse.ocl.examples.test.xtext;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.eclipse.emf.common.EMFPlugin;
import org.eclipse.emf.common.util.TreeIterator;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.URIConverter;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.ocl.common.OCLConstants;
import org.eclipse.ocl.examples.common.utils.ClassUtils;
import org.eclipse.ocl.examples.domain.utilities.ProjectMap;
import org.eclipse.ocl.examples.domain.utilities.StandaloneProjectMap;
import org.eclipse.ocl.examples.domain.utilities.StandaloneProjectMap.IProjectDescriptor;
import org.eclipse.ocl.examples.pivot.OCL;
import org.eclipse.ocl.examples.pivot.OpaqueExpression;
import org.eclipse.ocl.examples.pivot.ParserException;
import org.eclipse.ocl.examples.pivot.PivotConstants;
import org.eclipse.ocl.examples.pivot.Root;
import org.eclipse.ocl.examples.pivot.delegate.DelegateInstaller;
import org.eclipse.ocl.examples.pivot.ecore.Ecore2Pivot;
import org.eclipse.ocl.examples.pivot.ecore.Pivot2Ecore;
import org.eclipse.ocl.examples.pivot.manager.MetaModelManager;
import org.eclipse.ocl.examples.pivot.manager.MetaModelManagerResourceSetAdapter;
import org.eclipse.ocl.examples.pivot.resource.ASResource;
import org.eclipse.ocl.examples.pivot.uml.Pivot2UML;
import org.eclipse.ocl.examples.pivot.uml.UML2Pivot;
import org.eclipse.ocl.examples.pivot.utilities.BaseResource;
import org.eclipse.ocl.examples.xtext.base.cs2as.CS2Pivot;
import org.eclipse.ocl.examples.xtext.base.cs2as.CS2Pivot.MessageBinder;
import org.eclipse.ocl.examples.xtext.base.utilities.BaseCSResource;
import org.eclipse.ocl.examples.xtext.base.utilities.CS2PivotResourceAdapter;
import org.eclipse.ocl.examples.xtext.completeocl.pivot2cs.CompleteOCLSplitter;
import org.eclipse.ocl.examples.xtext.essentialocl.services.EssentialOCLLinkingService;
import org.eclipse.ocl.examples.xtext.oclinecore.oclinecorecs.OCLinEcoreCSPackage;
import org.eclipse.ocl.examples.xtext.tests.XtextTestCase;
import org.eclipse.uml2.uml.UMLPackage;
import org.eclipse.uml2.uml.resource.UML402UMLExtendedMetaData;
import org.eclipse.xtext.resource.XtextResource;
import org.eclipse.xtext.util.EmfFormatter;
/**
* Test that an Ecore file can be loaded as OCLinEcore then saved back as Ecore.
*/
@SuppressWarnings("null")
public class RoundTripTests extends XtextTestCase
{
public Resource createEcoreFromPivot(MetaModelManager metaModelManager, ASResource asResource, URI ecoreURI) throws IOException {
Resource ecoreResource = Pivot2Ecore.createResource(metaModelManager, asResource, ecoreURI, null);
assertNoResourceErrors("To Ecore errors", ecoreResource);
if (ecoreURI != null) {
ecoreResource.save(null);
}
return ecoreResource;
}
public ASResource createPivotFromEcore(MetaModelManager metaModelManager, Resource ecoreResource) throws IOException {
Ecore2Pivot ecore2Pivot = Ecore2Pivot.getAdapter(ecoreResource, metaModelManager);
Root pivotRoot = ecore2Pivot.getPivotRoot();
ASResource asResource = (ASResource) pivotRoot.eResource();
assertNoResourceErrors("Ecore2Pivot failed", asResource);
assertNoValidationErrors("Ecore2Pivot invalid", asResource);
return asResource;
}
public ASResource createPivotFromXtext(MetaModelManager metaModelManager, BaseCSResource xtextResource, int expectedContentCount) throws IOException {
CS2PivotResourceAdapter adapter = null;
try {
adapter = xtextResource.getCS2ASAdapter(null);
ASResource asResource = adapter.getASResource(xtextResource);
assertNoResourceErrors("To Pivot errors", xtextResource);
assertNoUnresolvedProxies("Unresolved proxies", xtextResource);
List<EObject> pivotContents = asResource.getContents();
assertEquals(expectedContentCount, pivotContents.size());
assertNoValidationErrors("Pivot validation errors", pivotContents.get(0));
return asResource;
}
finally {
if (adapter != null) {
adapter.dispose();
}
}
}
public BaseCSResource createXtextFromPivot(MetaModelManager metaModelManager, ASResource asResource, URI xtextURI) throws IOException {
XtextResource xtextResource = (XtextResource) resourceSet.createResource(xtextURI, OCLinEcoreCSPackage.eCONTENT_TYPE);
((BaseCSResource) xtextResource).updateFrom(asResource, metaModelManager);
xtextResource.save(null);
assertNoResourceErrors("Conversion failed", xtextResource);
assertNoDiagnosticErrors("Concrete Syntax validation failed", xtextResource);
return (BaseCSResource) xtextResource;
}
public BaseCSResource createXtextFromURI(MetaModelManager metaModelManager, URI xtextURI) throws IOException {
ResourceSet resourceSet2 = metaModelManager.getExternalResourceSet();
// ProjectMap.initializeURIResourceMap(resourceSet2);
ProjectMap.initializeURIResourceMap(null);
// UMLUtils.initializeContents(resourceSet2);
BaseCSResource xtextResource = (BaseCSResource) resourceSet2.getResource(xtextURI, true);
assertNoResourceErrors("Load failed", xtextResource);
return xtextResource;
}
public BaseResource createCompleteOCLXtextFromPivot(MetaModelManager metaModelManager, ASResource asResource, URI xtextURI) throws IOException {
BaseResource xtextResource = (BaseResource) resourceSet.createResource(xtextURI, OCLinEcoreCSPackage.eCONTENT_TYPE);
xtextResource.updateFrom(asResource, metaModelManager);
xtextResource.save(null);
assertNoResourceErrors("Conversion failed", xtextResource);
assertNoDiagnosticErrors("Concrete Syntax validation failed", (XtextResource) xtextResource);
return xtextResource;
}
public void doRoundTripFromCompleteOCL(URI inputURI) throws IOException, InterruptedException {
MessageBinder savedMessageBinder = CS2Pivot.setMessageBinder(CS2Pivot.MessageBinderWithLineContext.INSTANCE);
StandaloneProjectMap projectMap = ProjectMap.getAdapter(resourceSet);
try {
projectMap.initializeResourceSet(resourceSet);
if (!resourceSet.getURIConverter().exists(inputURI, null)) {
return;
}
if (!EMFPlugin.IS_ECLIPSE_RUNNING) {
IProjectDescriptor projectDescriptor = projectMap.getProjectDescriptor("org.eclipse.uml2.uml");
projectDescriptor.initializeURIMap(URIConverter.URI_MAP); // *.ecore2xml must be global
}
// UMLUtils.initializeContentHandlers(resourceSet);
// UMLUtils.initializeContents(resourceSet);
// String inputName = stem + ".ocl";
// String outputName = stem + ".regenerated.ocl";
URI outputURI = inputURI.trimFileExtension().appendFileExtension("regenerated.ocl");
MetaModelManager metaModelManager1 = new MetaModelManager(projectMap);
MetaModelManagerResourceSetAdapter.getAdapter(resourceSet, metaModelManager1);
BaseCSResource xtextResource1 = createXtextFromURI(metaModelManager1, inputURI);
ASResource pivotResource1 = createPivotFromXtext(metaModelManager1, xtextResource1, 1);
ASResource pivotResource2 = CompleteOCLSplitter.separate(metaModelManager1, pivotResource1);
@SuppressWarnings("unused")
BaseResource xtextResource2 = createCompleteOCLXtextFromPivot(metaModelManager1, pivotResource2, outputURI);
metaModelManager1.dispose();
metaModelManager1 = null;
//
MetaModelManager metaModelManager3 = new MetaModelManager(projectMap);
BaseCSResource xtextResource3 = createXtextFromURI(metaModelManager3, outputURI);
@SuppressWarnings("unused")
ASResource pivotResource3 = createPivotFromXtext(metaModelManager3, xtextResource3, 1);
// Map<String,Object> options = new HashMap<String,Object>();
// options.put(MatchOptions.OPTION_IGNORE_ID, Boolean.TRUE);
// options.put(MatchOptions.OPTION_IGNORE_XMI_ID, Boolean.TRUE);
// ((NamedElement)pivotResource3.getContents().get(0)).setName(((NamedElement)pivotResource1.getContents().get(0)).getName());
// assertSameModel(pivotResource1, pivotResource3, options);
metaModelManager3.dispose();
}
finally {
projectMap.dispose();
CS2Pivot.setMessageBinder(savedMessageBinder);
}
}
public void doRoundTripFromEcore(String stem) throws IOException, InterruptedException {
doRoundTripFromEcore(stem, stem, null);
}
public void doRoundTripFromEcore(String stem, String reference, Map<String,Object> saveOptions) throws IOException, InterruptedException {
String inputName = stem + ".ecore";
URI inputURI = getProjectFileURI(inputName);
String referenceName = reference + ".ecore";
URI referenceURI = getProjectFileURI(referenceName);
doRoundTripFromEcore(inputURI, referenceURI, saveOptions);
}
protected void doRoundTripFromEcore(URI inputURI, URI referenceURI, Map<String,Object> saveOptions) throws IOException, InterruptedException {
String stem = inputURI.trimFileExtension().lastSegment();
String pivotName = stem + ".ecore.oclas";
String outputName = stem + ".regenerated.ecore";
URI pivotURI = getProjectFileURI(pivotName);
URI outputURI = getProjectFileURI(outputName);
MetaModelManager metaModelManager = new MetaModelManager();
ResourceSet resourceSet = metaModelManager.getExternalResourceSet();
Resource inputResource = resourceSet.getResource(inputURI, true);
assertNoResourceErrors("Ecore load", inputResource);
assertNoValidationErrors("Ecore load", inputResource);
try {
Ecore2Pivot ecore2Pivot = Ecore2Pivot.getAdapter(inputResource, metaModelManager);
Root pivotRoot = ecore2Pivot.getPivotRoot();
Resource asResource = pivotRoot.eResource();
asResource.setURI(pivotURI);
assertNoResourceErrors("Ecore2Pivot failed", asResource);
asResource.save(null);
assertNoValidationErrors("Ecore2Pivot invalid", asResource);
// int i = 0;
for (TreeIterator<EObject> tit = asResource.getAllContents(); tit.hasNext(); ) {
EObject eObject = tit.next();
if (eObject instanceof OpaqueExpression) {
// System.out.println(++i + ": " + eObject);
((OpaqueExpression) eObject).getExpressionInOCL();
tit.prune();
}
}
Resource outputResource = Pivot2Ecore.createResource(metaModelManager, asResource, inputURI, saveOptions);
assertNoResourceErrors("Ecore2Pivot failed", outputResource);
OutputStream outputStream = resourceSet.getURIConverter().createOutputStream(outputURI);
outputResource.save(outputStream, null);
outputStream.close();
assertNoValidationErrors("Ecore2Pivot invalid", outputResource);
// RootPackageCS csDocument = null; // FIXME Ecore2OCLinEcore.importFromEcore(resourceSet, null, leftResource);
// assertNoResourceErrors("From Ecore errors", csDocument.eResource());
// List<PackageCS> csObjects = new ArrayList<PackageCS>();
// csObjects.addAll(csDocument.getPackages());
// Resource middleResource = resourceSet.createResource(middleURI);
// middleResource.getContents().addAll(csObjects);
// middleResource.getContents().add(csDocument);
// middleResource.save(null);
// OCLinEcore2Ecore cs2e = new OCLinEcore2Ecore(resourceSet, middleResource, outputURI);
// Resource rightResource = cs2e.exportToEcore();
// assertNoResourceErrors("To Ecore errors", rightResource);
// rightResource.save(null);
// resourceSet.getResources().add(rightResource);
if (referenceURI != null) {
ResourceSetImpl resourceSet2 = new ResourceSetImpl();
StandaloneProjectMap.getAdapter(resourceSet).initializeResourceSet(resourceSet2);
Resource referenceResource = resourceSet2.getResource(referenceURI, true);
assertSameModel(referenceResource, outputResource);
}
} finally {
metaModelManager.dispose();
}
}
public void doRoundTripFromOCLinEcore(MetaModelManager metaModelManager1, String stem) throws IOException, InterruptedException {
String inputName = stem + ".oclinecore";
String ecoreName = stem + ".ecore";
String outputName = stem + ".regenerated.oclinecore";
URI inputURI = getProjectFileURI(inputName);
URI ecoreURI = getProjectFileURI(ecoreName);
URI outputURI = getProjectFileURI(outputName);
MetaModelManagerResourceSetAdapter.getAdapter(resourceSet, metaModelManager1);
BaseCSResource xtextResource1 = createXtextFromURI(metaModelManager1, inputURI);
ASResource pivotResource1 = createPivotFromXtext(metaModelManager1, xtextResource1, 1);
Resource ecoreResource = createEcoreFromPivot(metaModelManager1, pivotResource1, ecoreURI);
MetaModelManager metaModelManager2 = new MetaModelManager();
ASResource pivotResource2 = createPivotFromEcore(metaModelManager2, ecoreResource);
@SuppressWarnings("unused")
BaseCSResource xtextResource2 = createXtextFromPivot(metaModelManager2, pivotResource2, outputURI);
metaModelManager2.dispose();
metaModelManager2 = null;
//
MetaModelManager metaModelManager3 = new MetaModelManager();
BaseCSResource xtextResource3 = createXtextFromURI(metaModelManager3, outputURI);
ASResource pivotResource3 = createPivotFromXtext(metaModelManager3, xtextResource3, 1);
String expected = EmfFormatter.listToStr(pivotResource1.getContents());
String actual = EmfFormatter.listToStr(pivotResource3.getContents()).replace(".regenerated.oclinecore", ".oclinecore");
assertEquals(expected, actual);
metaModelManager3.dispose();
}
public void doRoundTripFromUml(String stem) throws IOException, InterruptedException, ParserException {
// Environment.Registry.INSTANCE.registerEnvironment(
// new UMLEnvironmentFactory().createEnvironment());
ResourceSet resourceSet = new ResourceSetImpl();
assertNull(OCL.initialize(resourceSet));
resourceSet.getPackageRegistry().put(UMLPackage.eNS_URI, UMLPackage.eINSTANCE);
// assertNull(org.eclipse.ocl.uml.OCL.initialize(null));
// org.eclipse.uml2.uml.Package umlMetamodel = (org.eclipse.uml2.uml.Package) resourceSet.getResource(
// URI.createURI(UMLResource.UML_METAMODEL_URI),
// true).getContents().get(0);
// org.eclipse.uml2.uml.Package umlPrimitiveTypes = (org.eclipse.uml2.uml.Package) resourceSet.getResource(
// URI.createURI(UMLResource.UML_PRIMITIVE_TYPES_LIBRARY_URI),
// true).getContents().get(0);
// org.eclipse.uml2.uml.Package ecorePrimitiveTypes = (org.eclipse.uml2.uml.Package) resourceSet.getResource(
// URI.createURI(UMLResource.ECORE_PRIMITIVE_TYPES_LIBRARY_URI),
// true).getContents().get(0);
String inputName = stem + ".uml";
String pivotName = stem + PivotConstants.DOT_OCL_AS_FILE_EXTENSION;
String outputName = stem + ".regenerated.uml";
URI inputURI = getProjectFileURI(inputName);
URI pivotURI = getProjectFileURI(pivotName);
URI outputURI = getProjectFileURI(outputName);
Resource inputResource = resourceSet.getResource(inputURI, true);
assertNoResourceErrors("UML load", inputResource);
assertNoValidationErrors("UML load", inputResource);
MetaModelManager pivotManager = new MetaModelManager();
UML2Pivot uml2Pivot = UML2Pivot.getAdapter(inputResource, pivotManager);
Root pivotRoot = uml2Pivot.getPivotRoot();
Resource asResource = pivotRoot.eResource();
asResource.setURI(pivotURI);
assertNoResourceErrors("UML2Pivot failed", asResource);
asResource.save(null);
assertNoValidationErrors("UML2Pivot invalid", asResource);
List<? extends EObject> outputObjects = new ArrayList<EObject>(Pivot2UML.createResource(pivotManager, asResource));
@SuppressWarnings("unchecked")
List<? extends org.eclipse.uml2.uml.NamedElement> castOutputObjects = (List<? extends org.eclipse.uml2.uml.NamedElement>)outputObjects;
outputObjects.remove(getNamedElement(castOutputObjects, "orphanage"));
if (outputObjects.size() == 1) {
outputObjects = ((org.eclipse.uml2.uml.Package)outputObjects.get(0)).getNestedPackages();
}
Resource outputResource = resourceSet.createResource(outputURI);
outputResource.getContents().addAll(outputObjects);
assertNoResourceErrors("UML2Pivot failed", outputResource);
outputResource.save(null);
assertNoValidationErrors("UML2Pivot invalid", outputResource);
assertSameModel(inputResource, outputResource);
}
public static <T extends org.eclipse.uml2.uml.NamedElement> T getNamedElement(Collection<T> elements, String name) {
if (elements == null)
return null;
for (T element : elements)
if (ClassUtils.equals(name, element.getName()))
return element;
return null;
}
public void testBug350894RoundTrip() throws IOException, InterruptedException {
String testFileA =
"package a : aa = 'aaa'\n" +
"{\n" +
"class A;\n" +
"}\n";
MetaModelManager metaModelManager1 = new MetaModelManager();
createEcoreFile(metaModelManager1, "Bug350894A", testFileA);
metaModelManager1.dispose();
String testFileB =
"import aa : 'Bug350894A.ecore#/';\n" +
"package b : bb = 'bbb'\n" +
"{\n" +
"class B\n" +
"{\n" +
"invariant alias: not oclIsKindOf(aa::A);\n" +
"invariant nsURI: not oclIsKindOf(aaa::A);\n" +
"invariant file: not oclIsKindOf(_'Bug350894A.ecore#/'::A);\n" +
"}\n" +
"}\n";
createOCLinEcoreFile("Bug350894B.oclinecore", testFileB);
MetaModelManager metaModelManager2 = new MetaModelManager();
doRoundTripFromOCLinEcore(metaModelManager2, "Bug350894B");
metaModelManager2.dispose();
}
public void testBug356243_oclinecore() throws IOException, InterruptedException {
String testFile =
"package any : any = 'http:/any'\n" +
"{\n" +
" class Bug356243\n" +
" {\n" +
" property is_always_typed : OclAny { ordered };\n" +
" }\n" +
"}\n";
createOCLinEcoreFile("Bug356243.oclinecore", testFile);
MetaModelManager metaModelManager = new MetaModelManager();
doRoundTripFromOCLinEcore(metaModelManager, "Bug356243");
metaModelManager.dispose();
}
public void testBug426927_oclinecore() throws IOException, InterruptedException {
String testFile =
"package any : any = 'http:/any'\n" +
"{\n" +
" enum Enums\n" +
" {\n" +
" literal ONE = 1;\n" +
" literal MINUS_ONE = -1;\n" +
" }\n" +
" class Bug426927\n" +
" {\n" +
" annotation {\n" +
" reference Enums::MINUS_ONE;\n" +
" }\n" +
" }\n" +
"}\n";
createOCLinEcoreFile("Bug426927.oclinecore", testFile);
MetaModelManager metaModelManager = new MetaModelManager();
doRoundTripFromOCLinEcore(metaModelManager, "Bug426927");
metaModelManager.dispose();
}
public void testAggregatesRoundTrip() throws IOException, InterruptedException {
String testFile =
"package b : bb = 'bbb'\n" +
"{\n" +
"class B\n" +
"{\n" +
"property bag1 : B[*] {!unique};\n" +
"property bag2 : Bag(B);\n" +
"property bag3 : B[3..5] {!unique};\n" +
// "property bag4 : Bag(B)[4..6];\n" +
"property setCollection : Set(Collection(B));\n" +
"property collection2 : Collection(B);\n" +
"property orderedset1 : B[*] {ordered};\n" +
"property orderedset2 : OrderedSet(B);\n" +
"property sequence1 : B[*] {ordered, !unique};\n" +
"property sequence2 : Sequence(B);\n" +
"property set1 : B[*];\n" +
"property set2 : Set(B);\n" +
// "property tuple : Tuple(b : B);\n" + // Bug 401938
"}\n" +
"}\n";
createOCLinEcoreFile("Aggregates.oclinecore", testFile);
MetaModelManager metaModelManager = new MetaModelManager();
doRoundTripFromOCLinEcore(metaModelManager, "Aggregates");
metaModelManager.dispose();
}
public void testCardinalityRoundTrip_402767() throws IOException, InterruptedException {
String testFile =
"package b : bb = 'bbb'\n" +
"{\n" +
"class B\n" +
"{\n" +
"property vBlank : Real;\n" +
"property vQuery : Real[?];\n" +
"property vPlus : Real[+];\n" +
"property vStar : Real[*];\n" +
"property vOne : Real[1];\n" +
"property vThree : Real[3];\n" +
"property vOne2Three : Real[1..3];\n" +
"property vThree2Three : Real[3..3];\n" +
"property vThree2Star : Real[3..*];\n" +
"}\n" +
"}\n";
createOCLinEcoreFile("Cardinality.oclinecore", testFile);
MetaModelManager metaModelManager = new MetaModelManager();
doRoundTripFromOCLinEcore(metaModelManager, "Cardinality");
metaModelManager.dispose();
}
public void testCommentsRoundTrip_405145() throws IOException, InterruptedException {
String testFile =
"package b : bb = 'bbb'\n" +
"{\n" +
"/* a simple comment */\n" +
"class B\n" +
"{\n" +
"/*\n" +
" * a multi line comment\n" +
" */\n" +
"property c1 : Real;\n" +
"/* another \n" +
" * multi line comment\n" +
" */\n" +
"property c2 : Real;\n" +
"/* an unformatted \n" +
" multi line comment\n" +
" */\n" +
"property c3 : Real;\n" +
"}\n" +
"}\n";
createOCLinEcoreFile("Comments.oclinecore", testFile);
MetaModelManager metaModelManager = new MetaModelManager();
doRoundTripFromOCLinEcore(metaModelManager, "Comments");
metaModelManager.dispose();
}
public void testInvariantCommentsRoundTrip_410682() throws IOException, InterruptedException {
String testFile =
"package b : bb = 'bbb'\n" +
"{\n" +
"class B\n" +
"{\n" +
"/* an invariant comment */\n" +
"invariant t : true;\n" +
"/* an operation comment */\n" +
"operation op(/* a parameter comment */p : Boolean, /* another parameter comment */q : Boolean) : Boolean\n" +
"{\n" +
"/* a precondition comment */\n" +
"precondition: p;\n" +
"/* another precondition comment */\n" +
"precondition too: p;\n" +
//Not supported "/* a body comment */\n" +
"body: p or q;\n" +
"/* a postcondition comment */\n" +
"postcondition: result = p;\n" +
"/* another postcondition comment */\n" +
"postcondition too: result = q;\n" +
"}\n" +
"}\n" +
"}\n";
createOCLinEcoreFile("InvariantComments.oclinecore", testFile);
MetaModelManager metaModelManager = new MetaModelManager();
doRoundTripFromOCLinEcore(metaModelManager, "InvariantComments");
metaModelManager.dispose();
}
public void testCompanyRoundTrip() throws IOException, InterruptedException {
doRoundTripFromEcore("Company", "Company.reference", null);
}
public void testEcoreRoundTrip() throws IOException, InterruptedException {
doRoundTripFromEcore("Ecore");
}
public void testEmptyRoundTrip() throws IOException, InterruptedException {
doRoundTripFromEcore("Empty");
}
public void testImportsRoundTrip() throws IOException, InterruptedException {
doRoundTripFromEcore("Imports");
}
public void testKeysRoundTrip() throws IOException, InterruptedException {
doRoundTripFromEcore("Keys");
}
public void testCompleteOCLRoundTrip_Fruit() throws IOException, InterruptedException {
Map<URI, URI> uriMap = resourceSet.getURIConverter().getURIMap();
uriMap.putAll(UML402UMLExtendedMetaData.getURIMap());
// EssentialOCLLinkingService.DEBUG_RETRY = true;
doRoundTripFromCompleteOCL(getProjectFileURI("Fruit.ocl"));
}
// public void testCompleteOCLRoundTrip_Infrastructure() throws IOException, InterruptedException {
// doRoundTripFromCompleteOCL("Infrastructure");
// }
public void testCompleteOCLRoundTrip_Names() throws IOException, InterruptedException {
doRoundTripFromCompleteOCL(getProjectFileURI("Names.ocl"));
}
public void testCompleteOCLRoundTrip_UML() throws IOException, InterruptedException {
URI uml_2_5 = URI.createPlatformResourceURI("UML-2.5/XMI-5-Jan-2012/Semanticed UML.ocl", false);
doRoundTripFromCompleteOCL(uml_2_5);
}
public void testOCLinEcoreCSTRoundTrip() throws IOException, InterruptedException {
URI uri = URI.createPlatformResourceURI("/org.eclipse.ocl.examples.xtext.oclinecore/model/OCLinEcoreCS.ecore", true);
// String stem = uri.trimFileExtension().lastSegment();
doRoundTripFromEcore(uri, uri, null); //null); // FIXME Compare is not quite right
}
public void testPivotRoundTrip() throws IOException, InterruptedException {
URI uri = URI.createPlatformResourceURI("/org.eclipse.ocl.examples.pivot/model/Pivot.ecore", true);
doRoundTripFromEcore(uri, uri, null);
}
// public void testEssentialOCLCSTRoundTrip() throws IOException, InterruptedException {
// ProjectMap.getAdapter(resourceSet);
// URI uri = URI.createPlatformResourceURI("/org.eclipse.ocl.examples.xtext.essentialocl/model/EssentialOCLCST.ecore", true);
// doRoundTripFromEcore(uri, "EssentialOCLCST");
// }
public void testOCLstdlibRoundTrip() throws IOException, InterruptedException {
doRoundTripFromEcore("OCLstdlib");
}
public void testOCLRoundTrip() throws IOException, InterruptedException {
Map<String,Object> options = new HashMap<String, Object>();
options.put(Pivot2Ecore.OPTION_ADD_INVARIANT_COMMENTS, true);
doRoundTripFromEcore("OCL", "OCL", options); // "OCL.reference");
}
public void testOCLCSTRoundTrip() throws IOException, InterruptedException {
doRoundTripFromEcore("OCLCST");
}
public void testOCLEcoreRoundTrip() throws IOException, InterruptedException {
doRoundTripFromEcore("OCLEcore");
}
/* BUG 377626
public void testQVTRoundTrip() throws IOException, InterruptedException {
doRoundTripFromEcore("QVT");
} */
public void testUML25RoundTrip() throws IOException, InterruptedException {
EssentialOCLLinkingService.DEBUG_RETRY = true;
URI uri = URI.createPlatformResourceURI("/org.eclipse.ocl.examples.uml25/model/UML.ecore", true);
Map<String,Object> options = new HashMap<String, Object>();
options.put(Pivot2Ecore.OPTION_ADD_INVARIANT_COMMENTS, true);
options.put(DelegateInstaller.OPTION_BOOLEAN_INVARIANTS, true);
options.put(OCLConstants.OCL_DELEGATE_URI, OCLConstants.OCL_DELEGATE_URI);
options.put(DelegateInstaller.OPTION_OMIT_SETTING_DELEGATES, true);
doRoundTripFromEcore(uri, uri, options);
}
public void testSysMLRoundTrip() throws IOException, InterruptedException {
String testFile =
"package b : bb = 'bbb'\n" +
"{\n" +
"class B\n" +
"{\n" +
"sysml { stereotype = 'SysML::Block'; }\n" +
"}\n" +
"}\n";
createOCLinEcoreFile("SysML.oclinecore", testFile);
MetaModelManager metaModelManager = new MetaModelManager();
doRoundTripFromOCLinEcore(metaModelManager, "SysML");
metaModelManager.dispose();
}
public void testTypes_ecore() throws IOException, InterruptedException {
doRoundTripFromEcore("Types");
}
public void testTypes_oclinecore() throws IOException, InterruptedException {
// BaseScopeProvider.LOOKUP.setState(true);
// EssentialOCLLinkingService.DEBUG_RETRY = true;
MetaModelManager metaModelManager = new MetaModelManager();
doRoundTripFromOCLinEcore(metaModelManager, "Types");
metaModelManager.dispose();
}
public void testXMLNamespaceRoundTrip() throws IOException, InterruptedException {
doRoundTripFromEcore("XMLNamespace");
}
public void testXMLTypeRoundTrip() throws IOException, InterruptedException {
doRoundTripFromEcore("XMLType");
}
// public void testMy_uml() throws IOException, InterruptedException {
// doRoundTripFromUml("My");
// }
// public void testTriangle_uml() throws IOException, InterruptedException {
// doRoundTripFromUml("Triangle");
// }
// public void testProfile_less_Ecore_metamodel_uml() throws IOException, InterruptedException {
// doRoundTripFromUml("Profile-less-Ecore.metamodel");
// }
}