KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > jdepend > framework > CycleTest


1 package jdepend.framework;
2
3 import java.util.ArrayList JavaDoc;
4 import java.util.Iterator JavaDoc;
5 import java.util.List JavaDoc;
6
7 /**
8  * @author <b>Mike Clark</b>
9  * @author Clarkware Consulting, Inc.
10  */

11
12 public class CycleTest extends JDependTestCase {
13
14     public CycleTest(String JavaDoc 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 JavaDoc aCycles = new ArrayList JavaDoc();
26         assertEquals(false, a.containsCycle());
27         assertEquals(false, a.collectCycle(aCycles));
28         assertListEquals(aCycles, new String JavaDoc[] {});
29
30         List JavaDoc bCycles = new ArrayList JavaDoc();
31         assertEquals(false, b.containsCycle());
32         assertEquals(false, b.collectCycle(bCycles));
33         assertListEquals(bCycles, new String JavaDoc[] {});
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 JavaDoc aCycles = new ArrayList JavaDoc();
45         assertEquals(true, a.containsCycle());
46         assertEquals(true, a.collectCycle(aCycles));
47         assertListEquals(aCycles, new String JavaDoc[] { "A", "B", "A"});
48
49         List JavaDoc bCycles = new ArrayList JavaDoc();
50         assertEquals(true, b.containsCycle());
51         assertEquals(true, b.collectCycle(bCycles));
52         assertListEquals(bCycles, new String JavaDoc[] { "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 JavaDoc aCycles = new ArrayList JavaDoc();
66         assertEquals(true, a.containsCycle());
67         assertEquals(true, a.collectCycle(aCycles));
68         assertListEquals(aCycles, new String JavaDoc[] { "A", "B", "C", "A"});
69
70         List JavaDoc bCycles = new ArrayList JavaDoc();
71         assertEquals(true, b.containsCycle());
72         assertEquals(true, b.collectCycle(bCycles));
73         assertListEquals(bCycles, new String JavaDoc[] { "B", "C", "A", "B"});
74
75         List JavaDoc cCycles = new ArrayList JavaDoc();
76         assertEquals(true, c.containsCycle());
77         assertEquals(true, c.collectCycle(cCycles));
78         assertListEquals(cCycles, new String JavaDoc[] { "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 JavaDoc aCycles = new ArrayList JavaDoc();
92         assertEquals(true, a.containsCycle());
93         assertEquals(true, a.collectCycle(aCycles));
94         assertListEquals(aCycles, new String JavaDoc[] { "A", "B", "C", "B"});
95
96         List JavaDoc bCycles = new ArrayList JavaDoc();
97         assertEquals(true, b.containsCycle());
98         assertEquals(true, b.collectCycle(bCycles));
99         assertListEquals(bCycles, new String JavaDoc[] { "B", "C", "B"});
100
101         List JavaDoc cCycles = new ArrayList JavaDoc();
102         assertEquals(true, c.containsCycle());
103         assertEquals(true, c.collectCycle(cCycles));
104         assertListEquals(cCycles, new String JavaDoc[] { "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 JavaDoc aCycles = new ArrayList JavaDoc();
120         assertEquals(true, a.containsCycle());
121         assertEquals(true, a.collectCycle(aCycles));
122         assertListEquals(aCycles, new String JavaDoc[] { "A", "B", "A"});
123
124         List JavaDoc bCycles = new ArrayList JavaDoc();
125         assertEquals(true, b.containsCycle());
126         assertEquals(true, b.collectCycle(bCycles));
127         assertListEquals(bCycles, new String JavaDoc[] { "B", "A", "B"});
128
129         List JavaDoc cCycles = new ArrayList JavaDoc();
130         assertEquals(true, c.containsCycle());
131         assertEquals(true, c.collectCycle(cCycles));
132         assertListEquals(cCycles, new String JavaDoc[] { "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 JavaDoc aCycles = new ArrayList JavaDoc();
152         assertEquals(true, a.containsCycle());
153         assertEquals(true, a.collectCycle(aCycles));
154         assertListEquals(aCycles, new String JavaDoc[] { "A", "B", "C", "A"});
155
156         List JavaDoc bCycles = new ArrayList JavaDoc();
157         assertEquals(true, b.containsCycle());
158         assertEquals(true, b.collectCycle(bCycles));
159         assertListEquals(bCycles, new String JavaDoc[] { "B", "C", "A", "B"});
160
161         List JavaDoc cCycles = new ArrayList JavaDoc();
162         assertEquals(true, c.containsCycle());
163         assertEquals(true, c.collectCycle(cCycles));
164         assertListEquals(cCycles, new String JavaDoc[] { "C", "A", "B", "C"});
165
166         List JavaDoc dCycles = new ArrayList JavaDoc();
167         assertEquals(true, d.containsCycle());
168         assertEquals(true, d.collectCycle(dCycles));
169         assertListEquals(dCycles, new String JavaDoc[] { "D", "E", "A", "B", "C", "A"});
170
171         List JavaDoc eCycles = new ArrayList JavaDoc();
172         assertEquals(true, e.containsCycle());
173         assertEquals(true, e.collectCycle(eCycles));
174         assertListEquals(eCycles, new String JavaDoc[] { "E", "A", "B", "C", "A"});
175     }
176
177     protected void assertListEquals(List JavaDoc list, String JavaDoc 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 JavaDoc list) {
187         Iterator JavaDoc 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