1 /* ====================================================================
2 * The Apache Software License, Version 1.1
3 *
4 * Copyright (c) 2000 The Apache Software Foundation. All rights
5 * reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 *
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 *
14 * 2. Redistributions in binary form must reproduce the above copyright
15 * notice, this list of conditions and the following disclaimer in
16 * the documentation and/or other materials provided with the
17 * distribution.
18 *
19 * 3. The end-user documentation included with the redistribution,
20 * if any, must include the following acknowledgment:
21 * "This product includes software developed by the
22 * Apache Software Foundation (http://www.apache.org/)."
23 * Alternately, this acknowledgment may appear in the software itself,
24 * if and wherever such third-party acknowledgments normally appear.
25 *
26 * 4. The names "Apache" and "Apache Software Foundation" must
27 * not be used to endorse or promote products derived from this
28 * software without prior written permission. For written
29 * permission, please contact apache@apache.org.
30 *
31 * 5. Products derived from this software may not be called "Apache",
32 * nor may "Apache" appear in their name, without prior written
33 * permission of the Apache Software Foundation.
34 *
35 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
36 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
37 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
38 * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
39 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
40 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
41 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
42 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
43 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
44 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
45 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
46 * SUCH DAMAGE.
47 * ====================================================================
48 *
49 * This software consists of voluntary contributions made by many
50 * individuals on behalf of the Apache Software Foundation. For more
51 * information on the Apache Software Foundation, please see
52 * <http://www.apache.org/>.
53 *
54 * Portions of this software are based upon public domain software
55 * originally written at the National Center for Supercomputing Applications,
56 * University of Illinois, Urbana-Champaign.
57 */
58
59 package net.sourceforge.jane.lang.jjtree;
60
61 import junit.framework.TestCase;
62 import net.sourceforge.jane.ClassLoaderArtifactLocator;
63 import net.sourceforge.jane.Jane;
64 import net.sourceforge.jane.lang.ClassInfo;
65 import net.sourceforge.jane.jjtree.JavaCompilationUnit;
66 import net.sourceforge.jane.jjtree.JavaImportDeclaration;
67 import net.sourceforge.jane.jjtree.JJTreeParsingTestCase;
68 import net.sourceforge.jane.jjtree.JJTreeUtils;
69 import net.sourceforge.jane.jjtree.ChildNodeEnumeration;
70
71 /***
72 * Test {@link JJTreeLazyClassInfo}.
73 */
74 public class JJTreeLazyClassInfoTest extends TestCase
75 {
76
77 private ChildNodeEnumeration imports;
78 private Jane jane;
79
80 /***
81 * Test class resolution with fully qualified class name.
82 */
83 public void testResolveWithFullClassName()
84 {
85 ClassInfo classInfo = new JJTreeLazyClassInfo(jane,
86 "foo.bar",
87 "java.text.DateFormat",
88 imports);
89 assertClassInfo("DateFormat", "java.text", classInfo);
90 }
91
92 /***
93 * Test class resolution with an explicit import.
94 */
95 public void testResolveWithExplicitImport()
96 {
97 ClassInfo classInfo = new JJTreeLazyClassInfo(jane,
98 "foo.bar",
99 "Serializable",
100 imports);
101 assertClassInfo("Serializable", "java.io", classInfo);
102 }
103
104 /***
105 * Test class resolution with an implicit import.
106 */
107 public void testResolveWithImplicitImport()
108 {
109 ClassInfo classInfo = new JJTreeLazyClassInfo(jane,
110 "foo.bar",
111 "Vector",
112 imports);
113 assertClassInfo("Vector", "java.util", classInfo);
114 }
115
116 /***
117 * Test class resolution with an implicit <code>java.lang</code> import.
118 */
119 public void testResolveWithJavaLangImport()
120 {
121 ClassInfo classInfo = new JJTreeLazyClassInfo(jane,
122 "foo.bar",
123 "System",
124 imports);
125 assertClassInfo("System", "java.lang", classInfo);
126 }
127
128 /***
129 * Test class resolution with an implicit package import.
130 */
131 public void testResolveWithPackageImport()
132 {
133 ClassInfo classInfo = new JJTreeLazyClassInfo(jane,
134 "net.sourceforge.jane.test",
135 "Customer",
136 imports);
137 assertClassInfo("Customer", "net.sourceforge.jane.test", classInfo);
138 }
139
140 /***
141 * Set up.
142 */
143 protected void setUp() throws Exception
144 {
145 JavaCompilationUnit compUnit = JJTreeParsingTestCase.parseCustomer();
146 imports = JJTreeUtils.childNodes(compUnit, JavaImportDeclaration.class);
147 jane = new Jane();
148 jane.addArtifactLocator(ClassLoaderArtifactLocator.getSystemInstance());
149 super.setUp();
150 }
151
152 /***
153 * Assert the given class info.
154 */
155 static private void assertClassInfo(String name, String pkg, ClassInfo actual)
156 {
157 assertEquals("name", name, actual.getName());
158 assertEquals("package", pkg, actual.getPackageName());
159 }
160
161 }
162
This page was automatically generated by Maven