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

COVERAGE SUMMARY FOR SOURCE FILE [TestDependencyExtractor.java]

nameclass, %method, %block, %line, %
TestDependencyExtractor.java100% (1/1)100% (11/11)100% (625/628)100% (72.9/73)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class TestDependencyExtractor100% (1/1)100% (11/11)100% (625/628)100% (72.9/73)
testClasses (): void 100% (1/1)99%  (98/99)100% (6/6)
testFeatures (): void 100% (1/1)99%  (98/99)100% (6/6)
testPackages (): void 100% (1/1)99%  (98/99)100% (6/6)
<static initializer> 100% (1/1)100% (12/12)100% (1/1)
TestDependencyExtractor (): void 100% (1/1)100% (3/3)100% (1/1)
setUp (): void 100% (1/1)100% (207/207)100% (36/36)
tearDown (): void 100% (1/1)100% (14/14)100% (2/2)
testClassList (): void 100% (1/1)100% (11/11)100% (2/2)
testFeatureList (): void 100% (1/1)100% (11/11)100% (2/2)
testPackageList (): void 100% (1/1)100% (11/11)100% (2/2)
testStaticInitializer (): void 100% (1/1)100% (62/62)100% (9/9)

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.io.*;
36import java.util.*;
37 
38import junit.framework.*;
39 
40import org.apache.log4j.*;
41 
42import com.jeantessier.classreader.*;
43 
44public class TestDependencyExtractor extends TestCase {
45    public static final String TEST_CLASS    = "test";
46    public static final String TEST_FILENAME = "classes" + File.separator + "test.class";
47    
48    private NodeFactory factory;
49    
50    private Node _package;
51    private Node test_class;
52    private Node test_main_feature;
53    private Node test_test_feature;
54        
55    private Node java_io_package;
56    private Node java_io_PrintStream_class;
57    private Node java_io_PrintStream_println_feature;
58    
59    private Node java_lang_package;
60    private Node java_lang_NullPointerException_class;
61    private Node java_lang_Object_class;
62    private Node java_lang_Object_Object_feature;
63    private Node java_lang_String_class;
64    private Node java_lang_System_class;
65    private Node java_lang_System_out_feature;
66        
67    private Node java_util_package;
68    private Node java_util_Collections_class;
69    private Node java_util_Collections_singleton_feature;
70    private Node java_util_Set_class;
71 
72    private ClassfileLoader loader;
73    private NodeFactory     testFactory;
74 
75    protected void setUp() throws Exception {
76        Logger.getLogger(getClass()).info("Starting test: " + getName());
77 
78        factory = new NodeFactory();
79 
80        _package = factory.createPackage("");
81        test_class = factory.createClass("test");
82        test_main_feature = factory.createFeature("test.main(java.lang.String[])");
83        test_test_feature = factory.createFeature("test.test()");
84        
85        java_io_package = factory.createPackage("java.io");
86        java_io_PrintStream_class = factory.createClass("java.io.PrintStream");
87        java_io_PrintStream_println_feature = factory.createFeature("java.io.PrintStream.println(java.lang.Object)");
88 
89        java_lang_package = factory.createPackage("java.lang");
90        java_lang_NullPointerException_class = factory.createClass("java.lang.NullPointerException");
91        java_lang_Object_class = factory.createClass("java.lang.Object");
92        java_lang_Object_Object_feature = factory.createFeature("java.lang.Object.Object()");
93        java_lang_String_class = factory.createClass("java.lang.String");
94        java_lang_System_class = factory.createClass("java.lang.System");
95        java_lang_System_out_feature = factory.createFeature("java.lang.System.out");
96        
97        java_util_package = factory.createPackage("java.util");
98        java_util_Collections_class = factory.createClass("java.util.Collections");
99        java_util_Collections_singleton_feature = factory.createFeature("java.util.Collections.singleton(java.lang.Object)");
100        java_util_Set_class = factory.createClass("java.util.Set");
101        
102        test_class.addDependency(java_lang_Object_class);
103        test_main_feature.addDependency(java_io_PrintStream_class);
104        test_main_feature.addDependency(java_io_PrintStream_println_feature);
105        test_main_feature.addDependency(java_lang_NullPointerException_class);
106        test_main_feature.addDependency(java_lang_Object_class);
107        test_main_feature.addDependency(java_lang_Object_Object_feature);
108        test_main_feature.addDependency(java_lang_String_class);
109        test_main_feature.addDependency(java_lang_System_out_feature);
110        test_main_feature.addDependency(java_util_Collections_singleton_feature);
111        test_main_feature.addDependency(java_util_Set_class);
112        test_test_feature.addDependency(java_lang_Object_Object_feature);
113 
114        loader = new AggregatingClassfileLoader();
115        loader.load(Collections.singleton(TEST_FILENAME));
116 
117        testFactory = new NodeFactory();
118        loader.getClassfile(TEST_CLASS).accept(new CodeDependencyCollector(testFactory));
119    }
120 
121    protected void tearDown() throws Exception {
122        Logger.getLogger(getClass()).info("End of " + getName());
123    }
124    
125    public void testPackageList() {
126        assertEquals("Different list of packages",
127                     factory.getPackages().keySet(),
128                     testFactory.getPackages().keySet());
129    }
130    
131    public void testClassList() {
132        assertEquals("Different list of classes",
133                     factory.getClasses().keySet(),
134                     testFactory.getClasses().keySet());
135    }
136    
137    public void testFeatureList() {
138        assertEquals("Different list of features",
139                     factory.getFeatures().keySet(),
140                     testFactory.getFeatures().keySet());
141    }
142    
143    public void testPackages() {
144        for (String key : factory.getPackages().keySet()) {
145            assertEquals(factory.getPackages().get(key), testFactory.getPackages().get(key));
146            assertTrue(key + " is same", factory.getPackages().get(key) != testFactory.getPackages().get(key));
147            assertEquals(key + " inbounds",
148                         factory.getPackages().get(key).getInboundDependencies().size(),
149                         testFactory.getPackages().get(key).getInboundDependencies().size());
150            assertEquals(key + " outbounds",
151                         factory.getPackages().get(key).getOutboundDependencies().size(),
152                         testFactory.getPackages().get(key).getOutboundDependencies().size());
153        }
154    }
155    
156    public void testClasses() {
157        for (String key : factory.getClasses().keySet()) {
158            assertEquals(factory.getClasses().get(key), testFactory.getClasses().get(key));
159            assertTrue(key + " is same", factory.getClasses().get(key) != testFactory.getClasses().get(key));
160            assertEquals(key + " inbounds",
161                         factory.getClasses().get(key).getInboundDependencies().size(),
162                         testFactory.getClasses().get(key).getInboundDependencies().size());
163            assertEquals(key + " outbounds",
164                         factory.getClasses().get(key).getOutboundDependencies().size(),
165                         testFactory.getClasses().get(key).getOutboundDependencies().size());
166        }
167    }
168    
169    public void testFeatures() {
170        for (String key : factory.getFeatures().keySet()) {
171            assertEquals(factory.getFeatures().get(key), testFactory.getFeatures().get(key));
172            assertTrue(key + " is same", factory.getFeatures().get(key) != testFactory.getFeatures().get(key));
173            assertEquals(key + " inbounds",
174                         factory.getFeatures().get(key).getInboundDependencies().size(),
175                         testFactory.getFeatures().get(key).getInboundDependencies().size());
176            assertEquals(key + " outbounds",
177                         factory.getFeatures().get(key).getOutboundDependencies().size(),
178                         testFactory.getFeatures().get(key).getOutboundDependencies().size());
179        }
180    }
181 
182    public void testStaticInitializer() {
183        ClassfileLoader loader  = new AggregatingClassfileLoader();
184        NodeFactory     factory = new NodeFactory();
185        
186        loader.load(Collections.singleton("classes" + File.separator + "StaticInitializerTest.class"));
187 
188        Classfile classfile = loader.getClassfile("StaticInitializerTest");
189        classfile.accept(new CodeDependencyCollector(factory));
190 
191        Collection featureNames = factory.getFeatures().keySet();
192 
193        for (Method_info method : classfile.getAllMethods()) {
194            assertTrue("Missing method " + method.getFullSignature(), featureNames.contains(method.getFullSignature()));
195        }
196    }
197}

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