package org.jboss.windup.rules.apps.java.service; import java.util.Collections; import java.util.Map; import java.util.Set; import javax.inject.Inject; import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.junit.Arquillian; import org.jboss.forge.arquillian.AddonDependencies; import org.jboss.forge.arquillian.AddonDependency; import org.jboss.forge.arquillian.archive.AddonArchive; import org.jboss.shrinkwrap.api.ShrinkWrap; import org.jboss.windup.ast.java.data.ResolutionStatus; import org.jboss.windup.ast.java.data.TypeReferenceLocation; import org.jboss.windup.graph.GraphContext; import org.jboss.windup.graph.GraphContextFactory; import org.jboss.windup.graph.model.ProjectModel; import org.jboss.windup.graph.model.resource.FileModel; import org.jboss.windup.reporting.model.InlineHintModel; import org.jboss.windup.reporting.service.InlineHintService; import org.jboss.windup.rules.apps.java.scan.ast.JavaTypeReferenceModel; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; @RunWith(Arquillian.class) public class TypeReferenceServiceTest { @Deployment @AddonDependencies({ @AddonDependency(name = "org.jboss.windup.config:windup-config"), @AddonDependency(name = "org.jboss.windup.graph:windup-graph"), @AddonDependency(name = "org.jboss.windup.reporting:windup-reporting"), @AddonDependency(name = "org.jboss.windup.rules.apps:windup-rules-base"), @AddonDependency(name = "org.jboss.windup.rules.apps:windup-rules-java"), @AddonDependency(name = "org.jboss.forge.furnace.container:cdi") }) public static AddonArchive getDeployment() { return ShrinkWrap.create(AddonArchive.class).addBeansXML(); } @Inject private GraphContextFactory factory; @Test public void testGetPackageUseFrequencies() throws Exception { try (GraphContext context = factory.create()) { Assert.assertNotNull(context); TypeReferenceService typeReferenceService = new TypeReferenceService(context); ProjectModel projectModel = fillData(context); Set<String> emptySet = Collections.emptySet(); Map<String, Integer> data = typeReferenceService.getPackageUseFrequencies(projectModel, emptySet, emptySet, 2, false); Assert.assertEquals(1, data.size()); Assert.assertEquals("com.example.*", data.keySet().iterator().next()); Assert.assertEquals(Integer.valueOf(2), data.values().iterator().next()); } } private ProjectModel fillData(GraphContext context) { InlineHintService inlineHintService = new InlineHintService(context); TypeReferenceService typeReferenceService = new TypeReferenceService(context); FileModel f1 = context.getFramed().addVertex(null, FileModel.class); f1.setFilePath("/f1"); FileModel f2 = context.getFramed().addVertex(null, FileModel.class); f2.setFilePath("/f2"); JavaTypeReferenceModel t1 = typeReferenceService.createTypeReference(f1, TypeReferenceLocation.ANNOTATION, ResolutionStatus.RESOLVED, 0, 2, 2, "com.example.Class1", "@Class1"); JavaTypeReferenceModel t2 = typeReferenceService.createTypeReference(f1, TypeReferenceLocation.ANNOTATION, ResolutionStatus.RESOLVED, 0, 2, 2, "com.example.Class1", "@Class1"); InlineHintModel b1 = inlineHintService.create(); InlineHintModel b1b = inlineHintService.create(); b1.setFile(f1); b1.setFileLocationReference(t1); b1b.setFile(f1); b1b.setFileLocationReference(t2); ProjectModel projectModel = context.getFramed().addVertex(null, ProjectModel.class); projectModel.addFileModel(f1); projectModel.addFileModel(f2); return projectModel; } }