package com.opcoach.genmodeladdon.core.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import org.eclipse.core.resources.IFolder;
import org.eclipse.emf.codegen.ecore.genmodel.GenClass;
import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
import org.eclipse.emf.common.util.URI;
import org.junit.Test;
import com.opcoach.genmodeladdon.core.EMFPatternExtractor;
import com.opcoach.genmodeladdon.core.GenerateCommon;
import com.opcoach.genmodeladdon.core.GenerateDevStructure;
/** this test case controls the good name computation for packages classes like :
* MFanNoisePackage, FanNoisePackage, MFanNoiseFactory, FanNoiseFactory
* when the Prefix is set in the genmodel.
* It has been written to fix the issue #51 : https://github.com/opcoach/genModelAddon/issues/51
* @author olivier
*
*/
public class TestClassNames extends GenModelAddonTestCase
{
@Test
public void test_GenPackageClassName_WithPrefix()
{
GenModel gm = getGenModel(FANNOISE_GENMODEL);
GenerateDevStructure gen = getGenDevStructure(FANNOISE_GENMODEL);
GenPackage gp = findGenPackage(gm, "fannoise");
assertEquals("The dev factory interface name must be FanNoiseFactory", "FanNoiseFactory",
gen.computeFactoryInterfaceName(gp));
assertEquals("The dev factory class name must be FanNoiseFactoryImpl", "FanNoiseFactoryImpl",
gen.computeFactoryClassName(gp));
assertEquals("The gen factory interface name must be MFanNoiseFactory", "MFanNoiseFactory",
gen.computeGeneratedFactoryInterfaceName(gp));
assertEquals("The gen factory class name must be MFanNoiseFactoryImpl", "MFanNoiseFactoryImpl",
gen.computeGeneratedFactoryClassName(gp));
}
@Test
public void testClassNames()
{
GenModel gm = getGenModel(PROJECT_GENMODEL);
GenerateDevStructure gen = getGenDevStructure(PROJECT_GENMODEL);
GenClass gc = findGenClass(gm, "Project");
// Check interface and class names
assertEquals("The dev interface name must be Project", "Project", gen.computeInterfaceName(gc));
assertEquals("The dev class name must be ProjectImpl", "ProjectImpl", gen.computeClassname(gc));
assertEquals("The gen interface name must be MProject", "MProject", gen.computeGeneratedInterfaceName(gc));
assertEquals("The gen class name must be MProjectImpl", "MProjectImpl", gen.computeGeneratedClassName(gc));
// Check for packages names
GenPackage gp = findGenPackage(gm, "project");
assertEquals("The dev factory interface name must be ProjectFactory", "ProjectFactory",
gen.computeFactoryInterfaceName(gp));
assertEquals("The dev factory class name must be ProjectFactoryImpl", "ProjectFactoryImpl",
gen.computeFactoryClassName(gp));
assertEquals("The gen factory interface name must be MProjectFactory", "MProjectFactory",
gen.computeGeneratedFactoryInterfaceName(gp));
assertEquals("The gen factory class name must be MProjectFactoryImpl", "MProjectFactoryImpl",
gen.computeGeneratedFactoryClassName(gp));
}
}