1
2
3
4 package net.sourceforge.pmd.symboltable;
5
6 import static org.junit.Assert.assertEquals;
7 import net.sourceforge.pmd.PMD;
8 import net.sourceforge.pmd.lang.java.symboltable.TypeSet;
9
10 import org.junit.Test;
11
12 import java.io.File;
13 import java.util.HashSet;
14 import java.util.Set;
15
16 public class TypeSetTest {
17
18 @Test
19 public void testASTCompilationUnitPackage() {
20 TypeSet t = new TypeSet();
21 t.setASTCompilationUnitPackage("java.lang.");
22 assertEquals("java.lang.", t.getASTCompilationUnitPackage());
23 }
24
25 @Test
26 public void testAddImport() {
27 TypeSet t = new TypeSet();
28 t.addImport("java.io.File");
29 assertEquals(1, t.getImportsCount());
30 }
31
32 @Test
33 public void testFindClassImplicitImport() throws Throwable {
34 TypeSet t = new TypeSet();
35 Class clazz = t.findClass("String");
36 assertEquals(String.class, clazz);
37 }
38
39 @Test
40 public void testFindClassSamePackage() throws Throwable {
41 TypeSet t = new TypeSet();
42 t.setASTCompilationUnitPackage("net.sourceforge.pmd.");
43 Class clazz = t.findClass("PMD");
44 assertEquals(PMD.class, clazz);
45 }
46
47 @Test
48 public void testFindClassExplicitImport() throws Throwable {
49 TypeSet t = new TypeSet();
50 t.addImport("java.io.File");
51 Class clazz = t.findClass("File");
52 assertEquals(File.class, clazz);
53 }
54
55 @Test
56 public void testFindClassImportOnDemand() throws Throwable {
57 TypeSet t = new TypeSet();
58 t.addImport("java.io.*");
59 Class clazz = t.findClass("File");
60 assertEquals(File.class, clazz);
61 }
62
63 @Test
64 public void testFindClassPrimitive() throws Throwable {
65 TypeSet t = new TypeSet();
66 assertEquals(int.class, t.findClass("int"));
67 }
68
69 @Test
70 public void testFindClassVoid() throws Throwable {
71 TypeSet t = new TypeSet();
72 assertEquals(void.class, t.findClass("void"));
73 }
74
75 @Test
76 public void testFindFullyQualified() throws Throwable {
77 TypeSet t = new TypeSet();
78 assertEquals(String.class, t.findClass("java.lang.String"));
79 assertEquals(Set.class, t.findClass("java.util.Set"));
80 }
81
82
83 @Test
84 public void testPrimitiveTypeResolver() throws Throwable {
85 TypeSet.Resolver r = new TypeSet.PrimitiveTypeResolver();
86 assertEquals(int.class, r.resolve("int"));
87 assertEquals(byte.class, r.resolve("byte"));
88 assertEquals(long.class, r.resolve("long"));
89 }
90
91 @Test
92 public void testVoidTypeResolver() throws Throwable {
93 TypeSet.Resolver r = new TypeSet.VoidResolver();
94 assertEquals(void.class, r.resolve("void"));
95 }
96
97 @Test
98 public void testExplicitImportResolver() throws Throwable {
99 Set<String> imports = new HashSet<String>();
100 imports.add("java.io.File");
101 TypeSet.Resolver r = new TypeSet.ExplicitImportResolver(imports);
102 assertEquals(File.class, r.resolve("File"));
103 }
104
105 @Test
106 public void testImplicitImportResolverPass() throws Throwable {
107 TypeSet.Resolver r = new TypeSet.ImplicitImportResolver();
108 assertEquals(String.class, r.resolve("String"));
109 }
110
111 @Test(expected=ClassNotFoundException.class)
112 public void testImplicitImportResolverPassFail() throws Throwable {
113 TypeSet.Resolver r = new TypeSet.ImplicitImportResolver();
114 r.resolve("PMD");
115 }
116
117 @Test
118 public void testCurrentPackageResolverPass() throws Throwable {
119 TypeSet.Resolver r = new TypeSet.CurrentPackageResolver("net.sourceforge.pmd.");
120 assertEquals(PMD.class, r.resolve("PMD"));
121 }
122
123 @Test
124 public void testImportOnDemandResolverPass() throws Throwable {
125 TypeSet.Resolver r = getResolver();
126 assertEquals(Set.class, r.resolve("Set"));
127 assertEquals(File.class, r.resolve("File"));
128 }
129
130 @Test(expected = ClassNotFoundException.class)
131 public void importOnDemandResolverFail1() throws Throwable {
132 TypeSet.Resolver r = getResolver();
133 r.resolve("foo");
134 }
135
136 @Test(expected = ClassNotFoundException.class)
137 public void importOnDemandResolverFail2() throws Throwable {
138 TypeSet.Resolver r = getResolver();
139 r.resolve("String");
140 }
141
142 private TypeSet.Resolver getResolver() {
143 Set<String> imports = new HashSet<String>();
144 imports.add("java.io.*");
145 imports.add("java.util.*");
146 TypeSet.Resolver r = new TypeSet.ImportOnDemandResolver(imports);
147 return r;
148 }
149
150 public static junit.framework.Test suite() {
151 return new junit.framework.JUnit4TestAdapter(TypeSetTest.class);
152 }
153 }