package com.opcoach.genmodeladdon.core.test;
import org.junit.Test;
public class TestGenerics extends GenModelAddonTestCase
{
// -------------------------------------------------------------
// ------------------- Test gen classes for generic types --
// -------------------------------------------------------------
@Test
public void theGenFolderInterfaceMustBeGeneric()
{
assertFileContains("src-gen/com/opcoach/project/MFolder.java", "interface MFolder<T> extends EObject");
}
@Test
public void theGenFolderClassMustBeGeneric()
{
assertFileContains("src-gen/com/opcoach/project/impl/MFolderImpl.java",
"class MFolderImpl<T> extends MinimalEObjectImpl.Container implements Folder<T>");
}
@Test
public void theGenTaskFolderInterfaceMustExtendsFolderOfTask()
{
assertFileContains("src-gen/com/opcoach/project/MTaskFolder.java",
"public interface MTaskFolder extends Folder<Task>");
}
@Test
public void theGenTaskFolderClassMustBeGeneric()
{
assertFileContains("src-gen/com/opcoach/project/impl/MTaskFolderImpl.java",
"class MTaskFolderImpl extends FolderImpl<Task> implements TaskFolder");
}
@Test
public void theGenStoreInterfaceMustBeGeneric()
{
assertFileContains("src-gen/com/opcoach/project/MStore.java",
"public interface MStore<T, U> extends EObject");
}
@Test
public void theGenStoreClassMustBeGeneric()
{
assertFileContains("src-gen/com/opcoach/project/impl/MStoreImpl.java",
"public class MStoreImpl<T, U> extends MinimalEObjectImpl.Container implements Store<T, U>");
}
// -------------------------------------------------------------
// ------------------- Test dev classes for generic types --
// -------------------------------------------------------------
@Test
public void theDevFolderInterfaceMustBeGeneric()
{
assertFileContains("src/com/opcoach/project/Folder.java", "interface Folder<T> extends MFolder<T>");
}
@Test
public void theDevFolderClassMustBeGeneric()
{
assertFileContains("src/com/opcoach/project/impl/FolderImpl.java",
"class FolderImpl<T> extends MFolderImpl<T> implements Folder<T>");
}
@Test
public void theDevTaskFolderInterfaceMustBeGeneric()
{
assertFileContains("src/com/opcoach/project/TaskFolder.java", "interface TaskFolder extends MTaskFolder");
}
@Test
public void theDevTaskFolderClassMustBeGeneric()
{
assertFileContains("src/com/opcoach/project/impl/TaskFolderImpl.java",
"class TaskFolderImpl extends MTaskFolderImpl implements TaskFolder");
}
@Test
public void theDevFactoryInterfaceMustReturnGenericFolder()
{
assertFileContains("src/com/opcoach/project/ProjectFactory.java",
"public <T> Folder<T> createFolder()");
}
@Test
public void theDevFactoryClassMustReturnGenericFolder()
{
assertFileContains("src/com/opcoach/project/impl/ProjectFactoryImpl.java",
"public <T> Folder<T> createFolder()");
assertFileContains("src/com/opcoach/project/impl/ProjectFactoryImpl.java",
"Folder<T> result = new FolderImpl<T>()");
}
@Test
public void theDevStoreInterfaceMustBeGeneric()
{
assertFileContains("src/com/opcoach/project/Store.java", "public interface Store<T,U> extends MStore<T,U>");
}
@Test
public void theDevStoreClassMustBeGeneric()
{
assertFileContains("src/com/opcoach/project/impl/StoreImpl.java",
"public class StoreImpl<T,U> extends MStoreImpl<T,U> implements Store<T,U>");
}
}