Clover coverage report - Dependency Finder
Coverage timestamp: Mon Nov 29 2010 15:00:50 PST
file stats: LOC: 425   Methods: 30
NCLOC: 287   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
TestClosureInboundSelector.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 TestClosureInboundSelector extends TestCase {
 40    private NodeFactory localFactory;
 41   
 42    private PackageNode a;
 43    private ClassNode a_A;
 44    private FeatureNode a_A_a;
 45   
 46    private PackageNode b;
 47    private ClassNode b_B;
 48    private FeatureNode b_B_b;
 49   
 50    private PackageNode c;
 51    private ClassNode c_C;
 52    private FeatureNode c_C_c;
 53   
 54  29 protected void setUp() throws Exception {
 55  29 super.setUp();
 56   
 57  29 localFactory = new NodeFactory();
 58   
 59  29 NodeFactory factory = new NodeFactory();
 60   
 61  29 a = factory.createPackage("a");
 62  29 a_A = factory.createClass("a.A");
 63  29 a_A_a = factory.createFeature("a.A.a");
 64   
 65  29 b = factory.createPackage("b");
 66  29 b_B = factory.createClass("b.B");
 67  29 b_B_b = factory.createFeature("b.B.b");
 68   
 69  29 c = factory.createPackage("c");
 70  29 c_C = factory.createClass("c.C");
 71  29 c_C_c = factory.createFeature("c.C.c");
 72   
 73  29 a_A_a.addDependency(b_B_b);
 74  29 b_B_b.addDependency(c_C_c);
 75    }
 76   
 77  1 public void testFactory() {
 78  1 ClosureInboundSelector selector = new ClosureInboundSelector();
 79   
 80  1 selector.setFactory(localFactory);
 81   
 82  1 assertEquals("factory", localFactory, selector.getFactory());
 83    }
 84   
 85  1 public void testCoverage() {
 86  1 Collection<Node> coverage = new ArrayList<Node>();
 87   
 88  1 ClosureInboundSelector selector = new ClosureInboundSelector();
 89   
 90  1 selector.setCoverage(coverage);
 91   
 92  1 assertEquals("coverage", coverage, selector.getCoverage());
 93    }
 94   
 95  1 public void testOneSelectedNode() {
 96  1 ClosureInboundSelector selector = new ClosureInboundSelector(localFactory, Collections.<Node>emptySet());
 97  1 selector.traverseNodes(Collections.singleton(b_B_b));
 98   
 99  1 assertEquals("nodes in selection", 1, selector.getSelectedNodes().size());
 100  1 assertEquals("a.A.a in selection", a_A_a, selector.getSelectedNodes().iterator().next());
 101  1 assertSame("a.A.a in selection", a_A_a, selector.getSelectedNodes().iterator().next());
 102    }
 103   
 104  1 public void testOneCopiedNode() {
 105  1 ClosureInboundSelector selector = new ClosureInboundSelector(localFactory, Collections.<Node>emptySet());
 106  1 selector.traverseNodes(Collections.singleton(b_B_b));
 107   
 108  1 assertEquals("packages in scope", 2, localFactory.getPackages().size());
 109  1 assertEquals("classes in scope" , 2, localFactory.getClasses().size());
 110  1 assertEquals("features in scope", 2, localFactory.getFeatures().size());
 111   
 112  1 assertEquals("package a in scope" , a, localFactory.getPackages().get("a"));
 113  1 assertEquals("class a.A in scope" , a_A, localFactory.getClasses().get("a.A"));
 114  1 assertEquals("feature a.A.a in scope", a_A_a, localFactory.getFeatures().get("a.A.a"));
 115  1 assertEquals("package b in scope" , b, localFactory.getPackages().get("b"));
 116  1 assertEquals("class b.B in scope" , b_B, localFactory.getClasses().get("b.B"));
 117  1 assertEquals("feature b.B.b in scope", b_B_b, localFactory.getFeatures().get("b.B.b"));
 118   
 119  1 assertNotSame("package a in scope" , a, localFactory.getPackages().get("a"));
 120  1 assertNotSame("class a.A in scope" , a_A, localFactory.getClasses().get("a.A"));
 121  1 assertNotSame("feature a.A.a in scope", a_A_a, localFactory.getFeatures().get("a.A.a"));
 122  1 assertNotSame("package b in scope" , b, localFactory.getPackages().get("b"));
 123  1 assertNotSame("class b.B in scope" , b_B, localFactory.getClasses().get("b.B"));
 124  1 assertNotSame("feature b.B.b in scope", b_B_b, localFactory.getFeatures().get("b.B.b"));
 125   
 126  1 assertEquals("nodes in selection", 1, selector.getCopiedNodes().size());
 127  1 assertEquals("a.A.a in selection", a_A_a, selector.getCopiedNodes().iterator().next());
 128  1 assertNotSame("a.A.a in selection", a_A_a, selector.getCopiedNodes().iterator().next());
 129  1 assertSame("a.A.a in selection", localFactory.getFeatures().get("a.A.a"), selector.getCopiedNodes().iterator().next());
 130  1 assertEquals("a.A.a's inbounds", 0, selector.getCopiedNodes().iterator().next().getInboundDependencies().size());
 131  1 assertEquals("a.A.a's outbounds", 1, selector.getCopiedNodes().iterator().next().getOutboundDependencies().size());
 132    }
 133   
 134  1 public void testThreeSelectedNodesFromPackage() {
 135  1 a.addDependency(b);
 136  1 a_A.addDependency(b);
 137  1 a_A_a.addDependency(b);
 138   
 139  1 ClosureInboundSelector selector = new ClosureInboundSelector(localFactory, Collections.<Node>emptySet());
 140  1 selector.traverseNodes(Collections.singleton(b));
 141   
 142  1 assertEquals("nodes in selection", 3, selector.getSelectedNodes().size());
 143  1 assertTrue("a in selection", selector.getSelectedNodes().contains(a));
 144  1 assertTrue("a.A in selection", selector.getSelectedNodes().contains(a_A));
 145  1 assertTrue("a.A.a in selection", selector.getSelectedNodes().contains(a_A_a));
 146    }
 147   
 148  1 public void testThreeSelectedNodesFromClass() {
 149  1 a.addDependency(b_B);
 150  1 a_A.addDependency(b_B);
 151  1 a_A_a.addDependency(b_B);
 152   
 153  1 ClosureInboundSelector selector = new ClosureInboundSelector(localFactory, Collections.<Node>emptySet());
 154  1 selector.traverseNodes(Collections.singleton(b_B));
 155   
 156  1 assertEquals("nodes in selection", 3, selector.getSelectedNodes().size());
 157  1 assertTrue("a in selection", selector.getSelectedNodes().contains(a));
 158  1 assertTrue("a.A in selection", selector.getSelectedNodes().contains(a_A));
 159  1 assertTrue("a.A.a in selection", selector.getSelectedNodes().contains(a_A_a));
 160    }
 161   
 162  1 public void testThreeSelectedNodesFromFeature() {
 163  1 a.addDependency(b_B_b);
 164  1 a_A.addDependency(b_B_b);
 165  1 a_A_a.addDependency(b_B_b);
 166   
 167  1 ClosureInboundSelector selector = new ClosureInboundSelector(localFactory, Collections.<Node>emptySet());
 168  1 selector.traverseNodes(Collections.singleton(b_B_b));
 169   
 170  1 assertEquals("nodes in selection", 3, selector.getSelectedNodes().size());
 171  1 assertTrue("a in selection", selector.getSelectedNodes().contains(a));
 172  1 assertTrue("a.A in selection", selector.getSelectedNodes().contains(a_A));
 173  1 assertTrue("a.A.a in selection", selector.getSelectedNodes().contains(a_A_a));
 174    }
 175   
 176  1 public void testThreeCopiedNodesFromPackage() {
 177  1 a.addDependency(b);
 178  1 a_A.addDependency(b);
 179  1 a_A_a.addDependency(b);
 180   
 181  1 ClosureInboundSelector selector = new ClosureInboundSelector(localFactory, Collections.<Node>emptySet());
 182  1 selector.traverseNodes(Collections.singleton(b));
 183   
 184  1 assertEquals("nodes in selection", 3, selector.getCopiedNodes().size());
 185  1 assertTrue("a in selection", selector.getCopiedNodes().contains(a));
 186  1 assertTrue("a.A in selection", selector.getCopiedNodes().contains(a_A));
 187  1 assertTrue("a.A.a in selection", selector.getCopiedNodes().contains(a_A_a));
 188   
 189  1 assertEquals("b's inbounds", 3, localFactory.createPackage("b").getInboundDependencies().size());
 190    }
 191   
 192  1 public void testThreeCopiedNodesFromClass() {
 193  1 a.addDependency(b_B);
 194  1 a_A.addDependency(b_B);
 195  1 a_A_a.addDependency(b_B);
 196   
 197  1 ClosureInboundSelector selector = new ClosureInboundSelector(localFactory, Collections.<Node>emptySet());
 198  1 selector.traverseNodes(Collections.singleton(b_B));
 199   
 200  1 assertEquals("nodes in selection", 3, selector.getCopiedNodes().size());
 201  1 assertTrue("a in selection", selector.getCopiedNodes().contains(a));
 202  1 assertTrue("a.A in selection", selector.getCopiedNodes().contains(a_A));
 203  1 assertTrue("a.A.a in selection", selector.getCopiedNodes().contains(a_A_a));
 204   
 205  1 assertEquals("b.B's inbounds", 3, localFactory.createClass("b.B").getInboundDependencies().size());
 206    }
 207   
 208  1 public void testThreeCopiedNodesFromFeature() {
 209  1 a.addDependency(b_B_b);
 210  1 a_A.addDependency(b_B_b);
 211  1 a_A_a.addDependency(b_B_b);
 212   
 213  1 ClosureInboundSelector selector = new ClosureInboundSelector(localFactory, Collections.<Node>emptySet());
 214  1 selector.traverseNodes(Collections.singleton(b_B_b));
 215   
 216  1 assertEquals("nodes in selection", 3, selector.getCopiedNodes().size());
 217  1 assertTrue("a in selection", selector.getCopiedNodes().contains(a));
 218  1 assertTrue("a.A in selection", selector.getCopiedNodes().contains(a_A));
 219  1 assertTrue("a.A.a in selection", selector.getCopiedNodes().contains(a_A_a));
 220   
 221  1 assertEquals("b.B.b's inbounds", 3, localFactory.createFeature("b.B.b").getInboundDependencies().size());
 222    }
 223   
 224  1 public void testTwoSelectedNodeWithPackageInCoverage() {
 225  1 a.addDependency(b_B_b);
 226  1 a_A.addDependency(b_B_b);
 227  1 a_A_a.addDependency(b_B_b);
 228   
 229  1 ClosureInboundSelector selector = new ClosureInboundSelector(localFactory, Collections.singleton(a));
 230  1 selector.traverseNodes(Collections.singleton(b_B_b));
 231   
 232  1 assertEquals("nodes in selection", 2, selector.getSelectedNodes().size());
 233  1 assertTrue("a.A in selection", selector.getSelectedNodes().contains(a_A));
 234  1 assertTrue("a.A.a in selection", selector.getSelectedNodes().contains(a_A_a));
 235    }
 236   
 237  1 public void testTwoSelectedNodeWithClassInCoverage() {
 238  1 a.addDependency(b_B_b);
 239  1 a_A.addDependency(b_B_b);
 240  1 a_A_a.addDependency(b_B_b);
 241   
 242  1 ClosureInboundSelector selector = new ClosureInboundSelector(localFactory, Collections.singleton(a_A));
 243  1 selector.traverseNodes(Collections.singleton(b_B_b));
 244   
 245  1 assertEquals("nodes in selection", 2, selector.getSelectedNodes().size());
 246  1 assertTrue("a in selection", selector.getSelectedNodes().contains(a));
 247  1 assertTrue("a.A.a in selection", selector.getSelectedNodes().contains(a_A_a));
 248    }
 249   
 250  1 public void testTwoSelectedNodeWithFeatureInCoverage() {
 251  1 a.addDependency(b_B_b);
 252  1 a_A.addDependency(b_B_b);
 253  1 a_A_a.addDependency(b_B_b);
 254   
 255  1 ClosureInboundSelector selector = new ClosureInboundSelector(localFactory, Collections.singleton(a_A_a));
 256  1 selector.traverseNodes(Collections.singleton(b_B_b));
 257   
 258  1 assertEquals("nodes in selection", 2, selector.getSelectedNodes().size());
 259  1 assertTrue("a in selection", selector.getSelectedNodes().contains(a));
 260  1 assertTrue("a.A in selection", selector.getSelectedNodes().contains(a_A));
 261    }
 262   
 263  1 public void testTwoCopiedNodeWithPackageInCoverage() {
 264  1 a.addDependency(b_B_b);
 265  1 a_A.addDependency(b_B_b);
 266  1 a_A_a.addDependency(b_B_b);
 267   
 268  1 ClosureInboundSelector selector = new ClosureInboundSelector(localFactory, Collections.singleton(a));
 269  1 selector.traverseNodes(Collections.singleton(b_B_b));
 270   
 271  1 assertEquals("nodes in selection", 2, selector.getCopiedNodes().size());
 272  1 assertTrue("a.A in selection", selector.getCopiedNodes().contains(a_A));
 273  1 assertTrue("a.A.a in selection", selector.getCopiedNodes().contains(a_A_a));
 274   
 275  1 assertEquals("b.B.b's inbounds", 2, localFactory.createFeature("b.B.b").getInboundDependencies().size());
 276    }
 277   
 278  1 public void testTwoCopiedNodeWithClassInCoverage() {
 279  1 a.addDependency(b_B_b);
 280  1 a_A.addDependency(b_B_b);
 281  1 a_A_a.addDependency(b_B_b);
 282   
 283  1 ClosureInboundSelector selector = new ClosureInboundSelector(localFactory, Collections.singleton(a_A));
 284  1 selector.traverseNodes(Collections.singleton(b_B_b));
 285   
 286  1 assertEquals("nodes in selection", 2, selector.getCopiedNodes().size());
 287  1 assertTrue("a in selection", selector.getCopiedNodes().contains(a));
 288  1 assertTrue("a.A.a in selection", selector.getCopiedNodes().contains(a_A_a));
 289   
 290  1 assertEquals("b.B.b's inbounds", 2, localFactory.createFeature("b.B.b").getInboundDependencies().size());
 291    }
 292   
 293  1 public void testTwoCopiedNodeWithFeatureInCoverage() {
 294  1 a.addDependency(b_B_b);
 295  1 a_A.addDependency(b_B_b);
 296  1 a_A_a.addDependency(b_B_b);
 297   
 298  1 ClosureInboundSelector selector = new ClosureInboundSelector(localFactory, Collections.singleton(a_A_a));
 299  1 selector.traverseNodes(Collections.singleton(b_B_b));
 300   
 301  1 assertEquals("nodes in selection", 2, selector.getCopiedNodes().size());
 302  1 assertTrue("a in selection", selector.getCopiedNodes().contains(a));
 303  1 assertTrue("a.A in selection", selector.getCopiedNodes().contains(a_A));
 304   
 305  1 assertEquals("b.B.b's inbounds", 2, localFactory.createFeature("b.B.b").getInboundDependencies().size());
 306    }
 307   
 308  1 public void testReset() {
 309  1 ClosureInboundSelector selector = new ClosureInboundSelector(localFactory, Collections.<Node>emptySet());
 310  1 selector.traverseNodes(Collections.singleton(b_B_b));
 311   
 312  1 assertEquals("nodes in selection", 1, selector.getSelectedNodes().size());
 313  1 assertEquals("copied nodes", 1, selector.getCopiedNodes().size());
 314   
 315  1 selector.reset();
 316   
 317  1 assertEquals("nodes in selection", 0, selector.getSelectedNodes().size());
 318  1 assertEquals("copied nodes", 0, selector.getCopiedNodes().size());
 319    }
 320   
 321  1 public void testVisitInferredPackage() {
 322  1 ClosureInboundSelector selector = new ClosureInboundSelector(localFactory, Collections.<Node>emptySet());
 323  1 selector.traverseNodes(Collections.singleton(b));
 324   
 325  1 assertEquals("package.isConfirmed()", b.isConfirmed(), localFactory.getPackages().get(b.getName()).isConfirmed());
 326    }
 327   
 328  1 public void testVisitConfirmedPackage() {
 329  1 b.setConfirmed(true);
 330   
 331  1 ClosureInboundSelector selector = new ClosureInboundSelector(localFactory, Collections.<Node>emptySet());
 332  1 selector.traverseNodes(Collections.singleton(b));
 333   
 334  1 assertEquals("package.isConfirmed()", b.isConfirmed(), localFactory.getPackages().get(b.getName()).isConfirmed());
 335    }
 336   
 337  1 public void testFollowToInferredPackage() {
 338  1 a.addDependency(b);
 339   
 340  1 ClosureInboundSelector selector = new ClosureInboundSelector(localFactory, Collections.<Node>emptySet());
 341  1 selector.traverseNodes(Collections.singleton(b));
 342   
 343  1 assertEquals("package.isConfirmed()", a.isConfirmed(), localFactory.getPackages().get(a.getName()).isConfirmed());
 344    }
 345   
 346  1 public void testFollowToConfirmedPackage() {
 347  1 a.addDependency(b);
 348  1 a.setConfirmed(true);
 349   
 350  1 ClosureInboundSelector selector = new ClosureInboundSelector(localFactory, Collections.<Node>emptySet());
 351  1 selector.traverseNodes(Collections.singleton(b));
 352   
 353  1 assertEquals("package.isConfirmed()", a.isConfirmed(), localFactory.getPackages().get(a.getName()).isConfirmed());
 354    }
 355   
 356  1 public void testVisitInferredClass() {
 357  1 ClosureInboundSelector selector = new ClosureInboundSelector(localFactory, Collections.<Node>emptySet());
 358  1 selector.traverseNodes(Collections.singleton(b_B));
 359   
 360  1 assertEquals("class.isConfirmed()", b_B.isConfirmed(), localFactory.getClasses().get(b_B.getName()).isConfirmed());
 361    }
 362   
 363  1 public void testVisitConfirmedClass() {
 364  1 b_B.setConfirmed(true);
 365   
 366  1 ClosureInboundSelector selector = new ClosureInboundSelector(localFactory, Collections.<Node>emptySet());
 367  1 selector.traverseNodes(Collections.singleton(b_B));
 368   
 369  1 assertEquals("class.isConfirmed()", b_B.isConfirmed(), localFactory.getClasses().get(b_B.getName()).isConfirmed());
 370    }
 371   
 372  1 public void testFollowToInferredClass() {
 373  1 a_A.addDependency(b_B);
 374   
 375  1 ClosureInboundSelector selector = new ClosureInboundSelector(localFactory, Collections.<Node>emptySet());
 376  1 selector.traverseNodes(Collections.singleton(b_B));
 377   
 378  1 assertEquals("class.isConfirmed()", a_A.isConfirmed(), localFactory.getClasses().get(a_A.getName()).isConfirmed());
 379    }
 380   
 381  1 public void testFollowToConfirmedClass() {
 382  1 a_A.addDependency(b_B);
 383  1 a_A.setConfirmed(true);
 384   
 385  1 ClosureInboundSelector selector = new ClosureInboundSelector(localFactory, Collections.<Node>emptySet());
 386  1 selector.traverseNodes(Collections.singleton(b_B));
 387   
 388  1 assertEquals("class.isConfirmed()", a_A.isConfirmed(), localFactory.getClasses().get(a_A.getName()).isConfirmed());
 389    }
 390   
 391  1 public void testVisitInferredFeature() {
 392  1 ClosureInboundSelector selector = new ClosureInboundSelector(localFactory, Collections.<Node>emptySet());
 393  1 selector.traverseNodes(Collections.singleton(b_B_b));
 394   
 395  1 assertEquals("feature.isConfirmed()", b_B_b.isConfirmed(), localFactory.getFeatures().get(b_B_b.getName()).isConfirmed());
 396    }
 397   
 398  1 public void testVisitConfirmedFeature() {
 399  1 b_B_b.setConfirmed(true);
 400   
 401  1 ClosureInboundSelector selector = new ClosureInboundSelector(localFactory, Collections.<Node>emptySet());
 402  1 selector.traverseNodes(Collections.singleton(b_B_b));
 403   
 404  1 assertEquals("feature.isConfirmed()", b_B_b.isConfirmed(), localFactory.getFeatures().get(b_B_b.getName()).isConfirmed());
 405    }
 406   
 407  1 public void testFollowToInferredFeature() {
 408  1 a_A_a.addDependency(b_B_b);
 409   
 410  1 ClosureInboundSelector selector = new ClosureInboundSelector(localFactory, Collections.<Node>emptySet());
 411  1 selector.traverseNodes(Collections.singleton(b_B_b));
 412   
 413  1 assertEquals("feature.isConfirmed()", a_A_a.isConfirmed(), localFactory.getFeatures().get(a_A_a.getName()).isConfirmed());
 414    }
 415   
 416  1 public void testFollowToConfirmedFeature() {
 417  1 a_A_a.addDependency(b_B_b);
 418  1 a_A_a.setConfirmed(true);
 419   
 420  1 ClosureInboundSelector selector = new ClosureInboundSelector(localFactory, Collections.<Node>emptySet());
 421  1 selector.traverseNodes(Collections.singleton(b_B_b));
 422   
 423  1 assertEquals("feature.isConfirmed()", a_A_a.isConfirmed(), localFactory.getFeatures().get(a_A_a.getName()).isConfirmed());
 424    }
 425    }