package org.bundlemaker.core.itestframework.utils;
import static org.hamcrest.CoreMatchers.is;
import org.bundlemaker.core.analysis.IAnalysisModelVisitor;
import org.bundlemaker.core.analysis.IBundleMakerArtifact;
import org.bundlemaker.core.analysis.IGroupArtifact;
import org.bundlemaker.core.analysis.IModuleArtifact;
import org.bundlemaker.core.analysis.IPackageArtifact;
import org.bundlemaker.core.analysis.IResourceArtifact;
import org.bundlemaker.core.analysis.IResourceArtifact.IResourceArtifactContent;
import org.bundlemaker.core.analysis.IRootArtifact;
import org.bundlemaker.core.jtype.ITypeArtifact;
import org.bundlemaker.core.spi.analysis.IReferencedArtifact;
import org.bundlemaker.core.spi.analysis.IReferencingArtifact;
import org.junit.Assert;
public class ArtifactVisitorUtils {
/**
* <p>
* </p>
*
*/
public static void checkDependencies(IBundleMakerArtifact artifact, int coreDependenciesTo, int coreDependenciesFrom) {
//
final int[] cumulatedDependencies = new int[2];
//
artifact.accept(new IAnalysisModelVisitor.Adapter() {
@Override
public boolean onVisit(IBundleMakerArtifact artifact) {
//
if (artifact instanceof IReferencingArtifact) {
int dependenciesCount = ((IReferencingArtifact) artifact).getDependenciesTo().size();
cumulatedDependencies[0] += dependenciesCount;
}
//
if (artifact instanceof IReferencedArtifact) {
int dependenciesCount = ((IReferencedArtifact) artifact).getDependenciesFrom().size();
cumulatedDependencies[1] += dependenciesCount;
}
//
return super.onVisit(artifact);
}
});
Assert.assertThat(cumulatedDependencies[0], is(coreDependenciesTo));
Assert.assertThat(cumulatedDependencies[1], is(coreDependenciesFrom));
}
public static void countArtifacts(IBundleMakerArtifact artifact, int rootCount, int groupCount, int moduleCount,
int packageCount, int resourceCount, int typeCount) {
//
final int[] resultCount = new int[7];
artifact.accept(new IAnalysisModelVisitor.Adapter() {
@Override
public boolean visit(IRootArtifact rootArtifact) {
resultCount[0]++;
return true;
}
@Override
public boolean visit(IGroupArtifact rootArtifact) {
resultCount[1]++;
return true;
}
@Override
public boolean visit(IModuleArtifact moduleArtifact) {
resultCount[2]++;
return true;
}
@Override
public boolean visit(IPackageArtifact packageArtifact) {
resultCount[3]++;
return true;
}
@Override
public boolean visit(IResourceArtifact resourceArtifact) {
resultCount[4]++;
return true;
}
@Override
public boolean visit(IResourceArtifactContent typeArtifact) {
resultCount[5]++;
return true;
}
});
Assert.assertEquals(rootCount, resultCount[0]);
Assert.assertEquals(groupCount, resultCount[1]);
Assert.assertEquals(moduleCount, resultCount[2]);
Assert.assertEquals(packageCount, resultCount[3]);
Assert.assertEquals(resourceCount, resultCount[4]);
Assert.assertEquals(typeCount, resultCount[5]);
}
}