blob: ecfbbf395eec67ff2183b0872bd172bed981afba [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007,2010 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.modelregistry;
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import java.util.List;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.ocl.examples.modelregistry.standalone.ModelFileResolver;
import org.eclipse.ocl.examples.modelregistry.standalone.JavaProjectHandle;
public class TestFileHandles extends ModelRegistryTestCase
{
public TestFileHandles(String name) {
super(name);
}
public void testEmptyProject() throws IOException {
String projectName = "emptyProject";
JavaProjectHandle projectHandle = getProjectFileHandle(projectName);
File registryFile = projectHandle.getRegistryFile();
ModelFileResolver modelResolver = new ModelFileResolver(projectHandle, registryFile);
URI uri = modelResolver.getURI("XYZZY");
assertNull("Null URI expected", uri);
}
public void testModelNameAccessor() throws IOException {
ModelFileResolver modelResolver = getModelFileResolver("testProject", "phantomFolder");
URI uri = modelResolver.getURI("ambiguousAccessor");
assertNotNull("Non-null uri expected for model:/name/accessor", uri);
assertEquals("Incorrect URI", "model:/name/accessor", uri.toString());
return;
}
public void testURIAccessor() throws IOException, URISyntaxException {
ModelFileResolver modelResolver = getModelFileResolver("testProject", "phantomFolder");
URI uri = modelResolver.getURI(new java.net.URI("ambiguousAccessor"));
assertNotNull("Non-null uri expected for uri:/accessor", uri);
assertEquals("Incorrect URI", "uri:/accessor", uri.toString());
return;
}
public void testMissingAccessor() throws IOException {
ModelFileResolver modelResolver = getModelFileResolver("testProject", "phantomFolder");
URI uri = modelResolver.getURI("missingAccessor");
assertNull("Null URI expected", uri);
return;
}
public void testMissingProject() throws IOException {
String projectName = "missingProject";
JavaProjectHandle projectHandle = getProjectFileHandle(projectName);
assertNull("Null ProjectFileHandle expected", projectHandle);
}
public void testProjectRelativeEcoreAccessor() throws Exception {
ModelFileResolver modelResolver = getModelFileResolver("testProject", "phantomFolder");
URI uri = modelResolver.getURI("ecoreRelativeFileAccessor");
assertNotNull("Non-null uri expected", uri);
Resource resource = modelResolver.getResource(uri, true);
assertNotNull("Non-null resource expected", resource);
List<EObject> contents = resource.getContents();
assertEquals("Single package", 1, contents.size());
EPackage ePackage = (EPackage) contents.get(0);
assertEquals("Package name", "miniecore", ePackage.getName());
assertEquals("Single class", 1, ePackage.getEClassifiers().size());
EClass eClass = (EClass) ePackage.getEClassifiers().get(0);
assertEquals("Class name", "MiniEcore", eClass.getName());
return;
}
/* public void testProjectRelativeEmofAccessor() throws Exception {
ModelFileResolver modelResolver = getModelFileResolver("testProject", "phantomFolder");
URI uri = modelResolver.getURI("emofRelativeFileAccessor");
assertNotNull("Non-null uri expected", uri);
Resource resource = modelResolver.getResource(uri, true);
assertNotNull("Non-null resource expected", resource);
List<EObject> contents = resource.getContents();
assertEquals("Single package", 1, contents.size());
EPackage ePackage = (EPackage) contents.get(0);
assertEquals("Package name", "miniemof", ePackage.getName());
assertEquals("Single class", 1, ePackage.getEClassifiers().size());
EClass eClass = (EClass) ePackage.getEClassifiers().get(0);
assertEquals("Class name", "MiniEmof", eClass.getName());
assertEquals("Single property", 1, eClass.getEStructuralFeatures().size());
EStructuralFeature eStructuralFeature = (EStructuralFeature) eClass.getEStructuralFeatures().get(0);
assertEquals("Property name", "miniEmof", eStructuralFeature.getName());
assertEquals("Property lower", 0, eStructuralFeature.getLowerBound());
assertEquals("Property upper", -1, eStructuralFeature.getUpperBound());
return;
} */
public void testUnregisteredAccessor() throws IOException {
String projectName = "testProject";
JavaProjectHandle projectHandle = getProjectFileHandle(projectName);
projectHandle.setRegistryName(".settings/missingaccessor.modelregistry");
setExpectedError("Unregistered accessor namespace 'MissingAccessor' used in '" + projectHandle.getRegistryURI() + "'");
File contextFile = new File(projectHandle.getFile(), "phantomFolder");
ModelFileResolver modelResolver = new ModelFileResolver(projectHandle, contextFile);
URI uri = modelResolver.getURI("missingAccessor");
assertNull("Null URI expected", uri);
return;
}
}