package org.bundlemaker.core.itest.misc_models;
import java.util.Collection;
import org.bundlemaker.core.analysis.AnalysisCore;
import org.bundlemaker.core.analysis.AnalysisModelConfiguration;
import org.bundlemaker.core.analysis.IBundleMakerArtifact;
import org.bundlemaker.core.analysis.IDependency;
import org.bundlemaker.core.analysis.IRootArtifact;
import org.bundlemaker.core.itestframework.AbstractBundleMakerModelTest;
import org.bundlemaker.core.itestframework.utils.ArtifactTestUtil;
import org.bundlemaker.core.jtype.IType;
import org.bundlemaker.core.jtype.ITypeModule;
import org.bundlemaker.core.jtype.ITypeResource;
import org.bundlemaker.core.resource.IModule;
import org.bundlemaker.core.resource.IModuleResource;
import org.eclipse.core.runtime.CoreException;
import org.junit.Assert;
import org.junit.Test;
/**
* <p>
* </p>
*
* @author Gerd Wütherich (gerd@gerd-wuetherich.de)
*/
public class InnerClassTest extends AbstractBundleMakerModelTest {
/**
* <p>
* </p>
*
* @throws CoreException
*/
@Test
public void testInnerClass() throws CoreException {
//
IModule resourceModule = getModularizedSystem().getModule("InnerClassTest", "1.0.0");
IType aType = resourceModule.adaptAs(ITypeModule.class).getType("de.test.innertypes.A");
IType bType = resourceModule.adaptAs(ITypeModule.class).getType("de.test.innertypes.B");
// test resources
Assert.assertNotNull(aType);
Assert.assertTrue(aType.hasBinaryResource());
Assert.assertTrue(aType.hasSourceResource());
IModuleResource aSourceResource = aType.getSourceResource();
Assert.assertTrue(aSourceResource.adaptAs(ITypeResource.class).isPrimaryType(aType));
Assert.assertFalse(aSourceResource.adaptAs(ITypeResource.class).isPrimaryType(bType));
Assert.assertNotNull(aSourceResource.adaptAs(ITypeResource.class).getContainedTypes());
Assert.assertEquals(aSourceResource.adaptAs(ITypeResource.class).getContainedTypes().size(), 4);
Assert.assertNotNull(bType);
Assert.assertTrue(bType.hasBinaryResource());
Assert.assertTrue(bType.hasSourceResource());
IModuleResource binaryResource = bType.getBinaryResource();
Assert.assertNotNull(binaryResource.getStickyResources());
Assert.assertEquals(1, binaryResource.getStickyResources().size());
IModuleResource bSourceResource = bType.getSourceResource();
Assert.assertSame(aSourceResource, bSourceResource);
// transform the model
IRootArtifact rootArtifact = AnalysisCore.getAnalysisModel(getModularizedSystem(),
AnalysisModelConfiguration.BINARY_RESOURCES_CONFIGURATION);
System.out.println(ArtifactTestUtil.toString(rootArtifact));
IBundleMakerArtifact aArtifact = rootArtifact
.getChild("InnerClassTest_1.0.0|de.test.innertypes|A.class|A");
Assert.assertNotNull(aArtifact);
IBundleMakerArtifact bArtifact = rootArtifact
.getChild("InnerClassTest_1.0.0|de.test.innertypes|B.class|B");
Assert.assertNotNull(bArtifact);
Collection<IDependency> dependencies = aArtifact.getDependenciesTo();
Assert.assertEquals(2, dependencies.size());
for (IDependency iDependency : dependencies) {
System.out.println(iDependency);
}
}
}