@@ -28,14 +28,14 @@ final class WideningCategoriesTest extends GenericsTestCase {
28
28
29
29
void testBuildCommonTypeWithNullClassNode () {
30
30
ClassNode a = null
31
- ClassNode b = make( Serializable )
31
+ ClassNode b = SERIALIZABLE_TYPE
32
32
assert lowestUpperBound(a,b) == null
33
33
assert lowestUpperBound(b,a) == null
34
34
}
35
35
36
36
void testBuildCommonTypeWithObjectClassNode () {
37
37
ClassNode a = OBJECT_TYPE
38
- ClassNode b = make( Serializable )
38
+ ClassNode b = SERIALIZABLE_TYPE
39
39
assert lowestUpperBound(a,b) == OBJECT_TYPE
40
40
assert lowestUpperBound(b,a) == OBJECT_TYPE
41
41
}
@@ -49,40 +49,40 @@ final class WideningCategoriesTest extends GenericsTestCase {
49
49
50
50
void testBuildCommonTypeWithVoidClassNodeAndAnyNode () {
51
51
ClassNode a = VOID_TYPE
52
- ClassNode b = make( Set )
52
+ ClassNode b = SET_TYPE
53
53
assert lowestUpperBound(a,b) == OBJECT_TYPE
54
54
assert lowestUpperBound(b,a) == OBJECT_TYPE
55
55
}
56
56
57
57
void testBuildCommonTypeWithIdenticalInterfaces () {
58
- ClassNode a = make( Serializable )
59
- ClassNode b = make( Serializable )
60
- assert lowestUpperBound(a,b) == make( Serializable )
58
+ ClassNode a = SERIALIZABLE_TYPE
59
+ ClassNode b = SERIALIZABLE_TYPE
60
+ assert lowestUpperBound(a,b) == SERIALIZABLE_TYPE
61
61
}
62
62
63
63
void testBuildCommonTypeWithOneInterfaceInheritsFromOther () {
64
- ClassNode a = make( Set )
64
+ ClassNode a = SET_TYPE
65
65
ClassNode b = make(SortedSet )
66
- assert lowestUpperBound(a,b) == make( Set )
67
- assert lowestUpperBound(b,a) == make( Set )
66
+ assert lowestUpperBound(a,b) == SET_TYPE
67
+ assert lowestUpperBound(b,a) == SET_TYPE
68
68
}
69
69
70
70
void testBuildCommonTypeWithTwoIncompatibleInterfaces () {
71
- ClassNode a = make( Set )
72
- ClassNode b = make( Map )
71
+ ClassNode a = SET_TYPE
72
+ ClassNode b = MAP_TYPE
73
73
assert lowestUpperBound(a,b) == OBJECT_TYPE
74
74
assert lowestUpperBound(b,a) == OBJECT_TYPE
75
75
}
76
76
77
77
void testBuildCommonTypeWithOneClassAndOneImplementedInterface () {
78
- ClassNode a = make( Set )
78
+ ClassNode a = SET_TYPE
79
79
ClassNode b = make(HashSet )
80
- assert lowestUpperBound(a,b) == make( Set )
81
- assert lowestUpperBound(b,a) == make( Set )
80
+ assert lowestUpperBound(a,b) == SET_TYPE
81
+ assert lowestUpperBound(b,a) == SET_TYPE
82
82
}
83
83
84
84
void testBuildCommonTypeWithOneClassAndNoImplementedInterface () {
85
- ClassNode a = make( Map )
85
+ ClassNode a = MAP_TYPE
86
86
ClassNode b = make(HashSet )
87
87
assert lowestUpperBound(a,b) == OBJECT_TYPE
88
88
assert lowestUpperBound(b,a) == OBJECT_TYPE
@@ -91,8 +91,8 @@ final class WideningCategoriesTest extends GenericsTestCase {
91
91
void testBuildCommonTypeWithTwoClassesWithoutSuperClass () {
92
92
ClassNode a = make(ClassA )
93
93
ClassNode b = make(ClassB )
94
- assert lowestUpperBound(a,b) == make( GroovyObject ) // GroovyObject because Groovy classes implicitly implement GroovyObject
95
- assert lowestUpperBound(b,a) == make( GroovyObject )
94
+ assert lowestUpperBound(a,b) == GROOVY_OBJECT_TYPE // GroovyObject because Groovy classes implicitly implement GroovyObject
95
+ assert lowestUpperBound(b,a) == GROOVY_OBJECT_TYPE
96
96
}
97
97
98
98
void testBuildCommonTypeWithIdenticalPrimitiveTypes () {
@@ -151,15 +151,15 @@ final class WideningCategoriesTest extends GenericsTestCase {
151
151
void testBuildCommonTypeFromTwoClassesInDifferentBranches () {
152
152
ClassNode a = make(ClassA1 )
153
153
ClassNode b = make(ClassB1 )
154
- assert lowestUpperBound(a,b) == make( GroovyObject )
155
- assert lowestUpperBound(b,a) == make( GroovyObject )
154
+ assert lowestUpperBound(a,b) == GROOVY_OBJECT_TYPE
155
+ assert lowestUpperBound(b,a) == GROOVY_OBJECT_TYPE
156
156
}
157
157
158
158
void testBuildCommonTypeFromTwoClassesInDifferentBranchesAndOneCommonInterface () {
159
159
ClassNode a = make(ClassA1_Serializable )
160
160
ClassNode b = make(ClassB1_Serializable )
161
- assert lowestUpperBound(a,b). interfaces as Set == [make( Serializable ), make( GroovyObject ) ] as Set
162
- assert lowestUpperBound(b,a). interfaces as Set == [make( Serializable ), make( GroovyObject ) ] as Set
161
+ assert lowestUpperBound(a,b). interfaces as Set == [SERIALIZABLE_TYPE , GROOVY_OBJECT_TYPE ] as Set
162
+ assert lowestUpperBound(b,a). interfaces as Set == [SERIALIZABLE_TYPE , GROOVY_OBJECT_TYPE ] as Set
163
163
}
164
164
165
165
void testBuildCommonTypeFromTwoClassesWithCommonSuperClassAndOneCommonInterface () {
@@ -168,32 +168,32 @@ final class WideningCategoriesTest extends GenericsTestCase {
168
168
ClassNode type = lowestUpperBound(a, b)
169
169
assert type. name =~ / .*Top/
170
170
assert type. superClass == make(Top ) // includes interface GroovyObject
171
- assert type. interfaces as Set == [make( Serializable ) ] as Set // extra interface
171
+ assert type. interfaces as Set == [SERIALIZABLE_TYPE ] as Set // extra interface
172
172
type = lowestUpperBound(b, a)
173
173
assert type. name =~ / .*Top/
174
174
assert type. superClass == make(Top )
175
- assert type. interfaces as Set == [make( Serializable ) ] as Set
175
+ assert type. interfaces as Set == [SERIALIZABLE_TYPE ] as Set
176
176
}
177
177
178
178
// GROOVY-8111
179
179
void testBuildCommonTypeFromTwoClassesWithTwoCommonInterfacesOneIsSelfReferential () {
180
180
ClassNode a = boolean_TYPE
181
- ClassNode b = extractTypesFromCode(" ${ getClass().getName() } .Pair<String,String> type" ). type
181
+ ClassNode b = extractTypesFromCode(" ${ this.class.name } .Pair<String,String> type" ). type
182
182
ClassNode lub = lowestUpperBound(a, b)
183
183
184
184
assert lub. superClass == OBJECT_TYPE
185
- assert lub. interfaces as Set == [make( Comparable ), make( Serializable ) ] as Set
185
+ assert lub. interfaces as Set == [COMPARABLE_TYPE , SERIALIZABLE_TYPE ] as Set
186
186
187
187
lub = lowestUpperBound(b, a)
188
188
assert lub. superClass == OBJECT_TYPE
189
- assert lub. interfaces as Set == [make( Comparable ), make( Serializable ) ] as Set
189
+ assert lub. interfaces as Set == [COMPARABLE_TYPE , SERIALIZABLE_TYPE ] as Set
190
190
}
191
191
192
192
void testStringWithGString () {
193
193
ClassNode a = make(String )
194
194
ClassNode b = make(GString )
195
195
ClassNode type = lowestUpperBound(a,b)
196
- assert type. interfaces as Set == [make(CharSequence ), make( Comparable ), make( Serializable ) ] as Set
196
+ assert type. interfaces as Set == [make(CharSequence ), COMPARABLE_TYPE , SERIALIZABLE_TYPE ] as Set
197
197
}
198
198
199
199
void testDistinctPrimitiveTypes () {
@@ -210,46 +210,46 @@ final class WideningCategoriesTest extends GenericsTestCase {
210
210
}
211
211
212
212
void testLUBWithTwoInterfacesAndSameGenericArg () {
213
- ClassNode a = extractTypesFromCode(" List<String> type" ). type
214
- ClassNode b = extractTypesFromCode(" List<String> type" ). type
213
+ ClassNode a = extractTypesFromCode(' List<String> type' ). type
214
+ ClassNode b = extractTypesFromCode(' List<String> type' ). type
215
215
ClassNode lub = lowestUpperBound(a,b)
216
- assert lub == make( List )
216
+ assert lub == LIST_TYPE
217
217
assert lub. genericsTypes. length == 1
218
218
assert lub. genericsTypes[0 ]. type == STRING_TYPE
219
219
}
220
220
221
221
void testLUBWithTwoInterfacesAndCommonSuperClassGenericArg () {
222
- ClassNode a = extractTypesFromCode(" List<Integer> type" ). type
223
- ClassNode b = extractTypesFromCode(" List<Long> type" ). type
222
+ ClassNode a = extractTypesFromCode(' List<Integer> type' ). type
223
+ ClassNode b = extractTypesFromCode(' List<Long> type' ). type
224
224
ClassNode lub = lowestUpperBound(a,b)
225
- assert lub == make( List )
225
+ assert lub == LIST_TYPE
226
226
assert lub. genericsTypes. length == 1
227
227
assert lub. genericsTypes[0 ]. wildcard
228
- assert lub. genericsTypes[0 ]. upperBounds[0 ]. superClass == Number_TYPE
229
- assert make( Comparable ) in lub. genericsTypes[0 ]. upperBounds[0 ]. interfaces
228
+ assert lub. genericsTypes[0 ]. upperBounds[0 ]. name == ' java.lang.Number '
229
+ assert COMPARABLE_TYPE in lub. genericsTypes[0 ]. upperBounds[0 ]. interfaces
230
230
}
231
231
232
232
void testLUBWithTwoInterfacesAndSingleCommonInterface () {
233
- ClassNode a = extractTypesFromCode(" List<Set> type" ). type
234
- ClassNode b = extractTypesFromCode(" List<List> type" ). type
233
+ ClassNode a = extractTypesFromCode(' List<Set> type' ). type
234
+ ClassNode b = extractTypesFromCode(' List<List> type' ). type
235
235
ClassNode lub = lowestUpperBound(a,b)
236
- assert lub == make( List )
236
+ assert lub == LIST_TYPE
237
237
assert lub. genericsTypes. length == 1
238
238
assert lub. genericsTypes[0 ]. wildcard
239
- assert lub. genericsTypes[0 ]. upperBounds[0 ] == make( Collection )
239
+ assert lub. genericsTypes[0 ]. upperBounds[0 ] == COLLECTION_TYPE
240
240
}
241
241
242
242
void testLUBWithTwoInterfacesAndNestedSingleCommonInterface () {
243
- ClassNode a = extractTypesFromCode(" Collection<List<Set>> type" ). type
244
- ClassNode b = extractTypesFromCode(" Collection<List<SortedSet>> type" ). type
243
+ ClassNode a = extractTypesFromCode(' Collection<List<Set>> type' ). type
244
+ ClassNode b = extractTypesFromCode(' Collection<List<SortedSet>> type' ). type
245
245
ClassNode lub = lowestUpperBound(a,b)
246
- assert lub == make( Collection )
246
+ assert lub == COLLECTION_TYPE
247
247
assert lub. genericsTypes. length == 1
248
248
def nestedType = lub. genericsTypes[0 ]. type
249
- assert nestedType == make( List )
250
- assert nestedType. genericsTypes. length== 1
249
+ assert nestedType == LIST_TYPE
250
+ assert nestedType. genericsTypes. length == 1
251
251
assert nestedType. genericsTypes[0 ]. wildcard
252
- assert nestedType. genericsTypes[0 ]. upperBounds[0 ] == make( Set )
252
+ assert nestedType. genericsTypes[0 ]. upperBounds[0 ] == SET_TYPE
253
253
}
254
254
255
255
void testLUBWithTwoArgumentTypesSharingOneInterfaceNotImplementedBySuperClass () {
@@ -265,7 +265,7 @@ final class WideningCategoriesTest extends GenericsTestCase {
265
265
ClassNode genericType = lub. genericsTypes[0 ]. upperBounds[0 ]
266
266
assert genericType instanceof LowestUpperBoundClassNode
267
267
assert genericType. superClass == make(Top )
268
- assert genericType. interfaces == [make( Serializable ) ]
268
+ assert genericType. interfaces == [SERIALIZABLE_TYPE ]
269
269
}
270
270
271
271
void testLUBWithTwoParameterizedTypesSharingOneInterfaceNotImplementedBySuperClass () {
@@ -276,32 +276,34 @@ final class WideningCategoriesTest extends GenericsTestCase {
276
276
ClassNode b = extractTypesFromCode(' org.codehaus.groovy.ast.tools.WideningCategoriesTest.PTopLong type' ). type
277
277
ClassNode lub = lowestUpperBound(a,b)
278
278
assert lub instanceof LowestUpperBoundClassNode // a virtual class which extends PTop<? extends Number> and implements Serializable
279
+ assert lub. interfaces == [SERIALIZABLE_TYPE ]
279
280
assert lub. unresolvedSuperClass == make(PTop )
280
281
assert lub. unresolvedSuperClass. genericsTypes. length == 1
281
282
assert lub. unresolvedSuperClass. genericsTypes[0 ]. wildcard // ? extends Number
282
- ClassNode genericType = lub. unresolvedSuperClass. genericsTypes[0 ]. upperBounds[0 ]
283
- assert genericType == Long_TYPE
283
+ ClassNode upperBound = lub. unresolvedSuperClass. genericsTypes[0 ]. upperBounds[0 ]
284
+ assert upperBound. superClass == Number_TYPE
285
+ assert upperBound. interfaces. contains(COMPARABLE_TYPE )
284
286
}
285
287
286
288
void testCommonAssignableType () {
287
289
def typeA = extractTypesFromCode(' LinkedList type' ). type
288
290
def typeB = extractTypesFromCode(' List type' ). type
289
291
def superType = lowestUpperBound(typeA, typeB)
290
- assert superType == make( List )
292
+ assert superType == LIST_TYPE
291
293
}
292
294
293
295
void testCommonAssignableType2 () {
294
296
def typeA = extractTypesFromCode(' LinkedHashSet type' ). type
295
297
def typeB = extractTypesFromCode(' List type' ). type
296
298
def superType = lowestUpperBound(typeA, typeB)
297
- assert superType == make( Collection )
299
+ assert superType == COLLECTION_TYPE
298
300
}
299
301
300
302
void testCommonAssignableTypeWithGenerics () {
301
303
def typeA = extractTypesFromCode(' LinkedHashSet<String> type' ). type
302
304
def typeB = extractTypesFromCode(' List<String> type' ). type
303
305
def superType = lowestUpperBound(typeA, typeB)
304
- assert superType == make( Collection )
306
+ assert superType == COLLECTION_TYPE
305
307
}
306
308
307
309
void testLUBOfTwoListTypes () {
@@ -310,7 +312,7 @@ final class WideningCategoriesTest extends GenericsTestCase {
310
312
def superType = lowestUpperBound(typeA, typeB)
311
313
assert superType instanceof LowestUpperBoundClassNode
312
314
assert superType. superClass == make(AbstractList )
313
- assert superType. interfaces as Set == [make( Serializable ) , make(Cloneable )] as Set
315
+ assert superType. interfaces as Set == [SERIALIZABLE_TYPE , make(Cloneable )] as Set
314
316
}
315
317
316
318
void testLUBOfTwoListTypesWithSameGenerics () {
@@ -319,7 +321,7 @@ final class WideningCategoriesTest extends GenericsTestCase {
319
321
def superType = lowestUpperBound(typeA, typeB)
320
322
assert superType instanceof LowestUpperBoundClassNode
321
323
assert superType. superClass == make(AbstractList )
322
- assert superType. interfaces as Set == [make( Serializable ) , make(Cloneable )] as Set
324
+ assert superType. interfaces as Set == [SERIALIZABLE_TYPE , make(Cloneable )] as Set
323
325
assert superType. genericsTypes. length == 1
324
326
assert superType. genericsTypes[0 ]. type == STRING_TYPE
325
327
@@ -331,23 +333,21 @@ final class WideningCategoriesTest extends GenericsTestCase {
331
333
def superType = lowestUpperBound(typeA, typeB)
332
334
assert superType instanceof LowestUpperBoundClassNode
333
335
assert superType. superClass == make(AbstractList )
334
- assert superType. interfaces as Set == [make( Serializable ) , make(Cloneable )] as Set
336
+ assert superType. interfaces as Set == [SERIALIZABLE_TYPE , make(Cloneable )] as Set
335
337
assert superType. genericsTypes. length == 1
336
338
def type = superType. genericsTypes[0 ]
337
339
assert type. wildcard
338
340
assert type. upperBounds[0 ] instanceof LowestUpperBoundClassNode
339
- [Comparable , Serializable ]. each {
340
- assert make(it) in type. upperBounds[0 ]. interfaces
341
- }
341
+ assert type. upperBounds[0 ]. interfaces. contains(COMPARABLE_TYPE )
342
+ assert type. upperBounds[0 ]. interfaces. contains(SERIALIZABLE_TYPE )
342
343
}
343
344
344
345
void testLUBOfArrayTypes () {
345
346
def typeA = extractTypesFromCode(' Number[] type' ). type
346
347
def typeB = extractTypesFromCode(' Integer[] type' ). type
347
348
def superType = lowestUpperBound(typeA, typeB)
348
349
assert superType. isArray()
349
- def component = superType. getComponentType()
350
- assert component == make(Number )
350
+ assert superType. componentType == Number_TYPE
351
351
}
352
352
353
353
// ---------- Classes and Interfaces used in this unit test ----------------
0 commit comments