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

COVERAGE SUMMARY FOR SOURCE FILE [TestMetricsGatherer.java]

nameclass, %method, %block, %line, %
TestMetricsGatherer.java100% (1/1)100% (19/19)100% (789/789)100% (123/123)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class TestMetricsGatherer100% (1/1)100% (19/19)100% (789/789)100% (123/123)
<static initializer> 100% (1/1)100% (12/12)100% (1/1)
TestMetricsGatherer (): void 100% (1/1)100% (3/3)100% (1/1)
assertCollectionEquals (String, Collection, String []): void 100% (1/1)100% (15/15)100% (3/3)
assertCollectionMeasurementEquals (Metrics, BasicMeasurements, String []): void 100% (1/1)100% (7/7)100% (2/2)
assertCollectionMeasurementEquals (Metrics, String, String []): void 100% (1/1)100% (21/21)100% (4/4)
assertMeasurementEquals (Metrics, BasicMeasurements, int): void 100% (1/1)100% (7/7)100% (2/2)
assertMeasurementEquals (Metrics, String, double): void 100% (1/1)100% (13/13)100% (2/2)
assertMeasurementEquals (Metrics, String, int): void 100% (1/1)100% (12/12)100% (2/2)
assertMeasurementIsEmpty (Metrics, BasicMeasurements): void 100% (1/1)100% (6/6)100% (2/2)
assertMeasurementIsEmpty (Metrics, String): void 100% (1/1)100% (14/14)100% (2/2)
assertMeasurementIsNaN (Metrics, String): void 100% (1/1)100% (9/9)100% (2/2)
loadTestData (): void 100% (1/1)100% (40/40)100% (5/5)
testNbAllElements (): void 100% (1/1)100% (109/109)100% (5/5)
testNbElements (): void 100% (1/1)100% (53/53)100% (5/5)
testProject (): void 100% (1/1)100% (9/9)100% (2/2)
test_ (): void 100% (1/1)100% (9/9)100% (2/2)
test_test (): void 100% (1/1)100% (268/268)100% (55/55)
test_test_main (): void 100% (1/1)100% (109/109)100% (13/13)
test_test_test (): void 100% (1/1)100% (73/73)100% (13/13)

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.metrics;
34 
35import java.io.*;
36import java.util.*;
37import javax.xml.parsers.*;
38 
39import static org.hamcrest.Matchers.*;
40import static org.junit.Assert.*;
41import org.junit.*;
42import org.xml.sax.*;
43 
44import com.jeantessier.classreader.*;
45 
46public class TestMetricsGatherer {
47    public static final String TEST_CLASS = "test";
48    public static final String TEST_FILENAME = "classes" + File.separator + "test.class";
49 
50    private MetricsFactory factory;
51 
52    @Before
53    public void loadTestData() throws IOException, ParserConfigurationException, SAXException {
54        factory = new MetricsFactory("test", new MetricsConfigurationLoader(Boolean.getBoolean("DEPENDENCYFINDER_TESTS_VALIDATE")).load("etc" + File.separator + "MetricsConfig.xml"));
55 
56        ClassfileLoader loader = new AggregatingClassfileLoader();
57        loader.load(Collections.singleton(TEST_FILENAME));
58        loader.getClassfile(TEST_CLASS).accept(new MetricsGatherer(factory));
59    }
60    
61    @Test
62    public void testNbElements() {
63        assertCollectionEquals("project names", factory.getProjectNames(), "test");
64        assertCollectionEquals("group names", factory.getGroupNames(), "");
65        assertCollectionEquals("class names", factory.getClassNames(), "test");
66        assertCollectionEquals("method names", factory.getMethodNames(), "test.main(java.lang.String[])", "test.test()");
67    }
68    
69    @Test
70    public void testNbAllElements() {
71        assertCollectionEquals("all project names", factory.getAllProjectNames(), "test");
72        assertCollectionEquals("all group names", factory.getAllGroupNames(), "", "java.io", "java.lang", "java.util");
73        assertCollectionEquals("all class names", factory.getAllClassNames(), "java.io.PrintStream", "java.lang.NullPointerException", "java.lang.Object", "java.lang.String", "java.lang.System", "java.util.Collections", "java.util.Collection", "java.util.Set", "test");
74        assertCollectionEquals("all method names", factory.getAllMethodNames(), "java.io.PrintStream.println(java.lang.Object)", "java.lang.Object.Object()", "java.util.Collections.singleton(java.lang.Object)", "test.main(java.lang.String[])", "test.test()");
75    }
76 
77    @Test
78    public void test_test_test() {
79        Metrics metrics = factory.createMethodMetrics("test.test()");
80 
81        assertMeasurementEquals(metrics, BasicMeasurements.SLOC, 1);
82        assertMeasurementEquals(metrics, BasicMeasurements.PARAMETERS, 0);
83        assertMeasurementEquals(metrics, BasicMeasurements.LOCAL_VARIABLES, 1);
84 
85        assertCollectionMeasurementEquals(metrics, BasicMeasurements.INBOUND_INTRA_CLASS_METHOD_DEPENDENCIES);
86        assertCollectionMeasurementEquals(metrics, BasicMeasurements.INBOUND_INTRA_PACKAGE_METHOD_DEPENDENCIES);
87        assertCollectionMeasurementEquals(metrics, BasicMeasurements.INBOUND_EXTRA_PACKAGE_METHOD_DEPENDENCIES);
88        assertCollectionMeasurementEquals(metrics, BasicMeasurements.OUTBOUND_INTRA_CLASS_FEATURE_DEPENDENCIES);
89        assertCollectionMeasurementEquals(metrics, BasicMeasurements.OUTBOUND_INTRA_PACKAGE_FEATURE_DEPENDENCIES);
90        assertCollectionMeasurementEquals(metrics, BasicMeasurements.OUTBOUND_INTRA_PACKAGE_CLASS_DEPENDENCIES);
91        assertCollectionMeasurementEquals(metrics, BasicMeasurements.OUTBOUND_EXTRA_PACKAGE_FEATURE_DEPENDENCIES, "java.lang.Object.Object()");
92        assertCollectionMeasurementEquals(metrics, BasicMeasurements.OUTBOUND_EXTRA_PACKAGE_CLASS_DEPENDENCIES);
93    }
94    
95    @Test
96    public void test_test_main() {
97        Metrics metrics = factory.createMethodMetrics("test.main(java.lang.String[])");
98 
99        assertMeasurementEquals(metrics, BasicMeasurements.SLOC, 5);
100        assertMeasurementEquals(metrics, BasicMeasurements.PARAMETERS, 1);
101        assertMeasurementEquals(metrics, BasicMeasurements.LOCAL_VARIABLES, 3);
102 
103        assertCollectionMeasurementEquals(metrics, BasicMeasurements.INBOUND_INTRA_CLASS_METHOD_DEPENDENCIES);
104        assertCollectionMeasurementEquals(metrics, BasicMeasurements.INBOUND_INTRA_PACKAGE_METHOD_DEPENDENCIES);
105        assertCollectionMeasurementEquals(metrics, BasicMeasurements.INBOUND_EXTRA_PACKAGE_METHOD_DEPENDENCIES);
106        assertCollectionMeasurementEquals(metrics, BasicMeasurements.OUTBOUND_INTRA_CLASS_FEATURE_DEPENDENCIES);
107        assertCollectionMeasurementEquals(metrics, BasicMeasurements.OUTBOUND_INTRA_PACKAGE_FEATURE_DEPENDENCIES);
108        assertCollectionMeasurementEquals(metrics, BasicMeasurements.OUTBOUND_INTRA_PACKAGE_CLASS_DEPENDENCIES);
109        assertCollectionMeasurementEquals(metrics, BasicMeasurements.OUTBOUND_EXTRA_PACKAGE_FEATURE_DEPENDENCIES, "java.util.Collections.singleton(java.lang.Object)", "java.lang.Object.Object()", "java.io.PrintStream.println(java.lang.Object)");
110        assertCollectionMeasurementEquals(metrics, BasicMeasurements.OUTBOUND_EXTRA_PACKAGE_CLASS_DEPENDENCIES, "java.io.PrintStream", "java.lang.NullPointerException", "java.lang.Object", "java.lang.String", "java.lang.System", "java.util.Collection", "java.util.Set");
111    }
112 
113    @Test
114    public void test_test() {
115        Metrics metrics = factory.createClassMetrics("test");
116 
117        assertMeasurementEquals(metrics, BasicMeasurements.SLOC, 7);
118        assertMeasurementEquals(metrics, "M", 2);
119        assertMeasurementEquals(metrics, BasicMeasurements.PUBLIC_METHODS, 2);
120        assertMeasurementEquals(metrics, BasicMeasurements.PROTECTED_METHODS, 0);
121        assertMeasurementEquals(metrics, BasicMeasurements.PRIVATE_METHODS, 0);
122        assertMeasurementEquals(metrics, BasicMeasurements.PACKAGE_METHODS, 0);
123        assertMeasurementEquals(metrics, BasicMeasurements.FINAL_METHODS, 0);
124        assertMeasurementEquals(metrics, BasicMeasurements.ABSTRACT_METHODS, 0);
125        assertMeasurementEquals(metrics, BasicMeasurements.DEPRECATED_METHODS, 0);
126        assertMeasurementEquals(metrics, BasicMeasurements.SYNTHETIC_METHODS, 0);
127        assertMeasurementEquals(metrics, BasicMeasurements.STATIC_METHODS, 1);
128        assertMeasurementEquals(metrics, BasicMeasurements.SYNCHRONIZED_METHODS, 0);
129        assertMeasurementEquals(metrics, BasicMeasurements.NATIVE_METHODS, 0);
130        assertMeasurementEquals(metrics, BasicMeasurements.TRIVIAL_METHODS, 0);
131        assertMeasurementEquals(metrics, "PuMR", 1.0);
132        assertMeasurementEquals(metrics, "ProMR", 0.0);
133        assertMeasurementEquals(metrics, "PriMR", 0.0);
134        assertMeasurementEquals(metrics, "PaMR", 0.0);
135        assertMeasurementEquals(metrics, "FMR", 0.0);
136        assertMeasurementEquals(metrics, "AMR", 0.0);
137        assertMeasurementEquals(metrics, "DMR", 0.0);
138        assertMeasurementEquals(metrics, "SynthMR", 0.0);
139        assertMeasurementEquals(metrics, "SMR", 0.5);
140        assertMeasurementEquals(metrics, "SynchMR", 0.0);
141        assertMeasurementEquals(metrics, "NMR", 0.0);
142        assertMeasurementEquals(metrics, "TMR", 0.0);
143        assertMeasurementEquals(metrics, "A", 0.0);
144        assertMeasurementEquals(metrics, BasicMeasurements.PUBLIC_ATTRIBUTES, 0);
145        assertMeasurementEquals(metrics, BasicMeasurements.PROTECTED_ATTRIBUTES, 0);
146        assertMeasurementEquals(metrics, BasicMeasurements.PRIVATE_ATTRIBUTES, 0);
147        assertMeasurementEquals(metrics, BasicMeasurements.PACKAGE_ATTRIBUTES, 0);
148        assertMeasurementEquals(metrics, BasicMeasurements.FINAL_ATTRIBUTES, 0);
149        assertMeasurementEquals(metrics, BasicMeasurements.DEPRECATED_ATTRIBUTES, 0);
150        assertMeasurementEquals(metrics, BasicMeasurements.SYNTHETIC_ATTRIBUTES, 0);
151        assertMeasurementEquals(metrics, BasicMeasurements.STATIC_ATTRIBUTES, 0);
152        assertMeasurementEquals(metrics, BasicMeasurements.TRANSIENT_ATTRIBUTES, 0);
153        assertMeasurementEquals(metrics, BasicMeasurements.VOLATILE_ATTRIBUTES, 0);
154        assertMeasurementIsNaN(metrics, "PuAR");
155        assertMeasurementIsNaN(metrics, "ProAR");
156        assertMeasurementIsNaN(metrics, "PriAR");
157        assertMeasurementIsNaN(metrics, "PaAR");
158        assertMeasurementIsNaN(metrics, "FAR");
159        assertMeasurementIsNaN(metrics, "DAR");
160        assertMeasurementIsNaN(metrics, "SynthAR");
161        assertMeasurementIsNaN(metrics, "SAR");
162        assertMeasurementIsNaN(metrics, "TAR");
163        assertMeasurementIsNaN(metrics, "VAR");
164        assertMeasurementEquals(metrics, BasicMeasurements.SUBCLASSES, 0);
165        assertMeasurementIsEmpty(metrics, BasicMeasurements.DEPTH_OF_INHERITANCE);
166 
167        assertCollectionMeasurementEquals(metrics, BasicMeasurements.INBOUND_INTRA_PACKAGE_DEPENDENCIES);
168        assertCollectionMeasurementEquals(metrics, BasicMeasurements.INBOUND_EXTRA_PACKAGE_DEPENDENCIES);
169        assertCollectionMeasurementEquals(metrics, BasicMeasurements.OUTBOUND_INTRA_PACKAGE_DEPENDENCIES);
170        assertCollectionMeasurementEquals(metrics, BasicMeasurements.OUTBOUND_EXTRA_PACKAGE_DEPENDENCIES, "java.lang.Object");
171    }
172 
173    @Test
174    public void test_() {
175        assertMeasurementEquals(factory.createGroupMetrics(""), BasicMeasurements.SLOC, 7);
176    }
177 
178    @Test
179    public void testProject() {
180        assertMeasurementEquals(factory.createProjectMetrics("test"), BasicMeasurements.SLOC, 7);
181    }
182 
183    private void assertCollectionEquals(String message, Collection<String> names, String ... values) {
184        assertThat(message, names, hasItems(values));
185        assertThat(message, names.size(), is(values.length));
186    }
187 
188    private void assertCollectionMeasurementEquals(Metrics metrics, BasicMeasurements measurement, String ... values) {
189        assertCollectionMeasurementEquals(metrics, measurement.getAbbreviation(), values);
190    }
191 
192    private void assertCollectionMeasurementEquals(Metrics metrics, String abbreviation, String ... values) {
193        Collection<String> dependencies = ((CollectionMeasurement) metrics.getMeasurement(abbreviation)).getValues();
194        assertThat(abbreviation, dependencies, hasItems(values));
195        assertThat(abbreviation, dependencies.size(), is(values.length));
196    }
197 
198    private void assertMeasurementEquals(Metrics metrics, BasicMeasurements measurement, int expectedValue) {
199        assertMeasurementEquals(metrics, measurement.getAbbreviation(), expectedValue);
200    }
201 
202    private void assertMeasurementEquals(Metrics metrics, String abbreviation, int expectedValue) {
203        assertThat(abbreviation, metrics.getMeasurement(abbreviation).getValue().intValue(), is(expectedValue));
204    }
205 
206    private void assertMeasurementEquals(Metrics metrics, String abbreviation, double expectedValue) {
207        assertThat(abbreviation, metrics.getMeasurement(abbreviation).getValue().doubleValue(), is(closeTo(expectedValue, 0.01)));
208    }
209 
210    private void assertMeasurementIsNaN(Metrics metrics, String abbreviation) {
211        assertTrue(abbreviation, Double.isNaN(metrics.getMeasurement(abbreviation).getValue().doubleValue()));
212    }
213 
214    private void assertMeasurementIsEmpty(Metrics metrics, BasicMeasurements measurement) {
215        assertMeasurementIsEmpty(metrics, measurement.getAbbreviation());
216    }
217 
218    private void assertMeasurementIsEmpty(Metrics metrics, String abbreviation) {
219        assertTrue(abbreviation + " should have been ignored", metrics.getMeasurement(abbreviation).isEmpty());
220    }
221}

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