| 1 package jdepend.framework; 2 3 import java.io.IOException ; 4 import java.text.NumberFormat ; 5 6 10 11 public class MetricTest extends JDependTestCase { 12 13 private JDepend jdepend; 14 private static NumberFormat formatter; 15 16 static { 17 formatter = NumberFormat.getInstance(); 18 formatter.setMaximumFractionDigits(2); 19 } 20 21 public MetricTest(String name) { 22 super(name); 23 } 24 25 protected void setUp() { 26 super.setUp(); 27 28 PackageFilter filter = new PackageFilter(); 29 filter.addPackage("java.*"); 30 filter.addPackage("javax.*"); 31 32 jdepend = new JDepend(filter); 33 jdepend.analyzeInnerClasses(false); 34 } 35 36 protected void tearDown() { 37 super.tearDown(); 38 } 39 40 public void testAnalyzeClassFiles() throws IOException { 41 jdepend.addDirectory(getBuildDir()); 42 assertAnalyzePackages(); 43 } 44 45 private void assertAnalyzePackages() { 46 47 assertEquals(39, jdepend.countClasses()); 48 49 PackageFilter filter = jdepend.getFilter(); 50 filter.addPackage("junit.*"); 51 52 jdepend.analyze(); 53 54 assertFrameworkPackage(); 55 assertTextUIPackage(); 56 assertSwingUIPackage(); 57 assertXmlUIPackage(); 58 } 59 60 private void assertFrameworkPackage() { 61 62 JavaPackage p = jdepend.getPackage("jdepend.framework"); 63 assertNotNull(p); 64 65 assertEquals(25, p.getConcreteClassCount()); 66 assertEquals(4, p.getAbstractClassCount()); 67 assertEquals(3, p.afferentCoupling()); 68 assertEquals(0, p.efferentCoupling()); 69 assertEquals(format(0.14f), format(p.abstractness())); 70 assertEquals(format(0.0f), format(p.instability())); 71 assertEquals(format(0.86f), format(p.distance())); 72 assertEquals(1, p.getVolatility()); 73 } 74 75 private void assertTextUIPackage() { 76 77 JavaPackage p = jdepend.getPackage("jdepend.textui"); 78 assertNotNull(p); 79 80 assertEquals(1, p.getConcreteClassCount()); 81 assertEquals(0, p.getAbstractClassCount()); 82 assertEquals(1, p.efferentCoupling()); 83 assertEquals("0", format(p.abstractness())); 84 assertEquals(1, p.afferentCoupling()); 85 assertEquals(format(0.5f), format(p.instability())); 86 assertEquals(format(0.5f), format(p.distance())); 87 assertEquals(1, p.getVolatility()); 88 } 89 90 private void assertSwingUIPackage() { 91 92 JavaPackage p = jdepend.getPackage("jdepend.swingui"); 93 assertNotNull(p); 94 95 assertEquals(7, p.getConcreteClassCount()); 96 assertEquals(1, p.getAbstractClassCount()); 97 assertEquals(0, p.afferentCoupling()); 98 assertEquals(1, p.efferentCoupling()); 99 assertEquals(format(0.12f), format(p.abstractness())); 100 assertEquals("1", format(p.instability())); 101 assertEquals(format(0.12f), format(p.distance())); 102 assertEquals(1, p.getVolatility()); 103 } 104 105 private void assertXmlUIPackage() { 106 107 JavaPackage p = jdepend.getPackage("jdepend.xmlui"); 108 assertNotNull(p); 109 110 assertEquals(1, p.getConcreteClassCount()); 111 assertEquals(0, p.getAbstractClassCount()); 112 assertEquals(0, p.afferentCoupling()); 113 assertEquals(2, p.efferentCoupling()); 114 assertEquals(format(0.0f), format(p.abstractness())); 115 assertEquals("1", format(p.instability())); 116 assertEquals(format(0.0f), format(p.distance())); 117 assertEquals(1, p.getVolatility()); 118 } 119 120 public void testConfiguredVolatility() throws IOException { 121 122 jdepend.addDirectory(getBuildDir()); 123 124 JavaPackage pkg = new JavaPackage("jdepend.swingui"); 125 pkg.setVolatility(0); 126 127 jdepend.addPackage(pkg); 128 129 jdepend.analyze(); 130 131 JavaPackage analyzedPkg = jdepend.getPackage(pkg.getName()); 132 assertEquals(0, analyzedPkg.getVolatility()); 133 assertEquals(format(0.0f), format(analyzedPkg.distance())); 134 assertEquals(7, analyzedPkg.getConcreteClassCount()); 135 } 136 137 private String format(float f) { 138 return formatter.format(f); 139 } 140 } | Popular Tags |