@@ -5,7 +5,6 @@ import org.utbot.common.packageName
5
5
import org.utbot.engine.isStatic
6
6
import org.utbot.framework.assemble.assemble
7
7
import org.utbot.framework.codegen.ForceStaticMocking
8
- import org.utbot.framework.codegen.JUNIT5_PARAMETERIZED_PACKAGE
9
8
import org.utbot.framework.codegen.Junit4
10
9
import org.utbot.framework.codegen.Junit5
11
10
import org.utbot.framework.codegen.ParametrizedTestSource
@@ -26,6 +25,7 @@ import org.utbot.framework.codegen.model.constructor.util.EnvironmentFieldStateC
26
25
import org.utbot.framework.codegen.model.constructor.util.FieldStateCache
27
26
import org.utbot.framework.codegen.model.constructor.util.classCgClassId
28
27
import org.utbot.framework.codegen.model.constructor.util.needExpectedDeclaration
28
+ import org.utbot.framework.codegen.model.constructor.util.newArrayOf
29
29
import org.utbot.framework.codegen.model.constructor.util.overridesEquals
30
30
import org.utbot.framework.codegen.model.constructor.util.plus
31
31
import org.utbot.framework.codegen.model.constructor.util.typeCast
@@ -67,7 +67,6 @@ import org.utbot.framework.codegen.model.tree.CgTryCatch
67
67
import org.utbot.framework.codegen.model.tree.CgTypeCast
68
68
import org.utbot.framework.codegen.model.tree.CgValue
69
69
import org.utbot.framework.codegen.model.tree.CgVariable
70
- import org.utbot.framework.codegen.model.tree.buildForLoop
71
70
import org.utbot.framework.codegen.model.tree.buildParameterizedTestDataProviderMethod
72
71
import org.utbot.framework.codegen.model.tree.buildTestMethod
73
72
import org.utbot.framework.codegen.model.tree.convertDocToCg
@@ -121,6 +120,7 @@ import org.utbot.framework.plugin.api.UtVoidModel
121
120
import org.utbot.framework.plugin.api.onFailure
122
121
import org.utbot.framework.plugin.api.onSuccess
123
122
import org.utbot.framework.plugin.api.util.booleanClassId
123
+ import org.utbot.framework.plugin.api.util.builtinMethodId
124
124
import org.utbot.framework.plugin.api.util.doubleArrayClassId
125
125
import org.utbot.framework.plugin.api.util.doubleClassId
126
126
import org.utbot.framework.plugin.api.util.doubleWrapperClassId
@@ -1285,7 +1285,7 @@ internal class CgMethodConstructor(val context: CgContext) : CgContextOwner by c
1285
1285
if (containsFailureExecution) {
1286
1286
val expectedException = CgParameterDeclaration (
1287
1287
parameter = declareParameter(
1288
- type = throwableClassId() ,
1288
+ type = Class :: class .id ,
1289
1289
name = nameGenerator.variableName(expectedErrorVarName)
1290
1290
),
1291
1291
// exceptions are always reference type
@@ -1422,7 +1422,13 @@ internal class CgMethodConstructor(val context: CgContext) : CgContextOwner by c
1422
1422
arguments : List <CgExpression >,
1423
1423
) {
1424
1424
when (testFramework) {
1425
- Junit5 -> argsVariable[addToListMethodId](argumentsClassId[argumentsMethodId](arguments))
1425
+ Junit5 -> {
1426
+ + argsVariable[addToListMethodId](
1427
+ argumentsClassId[argumentsMethodId](
1428
+ newArrayOf(objectClassId, arguments)
1429
+ )
1430
+ )
1431
+ }
1426
1432
TestNg -> {
1427
1433
val argsArray = newVar(objectArrayClassId, " testCaseObjects" ) {
1428
1434
CgAllocateArray (Array <Any ?>::class .java.id, objectClassId, arguments.size)
@@ -1442,7 +1448,9 @@ internal class CgMethodConstructor(val context: CgContext) : CgContextOwner by c
1442
1448
*/
1443
1449
private fun setArgumentsArrayElement (array : CgVariable , index : Int , value : CgExpression ) {
1444
1450
when (array.type) {
1445
- objectClassId -> java.lang.reflect.Array ::class .id[setArrayElement](array, index, value)
1451
+ objectClassId -> {
1452
+ + java.lang.reflect.Array ::class .id[setArrayElement](array, index, value)
1453
+ }
1446
1454
else -> array.at(index) `= ` value
1447
1455
}
1448
1456
}
@@ -1470,13 +1478,13 @@ internal class CgMethodConstructor(val context: CgContext) : CgContextOwner by c
1470
1478
val argListName = " argList"
1471
1479
return when (testFramework) {
1472
1480
Junit5 ->
1473
- newVar(argListClassId() , argListName) {
1474
- val constructor = ConstructorId (argListClassId() , emptyList())
1481
+ newVar(argListClassId, argListName) {
1482
+ val constructor = ConstructorId (argListClassId, emptyList())
1475
1483
constructor .invoke()
1476
1484
}
1477
1485
TestNg ->
1478
- newVar(argListClassId() , argListName) {
1479
- CgAllocateArray (argListClassId() , Array <Any >::class .java.id, length)
1486
+ newVar(argListClassId, argListName) {
1487
+ CgAllocateArray (argListClassId, Array <Any >::class .java.id, length)
1480
1488
}
1481
1489
Junit4 -> error(" Parameterized tests are not supported for JUnit4" )
1482
1490
}
@@ -1485,69 +1493,59 @@ internal class CgMethodConstructor(val context: CgContext) : CgContextOwner by c
1485
1493
/* *
1486
1494
* Creates a [ClassId] for arguments collection.
1487
1495
*/
1488
- private fun argListClassId (): ClassId = when (testFramework) {
1489
- Junit5 -> BuiltinClassId (
1490
- name = " java.util.ArrayList<${JUNIT5_PARAMETERIZED_PACKAGE } .provider.Arguments>" ,
1491
- simpleName = " ArrayList<${JUNIT5_PARAMETERIZED_PACKAGE } .provider.Arguments>" ,
1492
- canonicalName = " java.util.ArrayList<${JUNIT5_PARAMETERIZED_PACKAGE } .provider.Arguments>" ,
1493
- packageName = " java.util" ,
1494
- )
1495
- TestNg -> BuiltinClassId (
1496
- name = Array <Array <Any ?>? > ::class .java.name,
1497
- simpleName = when (codegenLanguage) {
1498
- CodegenLanguage .JAVA -> " Object[][]"
1499
- CodegenLanguage .KOTLIN -> " Array<Array<Any?>?>"
1500
- },
1501
- canonicalName = Array <Array <Any ?>? > ::class .java.canonicalName,
1502
- packageName = Array <Array <Any ?>? > ::class .java.packageName,
1503
- )
1504
- Junit4 -> error(" Parameterized tests are not supported for JUnit4" )
1505
- }
1496
+ private val argListClassId: ClassId
1497
+ get() = when (testFramework) {
1498
+ Junit5 -> java.util.ArrayList ::class .id
1499
+ TestNg -> BuiltinClassId (
1500
+ name = Array <Array <Any ?>? > ::class .java.name,
1501
+ simpleName = when (codegenLanguage) {
1502
+ CodegenLanguage .JAVA -> " Object[][]"
1503
+ CodegenLanguage .KOTLIN -> " Array<Array<Any?>?>"
1504
+ },
1505
+ canonicalName = Array <Array <Any ?>? > ::class .java.canonicalName,
1506
+ packageName = Array <Array <Any ?>? > ::class .java.packageName,
1507
+ )
1508
+ Junit4 -> error(" Parameterized tests are not supported for JUnit4" )
1509
+ }
1506
1510
1507
1511
1508
1512
/* *
1509
1513
* A [MethodId] to add an item into [ArrayList].
1510
1514
*/
1511
- private val addToListMethodId: MethodId = methodId(
1512
- classId = ArrayList ::class .id,
1513
- name = " add" ,
1514
- returnType = booleanClassId,
1515
- arguments = arrayOf(Object ::class .id),
1516
- )
1515
+ private val addToListMethodId: MethodId
1516
+ get() = methodId(
1517
+ classId = ArrayList ::class .id,
1518
+ name = " add" ,
1519
+ returnType = booleanClassId,
1520
+ arguments = arrayOf(Object ::class .id),
1521
+ )
1517
1522
1518
1523
/* *
1519
1524
* A [ClassId] of class `org.junit.jupiter.params.provider.Arguments`
1520
1525
*/
1521
- private val argumentsClassId: ClassId = BuiltinClassId (
1522
- name = " org.junit.jupiter.params.provider.Arguments" ,
1523
- simpleName = " Arguments" ,
1524
- canonicalName = " org.junit.jupiter.params.provider.Arguments" ,
1525
- packageName = " org.junit.jupiter.params.provider" ,
1526
- )
1526
+ private val argumentsClassId: BuiltinClassId
1527
+ get() = BuiltinClassId (
1528
+ name = " org.junit.jupiter.params.provider.Arguments" ,
1529
+ simpleName = " Arguments" ,
1530
+ canonicalName = " org.junit.jupiter.params.provider.Arguments" ,
1531
+ packageName = " org.junit.jupiter.params.provider"
1532
+ )
1527
1533
1528
1534
/* *
1529
1535
* A [MethodId] to call JUnit Arguments method.
1530
1536
*/
1531
- private val argumentsMethodId: MethodId = methodId(
1532
- classId = argumentsClassId,
1533
- name = " arguments" ,
1534
- returnType = argumentsClassId,
1535
- arguments = arrayOf(Object ::class .id),
1536
- )
1537
+ private val argumentsMethodId: BuiltinMethodId
1538
+ get() = builtinMethodId(
1539
+ classId = argumentsClassId,
1540
+ name = " arguments" ,
1541
+ returnType = argumentsClassId,
1542
+ // vararg of Objects
1543
+ arguments = arrayOf(objectArrayClassId)
1544
+ )
1537
1545
1538
1546
private fun containsFailureExecution (testSet : UtMethodTestSet ) =
1539
1547
testSet.executions.any { it.result is UtExecutionFailure }
1540
1548
1541
- /* *
1542
- * A [ClassId] for Class<Throwable>.
1543
- */
1544
- private fun throwableClassId (): ClassId = BuiltinClassId (
1545
- name = " java.lang.Class<Throwable>" ,
1546
- simpleName = " Class<Throwable>" ,
1547
- canonicalName = " java.lang.Class<Throwable>" ,
1548
- packageName = " java.lang" ,
1549
- )
1550
-
1551
1549
1552
1550
private fun collectParameterizedTestAnnotations (dataProviderMethodName : String? ): Set <CgAnnotation > =
1553
1551
when (testFramework) {
@@ -1637,12 +1635,12 @@ internal class CgMethodConstructor(val context: CgContext) : CgContextOwner by c
1637
1635
private fun dataProviderMethod (dataProviderMethodName : String , body : () -> Unit ): CgParameterizedTestDataProviderMethod {
1638
1636
return buildParameterizedTestDataProviderMethod {
1639
1637
name = dataProviderMethodName
1640
- returnType = argListClassId()
1638
+ returnType = argListClassId
1641
1639
statements = block(body)
1642
1640
// Exceptions and annotations assignment must run after the statements block is build,
1643
1641
// because we collect info about exceptions and required annotations while building the statements
1644
- exceptions = collectedExceptions
1645
- annotations = createDataProviderAnnotations(dataProviderMethodName)
1642
+ exceptions + = collectedExceptions
1643
+ annotations + = createDataProviderAnnotations(dataProviderMethodName)
1646
1644
}
1647
1645
}
1648
1646
0 commit comments