package org.bundlemaker.core.itest.jedit_artifact_model;
import java.util.Set;
import junit.framework.Assert;
import org.bundlemaker.core.analysis.AnalysisModelQueries;
import org.bundlemaker.core.analysis.IBundleMakerArtifact;
import org.bundlemaker.core.analysis.IResourceArtifact;
import org.bundlemaker.core.itestframework.jedit_model.AbstractJeditAnalysisModelTest;
import org.junit.Test;
/**
* <p>
* </p>
*
* @author Gerd Wütherich (gerd@gerd-wuetherich.de)
*/
public class TransitiveClosureTest extends AbstractJeditAnalysisModelTest {
/**
* <p>
* </p>
*/
@Test
public void testBinHierarchicalTransitiveClosures() {
//
IResourceArtifact resourceArtifact = AnalysisModelQueries.findResourceArtifactByQualifiedName(
getBinHierarchicalModel().getRootArtifact(), "org/gjt/sp/jedit/search/AllBufferSet.class");
Assert.assertNotNull(resourceArtifact);
//
computeAndAssertTransitiveClosure(resourceArtifact, 5, 901);
}
/**
* <p>
* </p>
*/
@Test
public void testSrcHierarchicalTransitiveClosures() {
//
IResourceArtifact resourceArtifact = AnalysisModelQueries.findResourceArtifactByQualifiedName(
getSrcHierarchicalModel().getRootArtifact(), "org/gjt/sp/jedit/search/AllBufferSet.java");
Assert.assertNotNull(resourceArtifact);
//
computeAndAssertTransitiveClosure(resourceArtifact, 5, 901);
}
/**
* <p>
* </p>
*/
@Test
public void testBinFlatTransitiveClosures() {
//
IResourceArtifact resourceArtifact = AnalysisModelQueries.findResourceArtifactByQualifiedName(getBinFlatModel()
.getRootArtifact(), "org/gjt/sp/jedit/search/AllBufferSet.class");
Assert.assertNotNull(resourceArtifact);
//
computeAndAssertTransitiveClosure(resourceArtifact, 5, 901);
}
/**
* <p>
* </p>
*/
@Test
public void testSrcFlatTransitiveClosures() {
//
IResourceArtifact resourceArtifact = AnalysisModelQueries.findResourceArtifactByQualifiedName(getSrcFlatModel()
.getRootArtifact(), "org/gjt/sp/jedit/search/AllBufferSet.java");
Assert.assertNotNull(resourceArtifact);
//
computeAndAssertTransitiveClosure(resourceArtifact, 5, 901);
}
/**
* <p>
* </p>
*
* @param rootArtifact
*/
private void computeAndAssertTransitiveClosure(IBundleMakerArtifact artifact, int directlyReferencedCount,
int indirectlyReferencedCount) {
//
Set<IBundleMakerArtifact> indirectlyReferencedArtifacts = AnalysisModelQueries
.getIndirectlyReferencedArtifacts(artifact);
Set<IBundleMakerArtifact> directlyReferencedArtifacts = AnalysisModelQueries
.getDirectlyReferencedArtifacts(artifact);
//
Assert.assertEquals(directlyReferencedCount, directlyReferencedArtifacts.size());
Assert.assertEquals(indirectlyReferencedCount, indirectlyReferencedArtifacts.size());
}
}