/*
* Copyright 2014 Bernd Vogt and others.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.sourcepit.b2.model.module;
import junit.framework.TestCase;
import org.eclipse.emf.ecore.EObject;
import org.sourcepit.b2.model.module.test.internal.harness.EcoreUtils;
import org.sourcepit.b2.model.module.test.internal.harness.EcoreUtils.RunnableWithEObject;
public class ModuleTest extends TestCase {
public void testGetFacets() throws Exception {
EcoreUtils.foreachSupertype(ModuleModelPackage.eINSTANCE.getAbstractModule(), new RunnableWithEObject() {
public void run(EObject eObject) {
AbstractModule module = (AbstractModule) eObject;
assertNotNull(module.getFacets(PluginsFacet.class));
module.getFacets().add(ModuleModelFactory.eINSTANCE.createFeaturesFacet());
assertEquals(1, module.getFacets(FeaturesFacet.class).size());
module.getFacets().add(ModuleModelFactory.eINSTANCE.createFeaturesFacet());
assertEquals(2, module.getFacets(FeaturesFacet.class).size());
module.getFacets().add(ModuleModelFactory.eINSTANCE.createSitesFacet());
assertEquals(2, module.getFacets(FeaturesFacet.class).size());
assertEquals(1, module.getFacets(SitesFacet.class).size());
assertEquals(3, module.getFacets(ProjectFacet.class).size());
}
});
}
public void testHasFacets() throws Exception {
EcoreUtils.foreachSupertype(ModuleModelPackage.eINSTANCE.getAbstractModule(), new RunnableWithEObject() {
public void run(EObject eObject) {
AbstractModule module = (AbstractModule) eObject;
assertFalse(module.hasFacets(PluginsFacet.class));
module.getFacets().add(ModuleModelFactory.eINSTANCE.createFeaturesFacet());
assertTrue(module.hasFacets(FeaturesFacet.class));
module.getFacets().add(ModuleModelFactory.eINSTANCE.createFeaturesFacet());
assertTrue(module.hasFacets(FeaturesFacet.class));
module.getFacets().add(ModuleModelFactory.eINSTANCE.createSitesFacet());
assertTrue(module.hasFacets(FeaturesFacet.class));
assertTrue(module.hasFacets(SitesFacet.class));
assertTrue(module.hasFacets(ProjectFacet.class));
}
});
}
public void testGetFacetByType() throws Exception {
EcoreUtils.foreachSupertype(ModuleModelPackage.eINSTANCE.getAbstractModule(), new RunnableWithEObject() {
public void run(EObject eObject) {
AbstractModule module = (AbstractModule) eObject;
assertNull(module.getFacetByName(null));
assertNull(module.getFacetByName("plugins"));
FeaturesFacet features = ModuleModelFactory.eINSTANCE.createFeaturesFacet();
features.setName("features");
module.getFacets().add(features);
assertNull(module.getFacetByName("plugins"));
assertEquals(features, module.getFacetByName("features"));
PluginsFacet plugins = ModuleModelFactory.eINSTANCE.createPluginsFacet();
plugins.setName("plugins");
module.getFacets().add(plugins);
assertEquals(features, module.getFacetByName("features"));
assertEquals(plugins, module.getFacetByName("plugins"));
}
});
}
public void testResolveReference() throws Exception {
EcoreUtils.foreachSupertype(ModuleModelPackage.eINSTANCE.getAbstractModule(), new RunnableWithEObject() {
public void run(EObject eObject) {
AbstractModule module = (AbstractModule) eObject;
try {
module.resolveReference(null, PluginsFacet.class);
fail();
}
catch (IllegalArgumentException e) {
}
PluginProject project = ModuleModelFactory.eINSTANCE.createPluginProject();
project.setId("foo");
project.setVersion("1.0.0");
PluginProject project2 = ModuleModelFactory.eINSTANCE.createPluginProject();
project2.setId("foo");
project2.setVersion("2.0.0");
PluginsFacet facet = ModuleModelFactory.eINSTANCE.createPluginsFacet();
facet.getProjects().add(project);
facet.getProjects().add(project2);
module.getFacets().add(facet);
PluginInclude reference = ModuleModelFactory.eINSTANCE.createPluginInclude();
reference.setId("foo");
reference.setVersion("1.0.0");
assertSame(project, module.resolveReference(reference, PluginsFacet.class));
reference.setVersion("0.0.0");
assertSame(project, module.resolveReference(reference, PluginsFacet.class));
reference.setVersion("2.0.0");
assertSame(project2, module.resolveReference(reference, PluginsFacet.class));
}
});
}
}