@@ -3,6 +3,10 @@ package org.utbot.framework.codegen
3
3
import org.utbot.framework.DEFAULT_CONCRETE_EXECUTION_TIMEOUT_IN_CHILD_PROCESS_MS
4
4
import org.utbot.framework.codegen.model.constructor.builtin.mockitoClassId
5
5
import org.utbot.framework.codegen.model.constructor.builtin.ongoingStubbingClassId
6
+ import org.utbot.framework.codegen.model.constructor.util.argumentsClassId
7
+ import org.utbot.framework.codegen.model.tree.CgClassType
8
+ import org.utbot.framework.codegen.model.tree.TypeParameters
9
+ import org.utbot.framework.codegen.model.tree.type
6
10
import org.utbot.framework.plugin.api.*
7
11
import org.utbot.framework.plugin.api.util.*
8
12
import org.utbot.jcdb.api.ClassId
@@ -103,29 +107,33 @@ object MockitoStaticMocking : StaticsMocking(displayName = "Mockito static mocki
103
107
104
108
val mockedStaticClassId get() = builtInClass(name = " org.mockito.MockedStatic" )
105
109
106
- val mockedConstructionClassId: ClassId get() {
107
- return builtInClass(name = " org.mockito.MockedConstruction" )
108
- }
110
+ val mockedConstructionClassId: ClassId
111
+ get() {
112
+ return builtInClass(name = " org.mockito.MockedConstruction" )
113
+ }
109
114
110
- val mockStaticMethodId get() = mockitoClassId.newBuiltinStaticMethodId(
111
- name = " mockStatic" ,
112
- returnType = mockedStaticClassId,
113
- arguments = listOf (objectClassId)
114
- )
115
+ val mockStaticMethodId
116
+ get() = mockitoClassId.newBuiltinStaticMethodId(
117
+ name = " mockStatic" ,
118
+ returnType = mockedStaticClassId,
119
+ arguments = listOf (objectClassId)
120
+ )
115
121
116
- val mockConstructionMethodId get() = mockitoClassId.newBuiltinStaticMethodId(
117
- name = " mockConstruction" ,
118
- returnType = mockedConstructionClassId,
119
- // actually second argument is lambda
120
- arguments = listOf (objectClassId, objectClassId)
121
- )
122
+ val mockConstructionMethodId
123
+ get() = mockitoClassId.newBuiltinStaticMethodId(
124
+ name = " mockConstruction" ,
125
+ returnType = mockedConstructionClassId,
126
+ // actually second argument is lambda
127
+ arguments = listOf (objectClassId, objectClassId)
128
+ )
122
129
123
- val mockedStaticWhen get() = mockedStaticClassId.newBuiltinMethod(
124
- name = " when" ,
125
- returnType = ongoingStubbingClassId,
126
- // argument type is actually a functional interface
127
- arguments = listOf (objectClassId)
128
- )
130
+ val mockedStaticWhen
131
+ get() = mockedStaticClassId.newBuiltinMethod(
132
+ name = " when" ,
133
+ returnType = ongoingStubbingClassId,
134
+ // argument type is actually a functional interface
135
+ arguments = listOf (objectClassId)
136
+ )
129
137
130
138
fun mockedStaticWhen (nullable : Boolean ): MethodId = mockedStaticClassId.newBuiltinMethod(
131
139
name = " when" ,
@@ -153,7 +161,7 @@ sealed class TestFramework(
153
161
abstract val methodSourceAnnotationId: ClassId
154
162
abstract val methodSourceAnnotationFqn: String
155
163
abstract val nestedClassesShouldBeStatic: Boolean
156
- abstract val argListClassId: ClassId
164
+ abstract val argListClassId: CgClassType
157
165
158
166
val assertEquals by lazy { assertionId(" assertEquals" , objectClassId, objectClassId) }
159
167
@@ -163,7 +171,13 @@ sealed class TestFramework(
163
171
164
172
val assertArrayEquals by lazy { arrayAssertionId(" assertArrayEquals" , Array <Any >::class .id, Array <Any >::class .id) }
165
173
166
- open val assertBooleanArrayEquals by lazy { assertionId(" assertArrayEquals" , booleanArrayClassId, booleanArrayClassId) }
174
+ open val assertBooleanArrayEquals by lazy {
175
+ assertionId(
176
+ " assertArrayEquals" ,
177
+ booleanArrayClassId,
178
+ booleanArrayClassId
179
+ )
180
+ }
167
181
168
182
val assertByteArrayEquals by lazy { arrayAssertionId(" assertArrayEquals" , byteArrayClassId, byteArrayClassId) }
169
183
@@ -175,9 +189,23 @@ sealed class TestFramework(
175
189
176
190
val assertLongArrayEquals by lazy { arrayAssertionId(" assertArrayEquals" , longArrayClassId, longArrayClassId) }
177
191
178
- val assertFloatArrayEquals by lazy { arrayAssertionId(" assertArrayEquals" , floatArrayClassId, floatArrayClassId, floatClassId) }
192
+ val assertFloatArrayEquals by lazy {
193
+ arrayAssertionId(
194
+ " assertArrayEquals" ,
195
+ floatArrayClassId,
196
+ floatArrayClassId,
197
+ floatClassId
198
+ )
199
+ }
179
200
180
- val assertDoubleArrayEquals by lazy { arrayAssertionId(" assertArrayEquals" , doubleArrayClassId, doubleArrayClassId, doubleClassId) }
201
+ val assertDoubleArrayEquals by lazy {
202
+ arrayAssertionId(
203
+ " assertArrayEquals" ,
204
+ doubleArrayClassId,
205
+ doubleArrayClassId,
206
+ doubleClassId
207
+ )
208
+ }
181
209
182
210
val assertNull by lazy { assertionId(" assertNull" , objectClassId) }
183
211
@@ -228,19 +256,25 @@ object TestNg : TestFramework(displayName = "TestNG") {
228
256
229
257
override val arraysAssertionsClass: ClassId get() = builtInClass(TEST_NG_ARRAYS_ASSERTIONS )
230
258
231
- override val assertBooleanArrayEquals: MethodId get() = assertionId(" assertEquals" , booleanArrayClassId, booleanArrayClassId)
259
+ override val assertBooleanArrayEquals: MethodId
260
+ get() = assertionId(
261
+ " assertEquals" ,
262
+ booleanArrayClassId,
263
+ booleanArrayClassId
264
+ )
232
265
233
266
val throwingRunnableClassId get() = builtInClass(" ${assertionsClass.name} \$ ThrowingRunnable" )
234
267
235
- val assertThrows get() = assertionsClass.newBuiltinStaticMethodId(
236
- name = " assertThrows" ,
237
- // TODO: actually the return type is 'T extends java.lang.Throwable'
238
- returnType = java.lang.Throwable ::class .id,
239
- arguments = listOf (
240
- Class ::class .id,
241
- throwingRunnableClassId
268
+ val assertThrows
269
+ get() = assertionsClass.newBuiltinStaticMethodId(
270
+ name = " assertThrows" ,
271
+ // TODO: actually the return type is 'T extends java.lang.Throwable'
272
+ returnType = java.lang.Throwable ::class .id,
273
+ arguments = listOf (
274
+ Class ::class .id,
275
+ throwingRunnableClassId
276
+ )
242
277
)
243
- )
244
278
245
279
override val testAnnotationId: ClassId get() = builtInClass(" $mainPackage .annotations.Test" )
246
280
@@ -250,25 +284,15 @@ object TestNg : TestFramework(displayName = "TestNG") {
250
284
251
285
override val nestedClassesShouldBeStatic = true
252
286
253
- override val argListClassId: ClassId
287
+ override val argListClassId: CgClassType
254
288
get() {
255
- val outerArrayId = Array <Array <Any ?>? > ::class .id
256
- val innerArrayId = BuiltinClassId (
257
- name = objectArrayClassId.name,
258
- simpleName = objectArrayClassId.simpleName,
259
- canonicalName = objectArrayClassId.canonicalName,
260
- packageName = objectArrayClassId.packageName,
261
- elementClassId = objectClassId,
262
- typeParameters = TypeParameters (listOf (objectClassId))
263
- )
264
-
265
- return BuiltinClassId (
266
- name = outerArrayId.name,
267
- simpleName = outerArrayId.simpleName,
268
- canonicalName = outerArrayId.canonicalName,
269
- packageName = outerArrayId.packageName,
270
- elementClassId = innerArrayId,
271
- typeParameters = TypeParameters (listOf (innerArrayId))
289
+ return type<Array <Any >>(
290
+ isNullable = true ,
291
+ TypeParameters (
292
+ listOf (
293
+ type<Array <Any >>(isNullable = true , TypeParameters (listOf (type<Any >())))
294
+ )
295
+ )
272
296
)
273
297
}
274
298
@@ -345,15 +369,11 @@ object Junit4 : TestFramework("JUnit4") {
345
369
346
370
val ignoreAnnotationClassId get() = builtInClass(" $JUNIT4_PACKAGE .Ignore" )
347
371
348
- val enclosedClassId = BuiltinClassId (
349
- name = " org.junit.experimental.runners.Enclosed" ,
350
- canonicalName = " org.junit.experimental.runners.Enclosed" ,
351
- simpleName = " Enclosed"
352
- )
372
+ val enclosedClassId get() = builtInClass(" org.junit.experimental.runners.Enclosed" )
353
373
354
374
override val nestedClassesShouldBeStatic = true
355
375
356
- override val argListClassId: ClassId
376
+ override val argListClassId: CgClassType
357
377
get() = parametrizedTestsNotSupportedError
358
378
359
379
@OptIn(ExperimentalStdlibApi ::class )
@@ -384,21 +404,18 @@ object Junit5 : TestFramework("JUnit5") {
384
404
385
405
val timeoutClassId get() = builtInClass(" $JUNIT5_PACKAGE .Timeout" )
386
406
387
- val timeunitClassId get() = builtInClass(" TimeUnit" )
407
+ val timeunitClassId get() = builtInClass(" TimeUnit" )
388
408
389
409
val durationClassId get() = builtInClass(" java.time.Duration" )
390
410
391
- val ofMillis get() = durationClassId.newBuiltinStaticMethodId(
392
- name = " ofMillis" ,
393
- returnType = durationClassId,
394
- arguments = listOf (longClassId)
395
- )
411
+ val ofMillis
412
+ get() = durationClassId.newBuiltinStaticMethodId(
413
+ name = " ofMillis" ,
414
+ returnType = durationClassId,
415
+ arguments = listOf (longClassId)
416
+ )
396
417
397
- val nestedTestClassAnnotationId = BuiltinClassId (
398
- name = " $JUNIT5_PACKAGE .Nested" ,
399
- canonicalName = " $JUNIT5_PACKAGE .Nested" ,
400
- simpleName = " Nested"
401
- )
418
+ val nestedTestClassAnnotationId get() = builtInClass(" $JUNIT5_PACKAGE .Nested" , isNested = true )
402
419
403
420
override val testAnnotationId get() = builtInClass(" $JUNIT5_PACKAGE .Test" )
404
421
@@ -410,41 +427,36 @@ object Junit5 : TestFramework("JUnit5") {
410
427
411
428
override val arraysAssertionsClass get() = assertionsClass
412
429
413
- val assertThrows get() = assertionsClass.newBuiltinStaticMethodId(
414
- name = " assertThrows" ,
415
- // TODO: actually the return type is 'T extends java.lang.Throwable'
416
- returnType = java.lang.Throwable ::class .id,
417
- arguments = listOf (
418
- Class ::class .id,
419
- executableClassId
430
+ val assertThrows
431
+ get() = assertionsClass.newBuiltinStaticMethodId(
432
+ name = " assertThrows" ,
433
+ // TODO: actually the return type is 'T extends java.lang.Throwable'
434
+ returnType = java.lang.Throwable ::class .id,
435
+ arguments = listOf (
436
+ Class ::class .id,
437
+ executableClassId
438
+ )
420
439
)
421
- )
422
440
423
- val assertTimeoutPreemptively get() = assertionsClass.newBuiltinStaticMethodId(
424
- name = " assertTimeoutPreemptively" ,
425
- returnType = voidWrapperClassId,
426
- arguments = listOf (
427
- durationClassId,
428
- executableClassId
441
+ val assertTimeoutPreemptively
442
+ get() = assertionsClass.newBuiltinStaticMethodId(
443
+ name = " assertTimeoutPreemptively" ,
444
+ returnType = voidWrapperClassId,
445
+ arguments = listOf (
446
+ durationClassId,
447
+ executableClassId
448
+ )
429
449
)
430
- )
431
450
432
451
val displayNameClassId get() = builtInClass(" $JUNIT5_PACKAGE .DisplayName" )
433
452
434
453
val disabledAnnotationClassId get() = builtInClass(" $JUNIT5_PACKAGE .Disabled" )
435
454
436
455
override val nestedClassesShouldBeStatic = false
437
456
438
- override val argListClassId: ClassId
457
+ override val argListClassId: CgClassType
439
458
get() {
440
- val arrayListId = java.util.ArrayList ::class .id
441
- return BuiltinClassId (
442
- name = arrayListId.name,
443
- simpleName = arrayListId.simpleName,
444
- canonicalName = arrayListId.canonicalName,
445
- packageName = arrayListId.packageName,
446
- typeParameters = TypeParameters (listOf (argumentsClassId))
447
- )
459
+ return type< java.util.ArrayList <Any >>(parameters = TypeParameters (listOf (argumentsClassId.type(true ))))
448
460
}
449
461
450
462
private const val junitVersion = " 1.9.0" // TODO read it from gradle.properties
0 commit comments