EMMA Coverage Report (generated Mon Nov 29 14:43:38 PST 2010)
[all classes][com.jeantessier.dependency]

COVERAGE SUMMARY FOR SOURCE FILE [TestSelectiveTraversalStrategy.java]

nameclass, %method, %block, %line, %
TestSelectiveTraversalStrategy.java100% (1/1)100% (8/8)94%  (1836/1962)98%  (237.2/243)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class TestSelectiveTraversalStrategy100% (1/1)100% (8/8)94%  (1836/1962)98%  (237.2/243)
testFilterIncludes (): void 100% (1/1)93%  (303/327)97%  (36.8/38)
testScopeIncludes (): void 100% (1/1)93%  (303/327)97%  (36.8/38)
testFilterExcludes (): void 100% (1/1)93%  (294/315)97%  (37/38)
testScopeExcludes (): void 100% (1/1)93%  (294/315)97%  (37/38)
testFilter (): void 100% (1/1)94%  (280/298)98%  (36.3/37)
testScope (): void 100% (1/1)94%  (280/298)98%  (36.3/37)
TestSelectiveTraversalStrategy (): void 100% (1/1)100% (3/3)100% (1/1)
setUp (): void 100% (1/1)100% (79/79)100% (16/16)

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 
33package com.jeantessier.dependency;
34 
35import java.util.*;
36 
37import junit.framework.*;
38 
39public class TestSelectiveTraversalStrategy extends TestCase {
40    private RegularExpressionSelectionCriteria scopeCriteria;
41    private RegularExpressionSelectionCriteria filterCriteria;
42    private SelectiveTraversalStrategy strategy;
43 
44    private PackageNode a;
45    private ClassNode a_A;
46    private FeatureNode a_A_a;
47    
48    private PackageNode b;
49    private ClassNode b_B;
50    private FeatureNode b_B_b;
51    
52    private PackageNode c;
53    private ClassNode c_C;
54    private FeatureNode c_C_c;
55 
56    private List<String> include;
57    private List<String> exclude;
58 
59    protected void setUp() throws Exception {
60        scopeCriteria = new RegularExpressionSelectionCriteria("//");
61        filterCriteria = new RegularExpressionSelectionCriteria("//");
62        strategy = new SelectiveTraversalStrategy(scopeCriteria, filterCriteria);
63 
64        NodeFactory factory = new NodeFactory();
65 
66        a     = factory.createPackage("a");
67        a_A   = factory.createClass("a.A");
68        a_A_a = factory.createFeature("a.A.a");
69        
70        b     = factory.createPackage("b");
71        b_B   = factory.createClass("b.B");
72        b_B_b = factory.createFeature("b.B.b");
73        
74        c     = factory.createPackage("c");
75        c_C   = factory.createClass("c.C");
76        c_C_c = factory.createFeature("c.C.c");
77        
78        include = Collections.singletonList("/^b/");
79        exclude = Collections.singletonList("/^c/");
80    }
81    
82    public void testScope() {
83        scopeCriteria.setMatchingPackages(true);
84        scopeCriteria.setMatchingClasses(false);
85        scopeCriteria.setMatchingFeatures(false);
86 
87        assertTrue("a not in package scope",  strategy.isInScope(a));
88        assertTrue("a.A in package scope",   !strategy.isInScope(a_A));
89        assertTrue("a.A.a in package scope", !strategy.isInScope(a_A_a));
90        assertTrue("b not in package scope",  strategy.isInScope(b));
91        assertTrue("b.B in package scope",   !strategy.isInScope(b_B));
92        assertTrue("b.B.b in package scope", !strategy.isInScope(b_B_b));
93        assertTrue("c not in package scope",  strategy.isInScope(c));
94        assertTrue("c.C in package scope",   !strategy.isInScope(c_C));
95        assertTrue("c.C.c in package scope", !strategy.isInScope(c_C_c));
96 
97        scopeCriteria.setMatchingPackages(false);
98        scopeCriteria.setMatchingClasses(true);
99        scopeCriteria.setMatchingFeatures(false);
100 
101        assertTrue("a in package scope",       !strategy.isInScope(a));
102        assertTrue("a.A not in package scope",  strategy.isInScope(a_A));
103        assertTrue("a.A.a in package scope",   !strategy.isInScope(a_A_a));
104        assertTrue("b not in package scope",   !strategy.isInScope(b));
105        assertTrue("b.B in package scope",      strategy.isInScope(b_B));
106        assertTrue("b.B.b in package scope",   !strategy.isInScope(b_B_b));
107        assertTrue("c not in package scope",   !strategy.isInScope(c));
108        assertTrue("c.C in package scope",      strategy.isInScope(c_C));
109        assertTrue("c.C.c in package scope",   !strategy.isInScope(c_C_c));
110 
111        scopeCriteria.setMatchingPackages(false);
112        scopeCriteria.setMatchingClasses(false);
113        scopeCriteria.setMatchingFeatures(true);
114 
115        assertTrue("a in package scope",         !strategy.isInScope(a));
116        assertTrue("a.A in package scope",       !strategy.isInScope(a_A));
117        assertTrue("a.A.a not in package scope",  strategy.isInScope(a_A_a));
118        assertTrue("b not in package scope",     !strategy.isInScope(b));
119        assertTrue("b.B in package scope",       !strategy.isInScope(b_B));
120        assertTrue("b.B.b in package scope",      strategy.isInScope(b_B_b));
121        assertTrue("c not in package scope",     !strategy.isInScope(c));
122        assertTrue("c.C in package scope",       !strategy.isInScope(c_C));
123        assertTrue("c.C.c in package scope",      strategy.isInScope(c_C_c));
124    }
125 
126    public void testScopeIncludes() {
127        scopeCriteria.setGlobalIncludes(include);
128 
129        scopeCriteria.setMatchingPackages(true);
130        scopeCriteria.setMatchingClasses(false);
131        scopeCriteria.setMatchingFeatures(false);
132 
133        assertTrue("a in package scope",     !strategy.isInScope(a));
134        assertTrue("a.A in package scope",   !strategy.isInScope(a_A));
135        assertTrue("a.A.a in package scope", !strategy.isInScope(a_A_a));
136        assertTrue("b not in package scope",  strategy.isInScope(b));
137        assertTrue("b.B in package scope",   !strategy.isInScope(b_B));
138        assertTrue("b.B.b in package scope", !strategy.isInScope(b_B_b));
139        assertTrue("c in package scope",     !strategy.isInScope(c));
140        assertTrue("c.C in package scope",   !strategy.isInScope(c_C));
141        assertTrue("c.C.c in package scope", !strategy.isInScope(c_C_c));
142 
143        scopeCriteria.setMatchingPackages(false);
144        scopeCriteria.setMatchingClasses(true);
145        scopeCriteria.setMatchingFeatures(false);
146 
147        assertTrue("a in package scope",       !strategy.isInScope(a));
148        assertTrue("a.A in package scope",     !strategy.isInScope(a_A));
149        assertTrue("a.A.a in package scope",   !strategy.isInScope(a_A_a));
150        assertTrue("b in package scope",       !strategy.isInScope(b));
151        assertTrue("b.B not in package scope",  strategy.isInScope(b_B));
152        assertTrue("b.B.b in package scope",   !strategy.isInScope(b_B_b));
153        assertTrue("c in package scope",       !strategy.isInScope(c));
154        assertTrue("c.C in package scope",     !strategy.isInScope(c_C));
155        assertTrue("c.C.c in package scope",   !strategy.isInScope(c_C_c));
156 
157        scopeCriteria.setMatchingPackages(false);
158        scopeCriteria.setMatchingClasses(false);
159        scopeCriteria.setMatchingFeatures(true);
160 
161        assertTrue("a in package scope",         !strategy.isInScope(a));
162        assertTrue("a.A in package scope",       !strategy.isInScope(a_A));
163        assertTrue("a.A.a in package scope",     !strategy.isInScope(a_A_a));
164        assertTrue("b in package scope",         !strategy.isInScope(b));
165        assertTrue("b.B in package scope",       !strategy.isInScope(b_B));
166        assertTrue("b.B.b not in package scope",  strategy.isInScope(b_B_b));
167        assertTrue("c in package scope",         !strategy.isInScope(c));
168        assertTrue("c.C in package scope",       !strategy.isInScope(c_C));
169        assertTrue("c.C.c in package scope",     !strategy.isInScope(c_C_c));
170    }
171 
172    public void testScopeExcludes() {
173        scopeCriteria.setGlobalExcludes(exclude);
174 
175        scopeCriteria.setMatchingPackages(true);
176        scopeCriteria.setMatchingClasses(false);
177        scopeCriteria.setMatchingFeatures(false);
178 
179        assertTrue("a not in package scope",  strategy.isInScope(a));
180        assertTrue("a.A in package scope",   !strategy.isInScope(a_A));
181        assertTrue("a.A.a in package scope", !strategy.isInScope(a_A_a));
182        assertTrue("b not in package scope",  strategy.isInScope(b));
183        assertTrue("b.B in package scope",   !strategy.isInScope(b_B));
184        assertTrue("b.B.b in package scope", !strategy.isInScope(b_B_b));
185        assertTrue("c in package scope",     !strategy.isInScope(c));
186        assertTrue("c.C in package scope",   !strategy.isInScope(c_C));
187        assertTrue("c.C.c in package scope", !strategy.isInScope(c_C_c));
188 
189        scopeCriteria.setMatchingPackages(false);
190        scopeCriteria.setMatchingClasses(true);
191        scopeCriteria.setMatchingFeatures(false);
192 
193        assertTrue("a in package scope",       !strategy.isInScope(a));
194        assertTrue("a.A not in package scope",  strategy.isInScope(a_A));
195        assertTrue("a.A.a in package scope",   !strategy.isInScope(a_A_a));
196        assertTrue("b in package scope",       !strategy.isInScope(b));
197        assertTrue("b.B not in package scope",  strategy.isInScope(b_B));
198        assertTrue("b.B.b in package scope",   !strategy.isInScope(b_B_b));
199        assertTrue("c not in package scope",   !strategy.isInScope(c));
200        assertTrue("c.C in package scope",     !strategy.isInScope(c_C));
201        assertTrue("c.C.c in package scope",   !strategy.isInScope(c_C_c));
202 
203        scopeCriteria.setMatchingPackages(false);
204        scopeCriteria.setMatchingClasses(false);
205        scopeCriteria.setMatchingFeatures(true);
206 
207        assertTrue("a in package scope",         !strategy.isInScope(a));
208        assertTrue("a.A in package scope",       !strategy.isInScope(a_A));
209        assertTrue("a.A.a not in package scope",  strategy.isInScope(a_A_a));
210        assertTrue("b in package scope",         !strategy.isInScope(b));
211        assertTrue("b.B in package scope",       !strategy.isInScope(b_B));
212        assertTrue("b.B.b not in package scope",  strategy.isInScope(b_B_b));
213        assertTrue("c not in package scope",     !strategy.isInScope(c));
214        assertTrue("c.C in package scope",       !strategy.isInScope(c_C));
215        assertTrue("c.C.c in package scope",     !strategy.isInScope(c_C_c));
216    }
217 
218    public void testFilter() {
219        filterCriteria.setMatchingPackages(true);
220        filterCriteria.setMatchingClasses(false);
221        filterCriteria.setMatchingFeatures(false);
222 
223        assertTrue("a not in package filter",  strategy.isInFilter(a));
224        assertTrue("a.A in package filter",   !strategy.isInFilter(a_A));
225        assertTrue("a.A.a in package filter", !strategy.isInFilter(a_A_a));
226        assertTrue("b not in package filter",  strategy.isInFilter(b));
227        assertTrue("b.B in package filter",   !strategy.isInFilter(b_B));
228        assertTrue("b.B.b in package filter", !strategy.isInFilter(b_B_b));
229        assertTrue("c not in package filter",  strategy.isInFilter(c));
230        assertTrue("c.C in package filter",   !strategy.isInFilter(c_C));
231        assertTrue("c.C.c in package filter", !strategy.isInFilter(c_C_c));
232 
233        filterCriteria.setMatchingPackages(false);
234        filterCriteria.setMatchingClasses(true);
235        filterCriteria.setMatchingFeatures(false);
236 
237        assertTrue("a in package filter",       !strategy.isInFilter(a));
238        assertTrue("a.A not in package filter",  strategy.isInFilter(a_A));
239        assertTrue("a.A.a in package filter",   !strategy.isInFilter(a_A_a));
240        assertTrue("b not in package filter",   !strategy.isInFilter(b));
241        assertTrue("b.B in package filter",      strategy.isInFilter(b_B));
242        assertTrue("b.B.b in package filter",   !strategy.isInFilter(b_B_b));
243        assertTrue("c not in package filter",   !strategy.isInFilter(c));
244        assertTrue("c.C in package filter",      strategy.isInFilter(c_C));
245        assertTrue("c.C.c in package filter",   !strategy.isInFilter(c_C_c));
246 
247        filterCriteria.setMatchingPackages(false);
248        filterCriteria.setMatchingClasses(false);
249        filterCriteria.setMatchingFeatures(true);
250 
251        assertTrue("a in package filter",         !strategy.isInFilter(a));
252        assertTrue("a.A in package filter",       !strategy.isInFilter(a_A));
253        assertTrue("a.A.a not in package filter",  strategy.isInFilter(a_A_a));
254        assertTrue("b not in package filter",     !strategy.isInFilter(b));
255        assertTrue("b.B in package filter",       !strategy.isInFilter(b_B));
256        assertTrue("b.B.b in package filter",      strategy.isInFilter(b_B_b));
257        assertTrue("c not in package filter",     !strategy.isInFilter(c));
258        assertTrue("c.C in package filter",       !strategy.isInFilter(c_C));
259        assertTrue("c.C.c in package filter",      strategy.isInFilter(c_C_c));
260    }
261 
262    public void testFilterIncludes() {
263        filterCriteria.setGlobalIncludes(include);
264 
265        filterCriteria.setMatchingPackages(true);
266        filterCriteria.setMatchingClasses(false);
267        filterCriteria.setMatchingFeatures(false);
268 
269        assertTrue("a in package filter",     !strategy.isInFilter(a));
270        assertTrue("a.A in package filter",   !strategy.isInFilter(a_A));
271        assertTrue("a.A.a in package filter", !strategy.isInFilter(a_A_a));
272        assertTrue("b not in package filter",  strategy.isInFilter(b));
273        assertTrue("b.B in package filter",   !strategy.isInFilter(b_B));
274        assertTrue("b.B.b in package filter", !strategy.isInFilter(b_B_b));
275        assertTrue("c in package filter",     !strategy.isInFilter(c));
276        assertTrue("c.C in package filter",   !strategy.isInFilter(c_C));
277        assertTrue("c.C.c in package filter", !strategy.isInFilter(c_C_c));
278 
279        filterCriteria.setMatchingPackages(false);
280        filterCriteria.setMatchingClasses(true);
281        filterCriteria.setMatchingFeatures(false);
282 
283        assertTrue("a in package filter",       !strategy.isInFilter(a));
284        assertTrue("a.A in package filter",     !strategy.isInFilter(a_A));
285        assertTrue("a.A.a in package filter",   !strategy.isInFilter(a_A_a));
286        assertTrue("b in package filter",       !strategy.isInFilter(b));
287        assertTrue("b.B not in package filter",  strategy.isInFilter(b_B));
288        assertTrue("b.B.b in package filter",   !strategy.isInFilter(b_B_b));
289        assertTrue("c in package filter",       !strategy.isInFilter(c));
290        assertTrue("c.C in package filter",     !strategy.isInFilter(c_C));
291        assertTrue("c.C.c in package filter",   !strategy.isInFilter(c_C_c));
292 
293        filterCriteria.setMatchingPackages(false);
294        filterCriteria.setMatchingClasses(false);
295        filterCriteria.setMatchingFeatures(true);
296 
297        assertTrue("a in package filter",         !strategy.isInFilter(a));
298        assertTrue("a.A in package filter",       !strategy.isInFilter(a_A));
299        assertTrue("a.A.a in package filter",     !strategy.isInFilter(a_A_a));
300        assertTrue("b in package filter",         !strategy.isInFilter(b));
301        assertTrue("b.B in package filter",       !strategy.isInFilter(b_B));
302        assertTrue("b.B.b not in package filter",  strategy.isInFilter(b_B_b));
303        assertTrue("c in package filter",         !strategy.isInFilter(c));
304        assertTrue("c.C in package filter",       !strategy.isInFilter(c_C));
305        assertTrue("c.C.c in package filter",     !strategy.isInFilter(c_C_c));
306    }
307 
308    public void testFilterExcludes() {
309        filterCriteria.setGlobalExcludes(exclude);
310 
311        filterCriteria.setMatchingPackages(true);
312        filterCriteria.setMatchingClasses(false);
313        filterCriteria.setMatchingFeatures(false);
314 
315        assertTrue("a not in package filter",  strategy.isInFilter(a));
316        assertTrue("a.A in package filter",   !strategy.isInFilter(a_A));
317        assertTrue("a.A.a in package filter", !strategy.isInFilter(a_A_a));
318        assertTrue("b not in package filter",  strategy.isInFilter(b));
319        assertTrue("b.B in package filter",   !strategy.isInFilter(b_B));
320        assertTrue("b.B.b in package filter", !strategy.isInFilter(b_B_b));
321        assertTrue("c in package filter",     !strategy.isInFilter(c));
322        assertTrue("c.C in package filter",   !strategy.isInFilter(c_C));
323        assertTrue("c.C.c in package filter", !strategy.isInFilter(c_C_c));
324 
325        filterCriteria.setMatchingPackages(false);
326        filterCriteria.setMatchingClasses(true);
327        filterCriteria.setMatchingFeatures(false);
328 
329        assertTrue("a in package filter",       !strategy.isInFilter(a));
330        assertTrue("a.A not in package filter",  strategy.isInFilter(a_A));
331        assertTrue("a.A.a in package filter",   !strategy.isInFilter(a_A_a));
332        assertTrue("b in package filter",       !strategy.isInFilter(b));
333        assertTrue("b.B not in package filter",  strategy.isInFilter(b_B));
334        assertTrue("b.B.b in package filter",   !strategy.isInFilter(b_B_b));
335        assertTrue("c in package filter",       !strategy.isInFilter(c));
336        assertTrue("c.C in package filter",     !strategy.isInFilter(c_C));
337        assertTrue("c.C.c in package filter",   !strategy.isInFilter(c_C_c));
338 
339        filterCriteria.setMatchingPackages(false);
340        filterCriteria.setMatchingClasses(false);
341        filterCriteria.setMatchingFeatures(true);
342 
343        assertTrue("a in package filter",         !strategy.isInFilter(a));
344        assertTrue("a.A in package filter",       !strategy.isInFilter(a_A));
345        assertTrue("a.A.a not in package filter",  strategy.isInFilter(a_A_a));
346        assertTrue("b in package filter",         !strategy.isInFilter(b));
347        assertTrue("b.B in package filter",       !strategy.isInFilter(b_B));
348        assertTrue("b.B.b not in package filter",  strategy.isInFilter(b_B_b));
349        assertTrue("c in package filter",         !strategy.isInFilter(c));
350        assertTrue("c.C in package filter",       !strategy.isInFilter(c_C));
351        assertTrue("c.C.c in package filter",     !strategy.isInFilter(c_C_c));
352    }
353}

[all classes][com.jeantessier.dependency]
EMMA 2.0.5312 (C) Vladimir Roubtsov