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

COVERAGE SUMMARY FOR SOURCE FILE [TestSymbolGatherer.java]

nameclass, %method, %block, %line, %
TestSymbolGatherer.java100% (1/1)100% (8/8)100% (411/411)100% (48/48)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class TestSymbolGatherer100% (1/1)100% (8/8)100% (411/411)100% (48/48)
<static initializer> 100% (1/1)100% (12/12)100% (1/1)
TestSymbolGatherer (): void 100% (1/1)100% (3/3)100% (1/1)
setUp (): void 100% (1/1)100% (28/28)100% (6/6)
testClassNamesOnly (): void 100% (1/1)100% (54/54)100% (8/8)
testEmpty (): void 100% (1/1)100% (8/8)100% (2/2)
testLocalNamesOnly (): void 100% (1/1)100% (102/102)100% (11/11)
testMethodNamesOnly (): void 100% (1/1)100% (70/70)100% (9/9)
testOnOneClass (): void 100% (1/1)100% (134/134)100% (10/10)

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.classreader;
34 
35import java.io.*;
36import java.util.*;
37 
38import junit.framework.*;
39 
40public class TestSymbolGatherer extends TestCase {
41    public static final String TEST_CLASS = "test";
42    public static final String TEST_FILENAME = "classes" + File.separator + "test.class";
43 
44    private DefaultSymbolGathererStrategy strategy;
45    private SymbolGatherer gatherer;
46    private ClassfileLoader loader;
47 
48    protected void setUp() throws Exception {
49        super.setUp();
50 
51        strategy = new DefaultSymbolGathererStrategy();
52        gatherer = new SymbolGatherer(strategy);
53        loader = new AggregatingClassfileLoader();
54        loader.addLoadListener(new LoadListenerVisitorAdapter(gatherer));
55    }
56 
57    public void testEmpty() {
58        assertEquals("Different number of symbols", 0, gatherer.getCollection().size());
59    }
60    
61    public void testOnOneClass() {
62        loader.load(Collections.singleton(TEST_FILENAME));
63 
64        assertTrue("Missing test class name from " + gatherer.getCollection(), gatherer.getCollection().contains("test"));
65        assertTrue("Missing test.main() method from " + gatherer.getCollection(), gatherer.getCollection().contains("test.main(java.lang.String[])"));
66        assertTrue("Missing args parameter from " + gatherer.getCollection(), gatherer.getCollection().contains("test.main(java.lang.String[]): args"));
67        assertTrue("Missing c local variable from " + gatherer.getCollection(), gatherer.getCollection().contains("test.main(java.lang.String[]): c"));
68        assertTrue("Missing ex local variable from " + gatherer.getCollection(), gatherer.getCollection().contains("test.main(java.lang.String[]): ex"));
69        assertTrue("Missing test.test() method from " + gatherer.getCollection(), gatherer.getCollection().contains("test.test()"));
70        assertTrue("Missing this parameter from " + gatherer.getCollection(), gatherer.getCollection().contains("test.test(): this"));
71        assertEquals("Different number of symbols in " + gatherer.getCollection(), 7, gatherer.getCollection().size());
72    }
73    
74    public void testClassNamesOnly() {
75        strategy.setMatchingClassNames(true);
76        strategy.setMatchingFieldNames(false);
77        strategy.setMatchingMethodNames(false);
78        strategy.setMatchingLocalNames(false);
79        
80        loader.load(Collections.singleton(TEST_FILENAME));
81 
82        assertTrue("Missing test class name from " + gatherer.getCollection(), gatherer.getCollection().contains("test"));
83        assertEquals("Different number of symbols in " + gatherer.getCollection(), 1, gatherer.getCollection().size());
84    }
85    
86    public void testMethodNamesOnly() {
87        strategy.setMatchingClassNames(false);
88        strategy.setMatchingFieldNames(false);
89        strategy.setMatchingMethodNames(true);
90        strategy.setMatchingLocalNames(false);
91        
92        loader.load(Collections.singleton(TEST_FILENAME));
93 
94        assertTrue("Missing test.main() method from " + gatherer.getCollection(), gatherer.getCollection().contains("test.main(java.lang.String[])"));
95        assertTrue("Missing test.test() method from " + gatherer.getCollection(), gatherer.getCollection().contains("test.test()"));
96        assertEquals("Different number of symbols in " + gatherer.getCollection(), 2, gatherer.getCollection().size());
97    }
98    
99    public void testLocalNamesOnly() {
100        strategy.setMatchingClassNames(false);
101        strategy.setMatchingFieldNames(false);
102        strategy.setMatchingMethodNames(false);
103        strategy.setMatchingLocalNames(true);
104        
105        loader.load(Collections.singleton(TEST_FILENAME));
106 
107        assertTrue("Missing args parameter from " + gatherer.getCollection(), gatherer.getCollection().contains("test.main(java.lang.String[]): args"));
108        assertTrue("Missing c local variable from " + gatherer.getCollection(), gatherer.getCollection().contains("test.main(java.lang.String[]): c"));
109        assertTrue("Missing ex local variable from " + gatherer.getCollection(), gatherer.getCollection().contains("test.main(java.lang.String[]): ex"));
110        assertTrue("Missing this parameter from " + gatherer.getCollection(), gatherer.getCollection().contains("test.test(): this"));
111        assertEquals("Different number of symbols in " + gatherer.getCollection(), 4, gatherer.getCollection().size());
112    }
113}

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