1 package jdepend.framework; 2 3 import java.util.ArrayList ; 4 import java.util.Iterator ; 5 import java.util.List ; 6 7 11 12 public class CycleTest extends JDependTestCase { 13 14 public CycleTest(String name) { 15 super(name); 16 } 17 18 public void testNoCycles() { 19 20 JavaPackage a = new JavaPackage("A"); 21 JavaPackage b = new JavaPackage("B"); 22 23 a.dependsUpon(b); 24 25 List aCycles = new ArrayList (); 26 assertEquals(false, a.containsCycle()); 27 assertEquals(false, a.collectCycle(aCycles)); 28 assertListEquals(aCycles, new String [] {}); 29 30 List bCycles = new ArrayList (); 31 assertEquals(false, b.containsCycle()); 32 assertEquals(false, b.collectCycle(bCycles)); 33 assertListEquals(bCycles, new String [] {}); 34 } 35 36 public void test2Node1BranchCycle() { 37 38 JavaPackage a = new JavaPackage("A"); 39 JavaPackage b = new JavaPackage("B"); 40 41 a.dependsUpon(b); 42 b.dependsUpon(a); 43 44 List aCycles = new ArrayList (); 45 assertEquals(true, a.containsCycle()); 46 assertEquals(true, a.collectCycle(aCycles)); 47 assertListEquals(aCycles, new String [] { "A", "B", "A"}); 48 49 List bCycles = new ArrayList (); 50 assertEquals(true, b.containsCycle()); 51 assertEquals(true, b.collectCycle(bCycles)); 52 assertListEquals(bCycles, new String [] { "B", "A", "B"}); 53 } 54 55 public void test3Node1BranchCycle() { 56 57 JavaPackage a = new JavaPackage("A"); 58 JavaPackage b = new JavaPackage("B"); 59 JavaPackage c = new JavaPackage("C"); 60 61 a.dependsUpon(b); 62 b.dependsUpon(c); 63 c.dependsUpon(a); 64 65 List aCycles = new ArrayList (); 66 assertEquals(true, a.containsCycle()); 67 assertEquals(true, a.collectCycle(aCycles)); 68 assertListEquals(aCycles, new String [] { "A", "B", "C", "A"}); 69 70 List bCycles = new ArrayList (); 71 assertEquals(true, b.containsCycle()); 72 assertEquals(true, b.collectCycle(bCycles)); 73 assertListEquals(bCycles, new String [] { "B", "C", "A", "B"}); 74 75 List cCycles = new ArrayList (); 76 assertEquals(true, c.containsCycle()); 77 assertEquals(true, c.collectCycle(cCycles)); 78 assertListEquals(cCycles, new String [] { "C", "A", "B", "C"}); 79 } 80 81 public void test3Node1BranchSubCycle() { 82 83 JavaPackage a = new JavaPackage("A"); 84 JavaPackage b = new JavaPackage("B"); 85 JavaPackage c = new JavaPackage("C"); 86 87 a.dependsUpon(b); 88 b.dependsUpon(c); 89 c.dependsUpon(b); 90 91 List aCycles = new ArrayList (); 92 assertEquals(true, a.containsCycle()); 93 assertEquals(true, a.collectCycle(aCycles)); 94 assertListEquals(aCycles, new String [] { "A", "B", "C", "B"}); 95 96 List bCycles = new ArrayList (); 97 assertEquals(true, b.containsCycle()); 98 assertEquals(true, b.collectCycle(bCycles)); 99 assertListEquals(bCycles, new String [] { "B", "C", "B"}); 100 101 List cCycles = new ArrayList (); 102 assertEquals(true, c.containsCycle()); 103 assertEquals(true, c.collectCycle(cCycles)); 104 assertListEquals(cCycles, new String [] { "C", "B", "C"}); 105 } 106 107 public void test3Node2BranchCycle() { 108 109 JavaPackage a = new JavaPackage("A"); 110 JavaPackage b = new JavaPackage("B"); 111 JavaPackage c = new JavaPackage("C"); 112 113 a.dependsUpon(b); 114 b.dependsUpon(a); 115 116 a.dependsUpon(c); 117 c.dependsUpon(a); 118 119 List aCycles = new ArrayList (); 120 assertEquals(true, a.containsCycle()); 121 assertEquals(true, a.collectCycle(aCycles)); 122 assertListEquals(aCycles, new String [] { "A", "B", "A"}); 123 124 List bCycles = new ArrayList (); 125 assertEquals(true, b.containsCycle()); 126 assertEquals(true, b.collectCycle(bCycles)); 127 assertListEquals(bCycles, new String [] { "B", "A", "B"}); 128 129 List cCycles = new ArrayList (); 130 assertEquals(true, c.containsCycle()); 131 assertEquals(true, c.collectCycle(cCycles)); 132 assertListEquals(cCycles, new String [] { "C", "A", "B", "A"}); 133 } 134 135 public void test5Node2BranchCycle() { 136 137 JavaPackage a = new JavaPackage("A"); 138 JavaPackage b = new JavaPackage("B"); 139 JavaPackage c = new JavaPackage("C"); 140 JavaPackage d = new JavaPackage("D"); 141 JavaPackage e = new JavaPackage("E"); 142 143 a.dependsUpon(b); 144 b.dependsUpon(c); 145 c.dependsUpon(a); 146 147 a.dependsUpon(d); 148 d.dependsUpon(e); 149 e.dependsUpon(a); 150 151 List aCycles = new ArrayList (); 152 assertEquals(true, a.containsCycle()); 153 assertEquals(true, a.collectCycle(aCycles)); 154 assertListEquals(aCycles, new String [] { "A", "B", "C", "A"}); 155 156 List bCycles = new ArrayList (); 157 assertEquals(true, b.containsCycle()); 158 assertEquals(true, b.collectCycle(bCycles)); 159 assertListEquals(bCycles, new String [] { "B", "C", "A", "B"}); 160 161 List cCycles = new ArrayList (); 162 assertEquals(true, c.containsCycle()); 163 assertEquals(true, c.collectCycle(cCycles)); 164 assertListEquals(cCycles, new String [] { "C", "A", "B", "C"}); 165 166 List dCycles = new ArrayList (); 167 assertEquals(true, d.containsCycle()); 168 assertEquals(true, d.collectCycle(dCycles)); 169 assertListEquals(dCycles, new String [] { "D", "E", "A", "B", "C", "A"}); 170 171 List eCycles = new ArrayList (); 172 assertEquals(true, e.containsCycle()); 173 assertEquals(true, e.collectCycle(eCycles)); 174 assertListEquals(eCycles, new String [] { "E", "A", "B", "C", "A"}); 175 } 176 177 protected void assertListEquals(List list, String names[]) { 178 179 assertEquals(names.length, list.size()); 180 181 for (int i = 0; i < names.length; i++) { 182 assertEquals(names[i], ((JavaPackage) list.get(i)).getName()); 183 } 184 } 185 186 protected void printCycles(List list) { 187 Iterator i = list.iterator(); 188 while (i.hasNext()) { 189 JavaPackage p = (JavaPackage) i.next(); 190 if (i.hasNext()) { 191 System.out.print(p.getName() + "->"); 192 } else { 193 System.out.println(p.getName()); 194 } 195 } 196 } 197 } | Popular Tags |