package br.uff.ic.gems.peixeespadacliente;
import br.uff.ic.gems.peixeespadacliente.model.ProjectVCS;
import br.uff.ic.gems.peixeespadacliente.utils.Archive;
import br.uff.ic.gems.peixeespadacliente.utils.ProjectUtils;
import net.sf.refactorit.classmodel.BinCIType;
import net.sf.refactorit.classmodel.BinCITypeRef;
import net.sf.refactorit.classmodel.BinMethod;
import net.sf.refactorit.classmodel.BinPackage;
import net.sf.refactorit.classmodel.Project;
import net.sf.refactorit.metrics.CyclicDependencyMetric;
import net.sf.refactorit.metrics.DipMetric;
import net.sf.refactorit.metrics.DirectCyclicDependencyMetric;
import net.sf.refactorit.metrics.DistanceMetric;
import net.sf.refactorit.metrics.EpMetric;
import net.sf.refactorit.metrics.LackOfCohesionMetric;
import net.sf.refactorit.metrics.LspMetric;
import net.sf.refactorit.metrics.NumberOfTrampsMetric;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
/**
* Unit test for simple App.
*/
public class TesteMetricas {
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
private static Project project;
@BeforeClass
public static void setUpClass() throws Exception {
// SetupUtils.setup();
project = ProjectUtils.getProjectRefactoring(getProjectVCSFake());
project.getProjectLoader().build();
}
@AfterClass
public static void tearDownClass() throws Exception {
}
// @Before
// public void setUp() {
// }
//
// @After
// public void tearDown() {
// }
private static Archive getArquivo(String nomeArquivo){
return new Archive(nomeArquivo);
}
@Test
public void testDipMetric() {
Archive archive = getArquivo("DipMetric.txt");
for (Object object : project.getDefinedTypes()) {
BinCITypeRef bcitr = (BinCITypeRef) object;
archive.openAppendAndClose("Classe = " + bcitr.getName());
archive.openAppendAndClose(" DipMetric =" + DipMetric.calculate(bcitr.getBinCIType()));
}
}
@Test
public void testDirectCyclicDependencyMetric() {
Archive archive = getArquivo("DirectCyclicDependencyMetric.txt");
for (BinPackage binPackage : project.getAllPackages()) {
archive.openAppendAndClose("Package =" + binPackage.getQualifiedName());
archive.openAppendAndClose(" DirectCyclicDependencyMetric = " + DirectCyclicDependencyMetric.calculate(binPackage));
}
}
@Test
public void testEpMetric() {
Archive archive = getArquivo("EpMetric.txt");
for (BinPackage binPackage : project.getAllPackages()) {
archive.openAppendAndClose("Package =" + binPackage.getQualifiedName());
archive.openAppendAndClose(" EpMetric = " + EpMetric.calculate(binPackage));
}
}
// @Test
public void testCyclicDependencyMetric() {
CyclicDependencyMetric.calculate(null, null);
}
@Test
public void testDisgnSizeInClass() {
Archive archive = getArquivo("DisgnSizeInClass.txt");
int count = 0;
for (Object object : project.getDefinedTypes()) {
final BinCITypeRef bcitr = (BinCITypeRef) object;
BinCIType bcit = bcitr.getBinCIType();
if(bcit.isClass()){
count++;
archive.openAppendAndClose("Classe = "+bcitr.getName());
}else{
System.out.println("Interface ou Abstrato "+bcitr.getName());
}
}
archive.openAppendAndClose("Quantidade = "+count);
}
// @Test
public void testLspMetric() {
Archive archive = getArquivo("LspMetric.txt");
for (BinPackage binPackage : project.getAllPackages()) {
archive.openAppendAndClose("Package =" + binPackage.getQualifiedName());
archive.openAppendAndClose(" LspMetric = " + LspMetric.calculate(binPackage));
}
}
@Test
public void testDistanceMetric() {
Archive archive = getArquivo("DistanceMetric.txt");
for (BinPackage binPackage : project.getAllPackages()) {
archive.openAppendAndClose("Package =" + binPackage.getQualifiedName());
archive.openAppendAndClose(" DistanceMetric = " + DistanceMetric.calculate(binPackage));
}
// DistanceMetric.calculate(instability, abstractness);
}
@Test
public void testNumberOfTrampsMetric() {
Archive archive = getArquivo("NumberOfTrampsMetric.txt");
for (Object object : project.getDefinedTypes()) {
final BinCITypeRef bcitr = (BinCITypeRef) object;
BinMethod[] binMethods = bcitr.getBinCIType().getDeclaredMethods();
archive.openAppendAndClose("Metodos da Classe = "+bcitr.getName());
if(binMethods != null) {
for (BinMethod binMethod : binMethods) {
archive.openAppendAndClose(" " + binMethod);
archive.openAppendAndClose(" NumberOfTrampsMetric = " + NumberOfTrampsMetric.calculate(binMethod));
}
}
}
}
@Test
public void testLackOfCohesionMetric() {
Archive archive = getArquivo("LackOfCohesionMetric.txt");
for (Object object : project.getDefinedTypes()) {
BinCITypeRef bcitr = (BinCITypeRef) object;
archive.openAppendAndClose("Classe = " + bcitr.getName());
archive.openAppendAndClose(" LackOfCohesionMetric =" + LackOfCohesionMetric.calculate(bcitr.getBinCIType()));
}
}
private static ProjectVCS getProjectVCSFake() {
ProjectVCS projectVCS = new ProjectVCS();
projectVCS.setName("Oceano");
projectVCS.setLocalPath("G:\\Users\\Heliomar\\Documents\\NetBeansProjects\\P6\\");
return projectVCS;
}
}