1 | /* |
2 | * Copyright (c) 2001-2009, Jean Tessier |
3 | * All rights reserved. |
4 | * |
5 | * Redistribution and use in source and binary forms, with or without |
6 | * modification, are permitted provided that the following conditions |
7 | * are met: |
8 | * |
9 | * * Redistributions of source code must retain the above copyright |
10 | * notice, this list of conditions and the following disclaimer. |
11 | * |
12 | * * Redistributions in binary form must reproduce the above copyright |
13 | * notice, this list of conditions and the following disclaimer in the |
14 | * documentation and/or other materials provided with the distribution. |
15 | * |
16 | * * Neither the name of Jean Tessier nor the names of his contributors |
17 | * may be used to endorse or promote products derived from this software |
18 | * without specific prior written permission. |
19 | * |
20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
21 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
22 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
23 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR |
24 | * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
25 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
26 | * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
27 | * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF |
28 | * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
29 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
30 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
31 | */ |
32 | |
33 | package com.jeantessier.dependency; |
34 | |
35 | import junit.framework.*; |
36 | |
37 | public class TestLinkMaximizer extends TestCase { |
38 | private Node _package; |
39 | private Node test_class; |
40 | private Node test_main_method; |
41 | private Node test_test_method; |
42 | |
43 | private Node java_lang_package; |
44 | private Node java_lang_Object_class; |
45 | private Node java_lang_Object_Object_method; |
46 | private Node java_lang_String_class; |
47 | |
48 | private Node java_util_package; |
49 | private Node java_util_Collections_class; |
50 | private Node java_util_Collections_singleton_method; |
51 | private Node java_util_Set_class; |
52 | |
53 | protected void setUp() throws Exception { |
54 | NodeFactory factory = new NodeFactory(); |
55 | |
56 | _package = factory.createPackage(""); |
57 | test_class = factory.createClass("test"); |
58 | test_main_method = factory.createFeature("test.main(String[])"); |
59 | test_test_method = factory.createFeature("test.test()"); |
60 | |
61 | java_lang_package = factory.createPackage("java.lang"); |
62 | java_lang_Object_class = factory.createClass("java.lang.Object"); |
63 | java_lang_Object_Object_method = factory.createFeature("java.lang.Object.Object()"); |
64 | java_lang_String_class = factory.createClass("java.lang.String"); |
65 | |
66 | java_util_package = factory.createPackage("java.util"); |
67 | java_util_Collections_class = factory.createClass("java.util.Collections"); |
68 | java_util_Collections_singleton_method = factory.createFeature("java.util.Collections.singleton(java.lang.Object)"); |
69 | java_util_Set_class = factory.createClass("java.util.Set"); |
70 | |
71 | test_class.addDependency(java_lang_Object_class); |
72 | test_main_method.addDependency(java_lang_Object_class); |
73 | test_main_method.addDependency(java_lang_Object_Object_method); |
74 | test_main_method.addDependency(java_lang_String_class); |
75 | test_main_method.addDependency(java_util_Collections_singleton_method); |
76 | test_main_method.addDependency(java_util_Set_class); |
77 | test_test_method.addDependency(java_lang_Object_Object_method); |
78 | |
79 | LinkMaximizer sut = new LinkMaximizer(); |
80 | sut.traverseNodes(factory.getPackages().values()); |
81 | } |
82 | |
83 | public void test_package() { |
84 | assertEquals("_package.Outbound()", |
85 | 8, |
86 | _package.getOutboundDependencies().size()); |
87 | assertTrue("default missing " + java_lang_package, |
88 | _package.getOutboundDependencies().contains(java_lang_package)); |
89 | assertTrue("default missing " + java_lang_Object_class, |
90 | _package.getOutboundDependencies().contains(java_lang_Object_class)); |
91 | assertTrue("default missing " + java_lang_Object_Object_method, |
92 | _package.getOutboundDependencies().contains(java_lang_Object_Object_method)); |
93 | assertTrue("default missing " + java_lang_String_class, |
94 | _package.getOutboundDependencies().contains(java_lang_String_class)); |
95 | assertTrue("default missing " + java_util_package, |
96 | _package.getOutboundDependencies().contains(java_util_package)); |
97 | assertTrue("default missing " + java_util_Collections_class, |
98 | _package.getOutboundDependencies().contains(java_util_Collections_class)); |
99 | assertTrue("default missing " + java_util_Collections_singleton_method, |
100 | _package.getOutboundDependencies().contains(java_util_Collections_singleton_method)); |
101 | assertTrue("default missing " + java_util_Set_class, |
102 | _package.getOutboundDependencies().contains(java_util_Set_class)); |
103 | assertEquals("_package.Inbound()", |
104 | 0, |
105 | _package.getInboundDependencies().size()); |
106 | } |
107 | |
108 | public void testtest_class() { |
109 | assertEquals("test_class.Outbound()", |
110 | 8, |
111 | test_class.getOutboundDependencies().size()); |
112 | assertTrue("test missing " + java_lang_package, |
113 | test_class.getOutboundDependencies().contains(java_lang_package)); |
114 | assertTrue("test missing " + java_lang_Object_class, |
115 | test_class.getOutboundDependencies().contains(java_lang_Object_class)); |
116 | assertTrue("test missing " + java_lang_Object_Object_method, |
117 | test_class.getOutboundDependencies().contains(java_lang_Object_Object_method)); |
118 | assertTrue("test missing " + java_lang_String_class, |
119 | test_class.getOutboundDependencies().contains(java_lang_String_class)); |
120 | assertTrue("test missing " + java_util_package, |
121 | test_class.getOutboundDependencies().contains(java_util_package)); |
122 | assertTrue("test missing " + java_util_Collections_class, |
123 | test_class.getOutboundDependencies().contains(java_util_Collections_class)); |
124 | assertTrue("test missing " + java_util_Collections_singleton_method, |
125 | test_class.getOutboundDependencies().contains(java_util_Collections_singleton_method)); |
126 | assertTrue("test missing " + java_util_Set_class, |
127 | test_class.getOutboundDependencies().contains(java_util_Set_class)); |
128 | assertEquals("test_class.Inbound()", |
129 | 0, |
130 | test_class.getInboundDependencies().size()); |
131 | } |
132 | |
133 | public void testtest_main_method() { |
134 | assertEquals("test_main_method.Outbound()", |
135 | 8, |
136 | test_main_method.getOutboundDependencies().size()); |
137 | assertTrue("test.main(java.lang.String[]) missing " + java_lang_package, |
138 | test_main_method.getOutboundDependencies().contains(java_lang_package)); |
139 | assertTrue("test.main(java.lang.String[]) missing " + java_lang_Object_class, |
140 | test_main_method.getOutboundDependencies().contains(java_lang_Object_class)); |
141 | assertTrue("test.main(java.lang.String[]) missing " + java_lang_Object_Object_method, |
142 | test_main_method.getOutboundDependencies().contains(java_lang_Object_Object_method)); |
143 | assertTrue("test.main(java.lang.String[]) missing " + java_lang_String_class, |
144 | test_main_method.getOutboundDependencies().contains(java_lang_String_class)); |
145 | assertTrue("test.main(java.lang.String[]) missing " + java_util_package, |
146 | test_main_method.getOutboundDependencies().contains(java_util_package)); |
147 | assertTrue("test.main(java.lang.String[]) missing " + java_util_Collections_class, |
148 | test_main_method.getOutboundDependencies().contains(java_util_Collections_class)); |
149 | assertTrue("test.main(java.lang.String[]) missing " + java_util_Collections_singleton_method, |
150 | test_main_method.getOutboundDependencies().contains(java_util_Collections_singleton_method)); |
151 | assertTrue("test.main(java.lang.String[]) missing " + java_util_Set_class, |
152 | test_main_method.getOutboundDependencies().contains(java_util_Set_class)); |
153 | assertEquals("test_main_method.Inbound()", |
154 | 0, |
155 | test_main_method.getInboundDependencies().size()); |
156 | } |
157 | |
158 | public void testtest_test_method() { |
159 | assertEquals("test_test_method.Outbound()", |
160 | 3, |
161 | test_test_method.getOutboundDependencies().size()); |
162 | assertTrue("test.test() missing " + java_lang_package, |
163 | test_test_method.getOutboundDependencies().contains(java_lang_package)); |
164 | assertTrue("test.test() missing " + java_lang_Object_class, |
165 | test_test_method.getOutboundDependencies().contains(java_lang_Object_class)); |
166 | assertTrue("test.test() missing " + java_lang_Object_Object_method, |
167 | test_test_method.getOutboundDependencies().contains(java_lang_Object_Object_method)); |
168 | assertEquals("_package.Inbound()", |
169 | 0, |
170 | test_test_method.getInboundDependencies().size()); |
171 | } |
172 | |
173 | public void testjava_lang_package() { |
174 | assertEquals("java_lang_package.Outbound()", |
175 | 0, |
176 | java_lang_package.getOutboundDependencies().size()); |
177 | assertEquals("java_lang_package.Inbound()", |
178 | 4, |
179 | java_lang_package.getInboundDependencies().size()); |
180 | assertTrue("java.lang missing " + _package, |
181 | java_lang_package.getInboundDependencies().contains(_package)); |
182 | assertTrue("java.lang missing " + test_class, |
183 | java_lang_package.getInboundDependencies().contains(test_class)); |
184 | assertTrue("java.lang missing " + test_main_method, |
185 | java_lang_package.getInboundDependencies().contains(test_main_method)); |
186 | assertTrue("java.lang missing " + test_test_method, |
187 | java_lang_package.getInboundDependencies().contains(test_test_method)); |
188 | } |
189 | |
190 | public void testjava_lang_Object_class() { |
191 | assertEquals("java_lang_Object_class.Outbound()", |
192 | 0, |
193 | java_lang_Object_class.getOutboundDependencies().size()); |
194 | assertEquals("java_lang_Object_class.Inbound()", |
195 | 4, |
196 | java_lang_Object_class.getInboundDependencies().size()); |
197 | assertTrue("java.lang.Object missing " + _package, |
198 | java_lang_Object_class.getInboundDependencies().contains(_package)); |
199 | assertTrue("java.lang.Object missing " + test_class, |
200 | java_lang_Object_class.getInboundDependencies().contains(test_class)); |
201 | assertTrue("java.lang.Object missing " + test_main_method, |
202 | java_lang_Object_class.getInboundDependencies().contains(test_main_method)); |
203 | assertTrue("java.lang.Object missing " + test_test_method, |
204 | java_lang_Object_class.getInboundDependencies().contains(test_test_method)); |
205 | } |
206 | |
207 | public void testjava_lang_Object_Object_method() { |
208 | assertEquals("java_lang_Object_Object_method.Outbound()", |
209 | 0, |
210 | java_lang_Object_Object_method.getOutboundDependencies().size()); |
211 | assertEquals("java_lang_Object_Object_method.Inbound()", |
212 | 4, |
213 | java_lang_Object_Object_method.getInboundDependencies().size()); |
214 | assertTrue("java.lang.Object.Object() missing " + _package, |
215 | java_lang_Object_Object_method.getInboundDependencies().contains(_package)); |
216 | assertTrue("java.lang.Object.Object() missing " + test_class, |
217 | java_lang_Object_Object_method.getInboundDependencies().contains(test_class)); |
218 | assertTrue("java.lang.Object.Object() missing " + test_main_method, |
219 | java_lang_Object_Object_method.getInboundDependencies().contains(test_main_method)); |
220 | assertTrue("java.lang.Object.Object() missing " + test_test_method, |
221 | java_lang_Object_Object_method.getInboundDependencies().contains(test_test_method)); |
222 | } |
223 | |
224 | public void testjava_lang_String_class() { |
225 | assertEquals("java_lang_String_class.Outbound()", |
226 | 0, |
227 | java_lang_String_class.getOutboundDependencies().size()); |
228 | assertEquals("java_lang_String_class.Inbound()", |
229 | 3, |
230 | java_lang_String_class.getInboundDependencies().size()); |
231 | assertTrue("java.lang.String missing " + _package, |
232 | java_lang_String_class.getInboundDependencies().contains(_package)); |
233 | assertTrue("java.lang.String missing " + test_class, |
234 | java_lang_String_class.getInboundDependencies().contains(test_class)); |
235 | assertTrue("java.lang.String missing " + test_main_method, |
236 | java_lang_String_class.getInboundDependencies().contains(test_main_method)); |
237 | } |
238 | |
239 | public void testjava_util_package() { |
240 | assertEquals("java_util_package.Outbound()", |
241 | 0, |
242 | java_util_package.getOutboundDependencies().size()); |
243 | assertEquals("java_util_package.Inbound()", |
244 | 3, |
245 | java_util_package.getInboundDependencies().size()); |
246 | assertTrue("java.util missing " + _package, |
247 | java_util_package.getInboundDependencies().contains(_package)); |
248 | assertTrue("java.util missing " + test_class, |
249 | java_util_package.getInboundDependencies().contains(test_class)); |
250 | assertTrue("java.util missing " + test_main_method, |
251 | java_util_package.getInboundDependencies().contains(test_main_method)); |
252 | } |
253 | |
254 | public void testjava_util_Collections_class() { |
255 | assertEquals("java_util_Collections_class.Outbound()", |
256 | 0, |
257 | java_util_Collections_class.getOutboundDependencies().size()); |
258 | assertEquals("java_util_Collections_class.Inbound()", |
259 | 3, |
260 | java_util_Collections_class.getInboundDependencies().size()); |
261 | assertTrue("java.util.Collections missing " + _package, |
262 | java_util_Collections_class.getInboundDependencies().contains(_package)); |
263 | assertTrue("java.util.Collections missing " + test_class, |
264 | java_util_Collections_class.getInboundDependencies().contains(test_class)); |
265 | assertTrue("java.util.Collections missing " + test_main_method, |
266 | java_util_Collections_class.getInboundDependencies().contains(test_main_method)); |
267 | } |
268 | |
269 | public void testjava_util_Collections_singleton_method() { |
270 | assertEquals("java_util_Collections_singleton_method.Outbound()", |
271 | 0, |
272 | java_util_Collections_singleton_method.getOutboundDependencies().size()); |
273 | assertEquals("java_util_Collections_singleton_method.Inbound()", |
274 | 3, |
275 | java_util_Collections_singleton_method.getInboundDependencies().size()); |
276 | assertTrue("java.util.Collections.singleton(java.lang.Object) missing " + _package, |
277 | java_util_Collections_singleton_method.getInboundDependencies().contains(_package)); |
278 | assertTrue("java.util.Collections.singleton(java.lang.Object) missing " + test_class, |
279 | java_util_Collections_singleton_method.getInboundDependencies().contains(test_class)); |
280 | assertTrue("java.util.Collections.singleton(java.lang.Object) missing " + test_main_method, |
281 | java_util_Collections_singleton_method.getInboundDependencies().contains(test_main_method)); |
282 | } |
283 | |
284 | public void testjava_util_Set_class() { |
285 | assertEquals("java_util_Set_class.Outbound()", |
286 | 0, |
287 | java_util_Set_class.getOutboundDependencies().size()); |
288 | assertEquals("java_util_Set_class.Inbound()", |
289 | 3, |
290 | java_util_Set_class.getInboundDependencies().size()); |
291 | assertTrue("java.util.Set missing " + _package, |
292 | java_util_Set_class.getInboundDependencies().contains(_package)); |
293 | assertTrue("java.util.Set missing " + test_class, |
294 | java_util_Set_class.getInboundDependencies().contains(test_class)); |
295 | assertTrue("java.util.Set missing " + test_main_method, |
296 | java_util_Set_class.getInboundDependencies().contains(test_main_method)); |
297 | } |
298 | } |