package org.bundlemaker.core.itest.jedit_artifact_model;
import org.bundlemaker.core.analysis.AnalysisModelQueries;
import org.bundlemaker.core.analysis.IAnalysisModelVisitor;
import org.bundlemaker.core.analysis.IBundleMakerArtifact;
import org.bundlemaker.core.analysis.IModuleArtifact;
import org.bundlemaker.core.analysis.IResourceArtifact.IResourceArtifactContent;
import org.bundlemaker.core.analysis.IRootArtifact;
import org.bundlemaker.core.itestframework.jedit_model.AbstractJeditAnalysisModelTest;
import org.bundlemaker.core.jtype.ITypeArtifact;
import org.junit.Assert;
import org.junit.Test;
/**
* <p>
* </p>
*
* @author Gerd Wütherich (gerd@gerd-wuetherich.de)
*/
public class MissingTypesTest extends AbstractJeditAnalysisModelTest {
@Test
public void missingTypes_BinFlatModel() {
missingTypes(getBinFlatModel().getRootArtifact());
}
@Test
public void missingTypes_SrcFlatModel() {
missingTypes(getSrcFlatModel().getRootArtifact());
}
@Test
public void missingTypes_BinHierarchicalModel() {
missingTypes(getBinHierarchicalModel().getRootArtifact());
}
@Test
public void missingTypes_SrcHierarchicalModel() {
missingTypes(getSrcHierarchicalModel().getRootArtifact());
}
/**
* <p>
* </p>
*
* @param rootArtifact
*/
private void missingTypes(IRootArtifact rootArtifact) {
// get the 'missing types' module artifact
IModuleArtifact moduleArtifact = AnalysisModelQueries.getMissingTypesModuleArtifact(rootArtifact);
Assert.assertNotNull(moduleArtifact);
// the missing type count
final int[] missingTypesCount = new int[1];
// assert 'virtual' & type count
moduleArtifact.accept(new IAnalysisModelVisitor.Adapter() {
@Override
public boolean visit(IResourceArtifactContent resourceArtifactContent) {
if (!(resourceArtifactContent instanceof ITypeArtifact)) {
return false;
}
missingTypesCount[0]++;
return false;
}
@Override
public boolean onVisit(IBundleMakerArtifact artifact) {
Assert.assertTrue(artifact.isVirtual());
return true;
}
});
//
Assert.assertEquals(52, missingTypesCount[0]);
}
}