Clover coverage report - Dependency Finder
Coverage timestamp: Mon Nov 29 2010 15:00:50 PST
file stats: LOC: 319   Methods: 8
NCLOC: 236   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
TestTransitiveClosureWithTestClass.java - 100% 100% 100%
coverage
 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 java.util.*;
 36   
 37    import junit.framework.*;
 38   
 39    public class TestTransitiveClosureWithTestClass extends TestCase {
 40    private NodeFactory factory;
 41   
 42    private Node _package;
 43    private Node test_class;
 44    private Node test_main_method;
 45    private Node test_Test_method;
 46   
 47    private Node java_lang_package;
 48    private Node java_lang_Object_class;
 49    private Node java_lang_Object_Object_method;
 50    private Node java_lang_String_class;
 51   
 52    private Node java_util_package;
 53    private Node java_util_Collections_class;
 54    private Node java_util_Collections_singleton_method;
 55   
 56    private List<String> scopeIncludes;
 57   
 58    private RegularExpressionSelectionCriteria startCriteria;
 59    private RegularExpressionSelectionCriteria stopCriteria;
 60   
 61    private NodeFactory resultFactory;
 62   
 63  6 protected void setUp() throws Exception {
 64  6 super.setUp();
 65   
 66  6 factory = new NodeFactory();
 67   
 68  6 _package = factory.createPackage("");
 69  6 test_class = factory.createClass("test");
 70  6 test_main_method = factory.createFeature("test.main(String[])");
 71  6 test_Test_method = factory.createFeature("test.test()");
 72   
 73  6 java_lang_package = factory.createPackage("java.lang");
 74  6 java_lang_Object_class = factory.createClass("java.lang.Object");
 75  6 java_lang_Object_Object_method = factory.createFeature("java.lang.Object.Object()");
 76  6 java_lang_String_class = factory.createClass("java.lang.String");
 77   
 78  6 java_util_package = factory.createPackage("java.util");
 79  6 java_util_Collections_class = factory.createClass("java.util.Collections");
 80  6 java_util_Collections_singleton_method = factory.createFeature("java.util.Collections.singleton(java.lang.Object)");
 81   
 82  6 test_class.addDependency(java_lang_Object_class);
 83  6 test_main_method.addDependency(java_lang_Object_class);
 84  6 test_main_method.addDependency(java_lang_Object_Object_method);
 85  6 test_main_method.addDependency(java_lang_String_class);
 86  6 test_main_method.addDependency(java_util_Collections_singleton_method);
 87  6 test_Test_method.addDependency(java_lang_Object_Object_method);
 88   
 89  6 scopeIncludes = new ArrayList<String>(1);
 90  6 scopeIncludes.add("/test/");
 91   
 92  6 startCriteria = new RegularExpressionSelectionCriteria();
 93  6 stopCriteria = new RegularExpressionSelectionCriteria();
 94    }
 95   
 96  1 public void testCompleteClosure() {
 97  1 startCriteria.setGlobalIncludes(scopeIncludes);
 98  1 stopCriteria.setGlobalIncludes(Collections.<String>emptyList());
 99   
 100  1 compute(factory.getPackages().values());
 101   
 102  1 assertEquals("Different number of packages",
 103    factory.getPackages().size(),
 104    resultFactory.getPackages().size());
 105  1 assertEquals("Different number of classes",
 106    factory.getClasses().size(),
 107    resultFactory.getClasses().size());
 108  1 assertEquals("Different number of features",
 109    factory.getFeatures().size(),
 110    resultFactory.getFeatures().size());
 111   
 112  1 for (String key : resultFactory.getPackages().keySet()) {
 113  3 assertEquals(factory.getPackages().get(key), resultFactory.getPackages().get(key));
 114  3 assertTrue(factory.getPackages().get(key) != resultFactory.getPackages().get(key));
 115  3 assertEquals("Package " + key + " has different inbound count",
 116    factory.getPackages().get(key).getInboundDependencies().size(),
 117    resultFactory.getPackages().get(key).getInboundDependencies().size());
 118  3 assertEquals("Package " + key + " has different outbound count",
 119    factory.getPackages().get(key).getOutboundDependencies().size(),
 120    resultFactory.getPackages().get(key).getOutboundDependencies().size());
 121    }
 122   
 123  1 for (String key : resultFactory.getClasses().keySet()) {
 124  4 assertEquals(factory.getClasses().get(key), resultFactory.getClasses().get(key));
 125  4 assertTrue(factory.getClasses().get(key) != resultFactory.getClasses().get(key));
 126  4 assertEquals("Class " + key + " has different inbound count",
 127    factory.getClasses().get(key).getInboundDependencies().size(),
 128    resultFactory.getClasses().get(key).getInboundDependencies().size());
 129  4 assertEquals("Class " + key + " has different outbound count",
 130    factory.getClasses().get(key).getOutboundDependencies().size(),
 131    resultFactory.getClasses().get(key).getOutboundDependencies().size());
 132    }
 133   
 134  1 for (String key : resultFactory.getFeatures().keySet()) {
 135  4 assertEquals(factory.getFeatures().get(key), resultFactory.getFeatures().get(key));
 136  4 assertTrue(factory.getFeatures().get(key) != resultFactory.getFeatures().get(key));
 137  4 assertEquals("Feature " + key + " has different inbound count",
 138    factory.getFeatures().get(key).getInboundDependencies().size(),
 139    resultFactory.getFeatures().get(key).getInboundDependencies().size());
 140  4 assertEquals("Feature " + key + " has different outbound count",
 141    factory.getFeatures().get(key).getOutboundDependencies().size(),
 142    resultFactory.getFeatures().get(key).getOutboundDependencies().size());
 143    }
 144    }
 145   
 146  1 public void testCopyAllNodesOnly() {
 147  1 startCriteria.setGlobalIncludes(scopeIncludes);
 148  1 stopCriteria.setMatchingPackages(false);
 149  1 stopCriteria.setMatchingClasses(false);
 150  1 stopCriteria.setMatchingFeatures(false);
 151  1 stopCriteria.setGlobalIncludes("//");
 152   
 153  1 compute(factory.getPackages().values());
 154   
 155  1 assertEquals("Different number of packages",
 156    1,
 157    resultFactory.getPackages().size());
 158  1 assertEquals("Different number of classes",
 159    1,
 160    resultFactory.getClasses().size());
 161  1 assertEquals("Different number of features",
 162    2,
 163    resultFactory.getFeatures().size());
 164   
 165  1 for (String key : resultFactory.getPackages().keySet()) {
 166  1 assertEquals(factory.getPackages().get(key), resultFactory.getPackages().get(key));
 167  1 assertTrue(factory.getPackages().get(key) != resultFactory.getPackages().get(key));
 168  1 assertTrue(resultFactory.getPackages().get(key).getInboundDependencies().isEmpty());
 169  1 assertTrue(resultFactory.getPackages().get(key).getOutboundDependencies().isEmpty());
 170    }
 171   
 172  1 for (String key : resultFactory.getClasses().keySet()) {
 173  1 assertEquals(factory.getClasses().get(key), resultFactory.getClasses().get(key));
 174  1 assertTrue(factory.getClasses().get(key) != resultFactory.getClasses().get(key));
 175  1 assertTrue(resultFactory.getClasses().get(key).getInboundDependencies().isEmpty());
 176  1 assertTrue(resultFactory.getClasses().get(key).getOutboundDependencies().isEmpty());
 177    }
 178   
 179  1 for (String key : resultFactory.getFeatures().keySet()) {
 180  2 assertEquals(factory.getFeatures().get(key), resultFactory.getFeatures().get(key));
 181  2 assertTrue(factory.getFeatures().get(key) != resultFactory.getFeatures().get(key));
 182  2 assertTrue(resultFactory.getFeatures().get(key).getInboundDependencies().isEmpty());
 183  2 assertTrue(resultFactory.getFeatures().get(key).getOutboundDependencies().isEmpty());
 184    }
 185    }
 186   
 187  1 public void testCopyPackageNodesOnly() {
 188  1 startCriteria.setMatchingClasses(false);
 189  1 startCriteria.setMatchingFeatures(false);
 190  1 startCriteria.setGlobalIncludes(scopeIncludes);
 191  1 stopCriteria.setMatchingPackages(false);
 192  1 stopCriteria.setMatchingClasses(false);
 193  1 stopCriteria.setMatchingFeatures(false);
 194  1 stopCriteria.setGlobalIncludes("//");
 195   
 196  1 compute(factory.getPackages().values());
 197   
 198  1 assertEquals("Different number of packages",
 199    1,
 200    resultFactory.getPackages().size());
 201  1 assertTrue(resultFactory.getClasses().isEmpty());
 202  1 assertTrue(resultFactory.getFeatures().isEmpty());
 203    }
 204   
 205  1 public void testCopyClassNodesOnly() {
 206  1 startCriteria.setMatchingPackages(false);
 207  1 startCriteria.setMatchingFeatures(false);
 208  1 startCriteria.setGlobalIncludes(scopeIncludes);
 209  1 stopCriteria.setMatchingPackages(false);
 210  1 stopCriteria.setMatchingClasses(false);
 211  1 stopCriteria.setMatchingFeatures(false);
 212  1 stopCriteria.setGlobalIncludes("//");
 213   
 214  1 compute(factory.getPackages().values());
 215   
 216  1 assertEquals("Different number of packages",
 217    1,
 218    resultFactory.getPackages().size());
 219  1 assertEquals("Different number of classes",
 220    1,
 221    resultFactory.getClasses().size());
 222  1 assertTrue(resultFactory.getFeatures().isEmpty());
 223   
 224  1 for (String key : resultFactory.getPackages().keySet()) {
 225  1 assertEquals(factory.getPackages().get(key), resultFactory.getPackages().get(key));
 226  1 assertTrue(factory.getPackages().get(key) != resultFactory.getPackages().get(key));
 227  1 assertTrue(resultFactory.getPackages().get(key).getInboundDependencies().isEmpty());
 228  1 assertTrue(resultFactory.getPackages().get(key).getOutboundDependencies().isEmpty());
 229    }
 230   
 231  1 for (String key : resultFactory.getClasses().keySet()) {
 232  1 assertEquals(factory.getClasses().get(key), resultFactory.getClasses().get(key));
 233  1 assertTrue(factory.getClasses().get(key) != resultFactory.getClasses().get(key));
 234  1 assertTrue(resultFactory.getClasses().get(key).getInboundDependencies().isEmpty());
 235  1 assertTrue(resultFactory.getClasses().get(key).getOutboundDependencies().isEmpty());
 236    }
 237    }
 238   
 239  1 public void testCopyFeatureNodesOnly() {
 240  1 startCriteria.setMatchingPackages(false);
 241  1 startCriteria.setMatchingClasses(false);
 242  1 startCriteria.setGlobalIncludes(scopeIncludes);
 243  1 stopCriteria.setMatchingPackages(false);
 244  1 stopCriteria.setMatchingClasses(false);
 245  1 stopCriteria.setMatchingFeatures(false);
 246  1 stopCriteria.setGlobalIncludes("//");
 247   
 248  1 compute(factory.getPackages().values());
 249   
 250  1 assertEquals("Different number of packages",
 251    1,
 252    resultFactory.getPackages().size());
 253  1 assertEquals("Different number of classes",
 254    1,
 255    resultFactory.getClasses().size());
 256  1 assertEquals("Different number of features",
 257    2,
 258    resultFactory.getFeatures().size());
 259   
 260  1 for (String key : resultFactory.getPackages().keySet()) {
 261  1 assertEquals(factory.getPackages().get(key), resultFactory.getPackages().get(key));
 262  1 assertTrue(factory.getPackages().get(key) != resultFactory.getPackages().get(key));
 263  1 assertTrue(resultFactory.getPackages().get(key).getInboundDependencies().isEmpty());
 264  1 assertTrue(resultFactory.getPackages().get(key).getOutboundDependencies().isEmpty());
 265    }
 266   
 267  1 for (String key : resultFactory.getClasses().keySet()) {
 268  1 assertEquals(factory.getClasses().get(key), resultFactory.getClasses().get(key));
 269  1 assertTrue(factory.getClasses().get(key) != resultFactory.getClasses().get(key));
 270  1 assertTrue(resultFactory.getClasses().get(key).getInboundDependencies().isEmpty());
 271  1 assertTrue(resultFactory.getClasses().get(key).getOutboundDependencies().isEmpty());
 272    }
 273   
 274  1 for (String key : resultFactory.getFeatures().keySet()) {
 275  2 assertEquals(factory.getFeatures().get(key), resultFactory.getFeatures().get(key));
 276  2 assertTrue(factory.getFeatures().get(key) != resultFactory.getFeatures().get(key));
 277  2 assertTrue(resultFactory.getFeatures().get(key).getInboundDependencies().isEmpty());
 278  2 assertTrue(resultFactory.getFeatures().get(key).getOutboundDependencies().isEmpty());
 279    }
 280    }
 281   
 282  1 public void testCopyNothing() {
 283  1 startCriteria.setMatchingPackages(false);
 284  1 startCriteria.setMatchingClasses(false);
 285  1 startCriteria.setMatchingFeatures(false);
 286   
 287  1 compute(factory.getPackages().values());
 288   
 289  1 assertTrue(resultFactory.getPackages().isEmpty());
 290  1 assertTrue(resultFactory.getClasses().isEmpty());
 291  1 assertTrue(resultFactory.getFeatures().isEmpty());
 292    }
 293   
 294  6 private void compute(Collection<? extends Node> nodes) {
 295  6 RegularExpressionSelectionCriteria localStartCriteria = new RegularExpressionSelectionCriteria();
 296  6 localStartCriteria.setGlobalIncludes(startCriteria.getGlobalIncludes());
 297  6 RegularExpressionSelectionCriteria localStopCriteria = new RegularExpressionSelectionCriteria();
 298  6 localStopCriteria.setGlobalIncludes(stopCriteria.getGlobalIncludes());
 299   
 300  6 TransitiveClosure closure = new TransitiveClosure(localStartCriteria, localStopCriteria);
 301  6 closure.traverseNodes(nodes);
 302   
 303  6 RegularExpressionSelectionCriteria localScopeCriteria = new RegularExpressionSelectionCriteria();
 304  6 localScopeCriteria.setMatchingPackages(startCriteria.isMatchingPackages());
 305  6 localScopeCriteria.setMatchingClasses(startCriteria.isMatchingClasses());
 306  6 localScopeCriteria.setMatchingFeatures(startCriteria.isMatchingFeatures());
 307  6 localScopeCriteria.setGlobalIncludes("//");
 308  6 RegularExpressionSelectionCriteria localFilterCriteria = new RegularExpressionSelectionCriteria();
 309  6 localFilterCriteria.setMatchingPackages(stopCriteria.isMatchingPackages());
 310  6 localFilterCriteria.setMatchingClasses(stopCriteria.isMatchingClasses());
 311  6 localFilterCriteria.setMatchingFeatures(stopCriteria.isMatchingFeatures());
 312  6 localFilterCriteria.setGlobalIncludes("//");
 313   
 314  6 GraphSummarizer summarizer = new GraphSummarizer(localScopeCriteria, localFilterCriteria);
 315  6 summarizer.traverseNodes(closure.getFactory().getPackages().values());
 316   
 317  6 resultFactory = summarizer.getScopeFactory();
 318    }
 319    }