1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.mybatis.generator.api.dom.java;
17
18 import static org.junit.Assert.assertEquals;
19 import static org.junit.Assert.assertFalse;
20 import static org.junit.Assert.assertTrue;
21
22 import java.util.Set;
23 import java.util.TreeSet;
24
25 import org.junit.Test;
26 import org.mybatis.generator.api.dom.OutputUtilities;
27 import org.mybatis.generator.api.dom.java.FullyQualifiedJavaType;
28
29
30
31
32
33 public class FullyQualifiedJavaTypeTest {
34
35 @Test
36 public void testJavaType() {
37 FullyQualifiedJavaType fqjt =
38 new FullyQualifiedJavaType("java.lang.String");
39 assertFalse(fqjt.isExplicitlyImported());
40 assertEquals("String", fqjt.getShortName());
41 assertEquals("java.lang.String", fqjt.getFullyQualifiedName());
42 assertEquals("java.lang", fqjt.getPackageName());
43 assertEquals(0, fqjt.getImportList().size());
44 }
45
46 @Test
47 public void testSimpleType() {
48 FullyQualifiedJavaType fqjt =
49 new FullyQualifiedJavaType("com.foo.Bar");
50 assertTrue(fqjt.isExplicitlyImported());
51 assertEquals("Bar", fqjt.getShortName());
52 assertEquals("com.foo.Bar", fqjt.getFullyQualifiedName());
53 assertEquals("com.foo", fqjt.getPackageName());
54 assertEquals(1, fqjt.getImportList().size());
55 assertEquals("com.foo.Bar", fqjt.getImportList().get(0));
56 }
57
58 @Test
59 public void testSimpleType2() {
60 FullyQualifiedJavaType fqjt =
61 new FullyQualifiedJavaType("com.foo.bar");
62 assertTrue(fqjt.isExplicitlyImported());
63 assertEquals("bar", fqjt.getShortName());
64 assertEquals("com.foo.bar", fqjt.getFullyQualifiedName());
65 assertEquals("com.foo", fqjt.getPackageName());
66 assertEquals(1, fqjt.getImportList().size());
67 assertEquals("com.foo.bar", fqjt.getImportList().get(0));
68 }
69
70 @Test
71 public void testSimpleType3() {
72 FullyQualifiedJavaType fqjt =
73 new FullyQualifiedJavaType("int");
74 assertFalse(fqjt.isExplicitlyImported());
75 assertEquals("int", fqjt.getShortName());
76 assertEquals("int", fqjt.getFullyQualifiedName());
77 assertEquals("", fqjt.getPackageName());
78 assertEquals(0, fqjt.getImportList().size());
79 }
80
81 @Test
82 public void testGenericType1() {
83 FullyQualifiedJavaType fqjt =
84 new FullyQualifiedJavaType("java.util.List<java.lang.String>");
85 assertTrue(fqjt.isExplicitlyImported());
86 assertEquals("List<String>", fqjt.getShortName());
87 assertEquals("java.util.List<java.lang.String>", fqjt.getFullyQualifiedName());
88 assertEquals("java.util", fqjt.getPackageName());
89 assertEquals(1, fqjt.getImportList().size());
90 assertEquals("java.util.List", fqjt.getImportList().get(0));
91 assertEquals("java.util.List", fqjt.getFullyQualifiedNameWithoutTypeParameters());
92 }
93
94
95 @Test
96 public void testGenericType2() {
97 FullyQualifiedJavaType fqjt =
98 new FullyQualifiedJavaType("java.util.Map<java.lang.String, java.util.List<java.lang.String>>");
99 assertTrue(fqjt.isExplicitlyImported());
100 assertEquals("Map<String, List<String>>", fqjt.getShortName());
101 assertEquals("java.util.Map<java.lang.String, java.util.List<java.lang.String>>", fqjt.getFullyQualifiedName());
102 assertEquals("java.util", fqjt.getPackageName());
103 assertEquals(2, fqjt.getImportList().size());
104 assertEquals("java.util.Map", fqjt.getFullyQualifiedNameWithoutTypeParameters());
105 }
106
107
108 @Test
109 public void testGenericType3() {
110 FullyQualifiedJavaType listOfStrings = new FullyQualifiedJavaType("java.util.List");
111 listOfStrings.addTypeArgument(new FullyQualifiedJavaType("java.lang.String"));
112
113 FullyQualifiedJavaType fqjt =
114 new FullyQualifiedJavaType("java.util.Map");
115 fqjt.addTypeArgument(new FullyQualifiedJavaType("java.lang.String"));
116 fqjt.addTypeArgument(listOfStrings);
117
118 assertTrue(fqjt.isExplicitlyImported());
119 assertEquals("Map<String, List<String>>", fqjt.getShortName());
120 assertEquals("java.util.Map<java.lang.String, java.util.List<java.lang.String>>", fqjt.getFullyQualifiedName());
121 assertEquals("java.util", fqjt.getPackageName());
122 assertEquals(2, fqjt.getImportList().size());
123 assertEquals("java.util.Map", fqjt.getFullyQualifiedNameWithoutTypeParameters());
124 }
125
126 @Test
127 public void testGenericType4() {
128 FullyQualifiedJavaType fqjt =
129 new FullyQualifiedJavaType("java.util.List<java.util.Map<java.lang.String, java.lang.Object>>");
130 assertTrue(fqjt.isExplicitlyImported());
131 assertEquals("List<Map<String, Object>>", fqjt.getShortName());
132 assertEquals("java.util.List<java.util.Map<java.lang.String, java.lang.Object>>", fqjt.getFullyQualifiedName());
133 assertEquals("java.util", fqjt.getPackageName());
134 assertEquals(2, fqjt.getImportList().size());
135 assertEquals("java.util.List", fqjt.getFullyQualifiedNameWithoutTypeParameters());
136 }
137
138 @Test
139 public void testWildcardType1() {
140 FullyQualifiedJavaType fqjt =
141 new FullyQualifiedJavaType("java.util.Map<java.lang.String, ? extends com.foo.Bar>");
142 assertTrue(fqjt.isExplicitlyImported());
143 assertEquals("Map<String, ? extends Bar>", fqjt.getShortName());
144 assertEquals("java.util.Map<java.lang.String, ? extends com.foo.Bar>", fqjt.getFullyQualifiedName());
145 assertEquals("java.util", fqjt.getPackageName());
146 assertEquals(2, fqjt.getImportList().size());
147 assertEquals("java.util.Map", fqjt.getFullyQualifiedNameWithoutTypeParameters());
148 }
149
150 @Test
151 public void testWildcardType2() {
152 FullyQualifiedJavaType fqjt =
153 new FullyQualifiedJavaType("java.util.Map<java.lang.String, ?>");
154 assertTrue(fqjt.isExplicitlyImported());
155 assertEquals("Map<String, ?>", fqjt.getShortName());
156 assertEquals("java.util.Map<java.lang.String, ?>", fqjt.getFullyQualifiedName());
157 assertEquals("java.util", fqjt.getPackageName());
158 assertEquals(1, fqjt.getImportList().size());
159 assertEquals("java.util.Map", fqjt.getImportList().get(0));
160 assertEquals("java.util.Map", fqjt.getFullyQualifiedNameWithoutTypeParameters());
161 }
162
163 @Test
164 public void testWildcardType3() {
165 FullyQualifiedJavaType fqjt =
166 new FullyQualifiedJavaType("java.util.Map<? extends java.util.List<?>, ?>");
167 assertTrue(fqjt.isExplicitlyImported());
168 assertEquals("Map<? extends List<?>, ?>", fqjt.getShortName());
169 assertEquals("java.util.Map<? extends java.util.List<?>, ?>", fqjt.getFullyQualifiedName());
170 assertEquals("java.util", fqjt.getPackageName());
171 assertEquals(2, fqjt.getImportList().size());
172 assertEquals("java.util.Map", fqjt.getFullyQualifiedNameWithoutTypeParameters());
173 }
174
175 @Test
176 public void testWildcardType4() {
177 FullyQualifiedJavaType fqjt =
178 new FullyQualifiedJavaType("java.util.Map<?, ?>");
179 assertTrue(fqjt.isExplicitlyImported());
180 assertEquals("Map<?, ?>", fqjt.getShortName());
181 assertEquals("java.util.Map<?, ?>", fqjt.getFullyQualifiedName());
182 assertEquals("java.util", fqjt.getPackageName());
183 assertEquals(1, fqjt.getImportList().size());
184 assertEquals("java.util.Map", fqjt.getImportList().get(0));
185 assertEquals("java.util.Map", fqjt.getFullyQualifiedNameWithoutTypeParameters());
186 }
187
188 @Test
189 public void testWildcardType5() {
190 FullyQualifiedJavaType fqjt =
191 new FullyQualifiedJavaType("java.util.List<? extends java.util.Map<? super java.lang.Object, ?>>");
192 assertTrue(fqjt.isExplicitlyImported());
193 assertEquals("List<? extends Map<? super Object, ?>>", fqjt.getShortName());
194 assertEquals("java.util.List<? extends java.util.Map<? super java.lang.Object, ?>>", fqjt.getFullyQualifiedName());
195 assertEquals("java.util", fqjt.getPackageName());
196 assertEquals(2, fqjt.getImportList().size());
197 assertEquals("java.util.List", fqjt.getFullyQualifiedNameWithoutTypeParameters());
198 }
199
200 @Test
201 public void testUppercasePackage1() {
202 FullyQualifiedJavaType fqjt = new FullyQualifiedJavaType("org.foo.Bar.Inner");
203 assertTrue(fqjt.isExplicitlyImported());
204 assertEquals("Inner", fqjt.getShortName());
205 assertEquals("org.foo.Bar.Inner", fqjt.getFullyQualifiedName());
206 assertEquals("org.foo.Bar", fqjt.getPackageName());
207 assertEquals(1, fqjt.getImportList().size());
208 assertEquals("org.foo.Bar.Inner", fqjt.getImportList().get(0));
209 }
210
211 @Test
212 public void testUppercasePackage2() {
213 FullyQualifiedJavaType fqjt = new FullyQualifiedJavaType("org.foo.Bar.Inner.Inner");
214 assertTrue(fqjt.isExplicitlyImported());
215 assertEquals("Inner", fqjt.getShortName());
216 assertEquals("org.foo.Bar.Inner.Inner", fqjt.getFullyQualifiedName());
217 assertEquals("org.foo.Bar.Inner", fqjt.getPackageName());
218 assertEquals(1, fqjt.getImportList().size());
219 assertEquals("org.foo.Bar.Inner.Inner", fqjt.getImportList().get(0));
220 }
221
222 @Test
223 public void testUppercasePackage3() {
224 FullyQualifiedJavaType fqjt = new FullyQualifiedJavaType("java.util.List<org.foo.Bar.Inner>");
225 assertTrue(fqjt.isExplicitlyImported());
226 assertEquals("List<Inner>", fqjt.getShortName());
227 assertEquals("java.util.List<org.foo.Bar.Inner>", fqjt.getFullyQualifiedName());
228 assertEquals("java.util", fqjt.getPackageName());
229 assertEquals(2, fqjt.getImportList().size());
230 assertTrue(fqjt.getImportList().contains("java.util.List"));
231 assertTrue(fqjt.getImportList().contains("org.foo.Bar.Inner"));
232 }
233
234 @Test
235 public void testImportList() {
236 Set<FullyQualifiedJavaType> types = new TreeSet<FullyQualifiedJavaType>();
237
238 types.add(new FullyQualifiedJavaType("foo.bar.Example"));
239 types.add(new FullyQualifiedJavaType("foo.bar.Example.Criteria"));
240 types.add(new FullyQualifiedJavaType("foo.bar.Example.Criterion"));
241 assertEquals(3, types.size());
242
243 Set<String> imports = OutputUtilities.calculateImports(types);
244 assertEquals(3, imports.size());
245 }
246
247 @Test
248 public void testByteArray1() {
249 FullyQualifiedJavaType fqjt = new FullyQualifiedJavaType("byte[]");
250 assertFalse(fqjt.isPrimitive());
251 assertTrue(fqjt.isArray());
252 }
253
254 @Test
255 public void testByteArray2() {
256 FullyQualifiedJavaType fqjt = new FullyQualifiedJavaType("byte[ ]");
257 assertFalse(fqjt.isPrimitive());
258 assertTrue(fqjt.isArray());
259 }
260
261 @Test
262 public void testStringArray() {
263 FullyQualifiedJavaType fqjt = new FullyQualifiedJavaType("java.lang.String[]");
264 assertFalse(fqjt.isPrimitive());
265 assertTrue(fqjt.isArray());
266 }
267
268 @Test
269 public void testComplexArray() {
270 FullyQualifiedJavaType fqjt = new FullyQualifiedJavaType("java.util.List<String>[]");
271 assertFalse(fqjt.isPrimitive());
272 assertTrue(fqjt.isArray());
273 }
274 }