1 package jdepend.framework; 2 3 import java.util.ArrayList ; 4 import java.util.List ; 5 6 10 11 public class CollectAllCyclesTest extends JDependTestCase { 12 13 public CollectAllCyclesTest(String name) { 14 super(name); 15 } 16 17 public void testNoCycles() { 18 19 JavaPackage a = new JavaPackage("A"); 20 JavaPackage b = new JavaPackage("B"); 21 22 a.dependsUpon(b); 23 24 List aCycles = new ArrayList (); 25 assertEquals(false, a.containsCycle()); 26 assertEquals(false, a.collectAllCycles(aCycles)); 27 assertListEquals(aCycles, new String [] {}); 28 29 List bCycles = new ArrayList (); 30 assertEquals(false, b.containsCycle()); 31 assertEquals(false, b.collectAllCycles(bCycles)); 32 assertListEquals(bCycles, new String [] {}); 33 } 34 35 public void test2Node1BranchCycle() { 36 37 JavaPackage a = new JavaPackage("A"); 38 JavaPackage b = new JavaPackage("B"); 39 40 a.dependsUpon(b); 41 b.dependsUpon(a); 42 43 List aCycles = new ArrayList (); 44 assertEquals(true, a.containsCycle()); 45 assertEquals(true, a.collectAllCycles(aCycles)); 46 assertListEquals(aCycles, new String [] {"A", "B", "A"}); 47 48 List bCycles = new ArrayList (); 49 assertEquals(true, b.containsCycle()); 50 assertEquals(true, b.collectAllCycles(bCycles)); 51 assertListEquals(bCycles, new String [] {"B", "A", "B"}); 52 } 53 54 public void test3Node1BranchCycle() { 55 56 JavaPackage a = new JavaPackage("A"); 57 JavaPackage b = new JavaPackage("B"); 58 JavaPackage c = new JavaPackage("C"); 59 60 a.dependsUpon(b); 61 b.dependsUpon(c); 62 c.dependsUpon(a); 63 64 65 List aCycles = new ArrayList (); 66 assertEquals(true, a.containsCycle()); 67 assertEquals(true, a.collectAllCycles(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.collectAllCycles(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.collectAllCycles(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.collectAllCycles(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.collectAllCycles(bCycles)); 99 assertListEquals(bCycles, new String [] {"B", "C", "B"}); 100 101 List cCycles = new ArrayList (); 102 assertEquals(true, c.containsCycle()); 103 assertEquals(true, c.collectAllCycles(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.collectAllCycles(aCycles)); 122 assertListEquals(aCycles, new String [] {"A", "B", "A", "C", "A"}); 123 124 List bCycles = new ArrayList (); 125 assertEquals(true, b.containsCycle()); 126 assertEquals(true, b.collectAllCycles(bCycles)); 127 assertListEquals(bCycles, new String [] {"B", "A", "B", "C", "A"}); 128 129 List cCycles = new ArrayList (); 130 assertEquals(true, c.containsCycle()); 131 assertEquals(true, c.collectAllCycles(cCycles)); 132 assertListEquals(cCycles, new String [] {"C", "A", "B", "A", "C"}); 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.collectAllCycles(aCycles)); 154 assertListEquals(aCycles, new String [] {"A", "B", "C", "A", "D", "E", "A"}); 155 156 List bCycles = new ArrayList (); 157 assertEquals(true, b.containsCycle()); 158 assertEquals(true, b.collectAllCycles(bCycles)); 159 assertListEquals(bCycles, new String [] {"B", "C", "A", "B", "D", "E", "A"}); 160 161 List cCycles = new ArrayList (); 162 assertEquals(true, c.containsCycle()); 163 assertEquals(true, c.collectAllCycles(cCycles)); 164 assertListEquals(cCycles, new String [] {"C", "A", "B", "C", "D", "E", "A"}); 165 166 List dCycles = new ArrayList (); 167 assertEquals(true, d.containsCycle()); 168 assertEquals(true, d.collectAllCycles(dCycles)); 169 assertListEquals(dCycles, new String [] {"D", "E", "A", "B", "C", "A" , "D"}); 170 171 List eCycles = new ArrayList (); 172 assertEquals(true, e.containsCycle()); 173 assertEquals(true, e.collectAllCycles(eCycles)); 174 assertListEquals(eCycles, new String [] {"E", "A", "B", "C", "A", "D", "E"}); 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 | Popular Tags |