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

COVERAGE SUMMARY FOR SOURCE FILE [TestEnum.java]

nameclass, %method, %block, %line, %
TestEnum.java100% (1/1)100% (6/6)99%  (183/185)100% (29.9/30)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class TestEnum100% (1/1)100% (6/6)99%  (183/185)100% (29.9/30)
testFieldIsEnum (): void 100% (1/1)95%  (21/22)99%  (4/4)
testClassfileIsEnum (): void 100% (1/1)97%  (32/33)99%  (5/5)
<static initializer> 100% (1/1)100% (53/53)100% (4/4)
TestEnum (): void 100% (1/1)100% (3/3)100% (1/1)
setUp (): void 100% (1/1)100% (28/28)100% (7/7)
testInnerClassIsEnum (): void 100% (1/1)100% (46/46)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.classreader;
34 
35import java.io.*;
36import java.util.*;
37 
38import junit.framework.*;
39 
40public class TestEnum extends TestCase {
41    public static final String TEST_CLASS = "test";
42    public static final String TEST_ENUM_CLASS = "testenum";
43    public static final String TEST_ENUM_VALUE1_CLASS = "testenum$1";
44    public static final String TEST_ENUM_VALUE2_CLASS = "testenum$2";
45    public static final String TEST_FILENAME = "classes" + File.separator + TEST_CLASS + ".class";
46    public static final String TEST_ENUM_FILENAME = "classes" + File.separator + TEST_ENUM_CLASS + ".class";
47    public static final String TEST_ENUM_VALUE1_FILENAME = "classes" + File.separator + TEST_ENUM_VALUE1_CLASS + ".class";
48    public static final String TEST_ENUM_VALUE2_FILENAME = "classes" + File.separator + TEST_ENUM_VALUE2_CLASS + ".class";
49 
50    private ClassfileLoader loader;
51 
52    protected void setUp() throws Exception {
53        super.setUp();
54 
55        loader   = new AggregatingClassfileLoader();
56 
57        loader.load(Collections.singleton(TEST_FILENAME));
58        loader.load(Collections.singleton(TEST_ENUM_FILENAME));
59        loader.load(Collections.singleton(TEST_ENUM_VALUE1_FILENAME));
60        loader.load(Collections.singleton(TEST_ENUM_VALUE2_FILENAME));
61    }
62 
63    public void testClassfileIsEnum() {
64        assertTrue(TEST_CLASS, !loader.getClassfile(TEST_CLASS).isEnum());
65        assertTrue(TEST_ENUM_CLASS, loader.getClassfile(TEST_ENUM_CLASS).isEnum());
66        assertTrue("testenum.VALUE1", loader.getClassfile(TEST_ENUM_VALUE1_CLASS).isEnum());
67        assertTrue("testenum.VALUE2", loader.getClassfile(TEST_ENUM_VALUE2_CLASS).isEnum());
68    }
69 
70    public void testFieldIsEnum() {
71        Classfile testenum = loader.getClassfile(TEST_ENUM_CLASS);
72 
73        assertTrue(TEST_ENUM_CLASS + ".$VALUES", !testenum.getField("$VALUES").isEnum());
74        assertTrue(TEST_ENUM_CLASS + ".VALUE1", testenum.getField("VALUE1").isEnum());
75    }
76 
77    public void testInnerClassIsEnum() {
78        Classfile testenum = loader.getClassfile(TEST_ENUM_CLASS);
79 
80        boolean found = false;
81        for (Attribute_info attribute : testenum.getAttributes()) {
82            if (attribute instanceof InnerClasses_attribute) {
83                found = true;
84                for (InnerClass innerClass : ((InnerClasses_attribute) attribute).getInnerClasses()) {
85                    assertTrue(innerClass.getInnerClassInfo(), innerClass.isEnum());
86                }
87            }
88        }
89 
90        assertTrue("Did not find any InnerClass structures in " + TEST_ENUM_CLASS, found);
91    }
92}

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