Skip to content

Commit d5d7ea5

Browse files
authored
Change expectedResult variable type to Object if required #528 (#529)
1 parent 08ded2a commit d5d7ea5

File tree

2 files changed

+19
-11
lines changed

2 files changed

+19
-11
lines changed

utbot-framework/src/main/kotlin/org/utbot/framework/codegen/model/constructor/tree/CgMethodConstructor.kt

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -231,8 +231,10 @@ internal class CgMethodConstructor(val context: CgContext) : CgContextOwner by c
231231
val fieldAccessible = field.isAccessibleFrom(testClassPackageName)
232232

233233
// prevValue is nullable if not accessible because of getStaticFieldValue(..) : Any?
234-
val prevValue = newVar(CgClassId(field.type, isNullable = !fieldAccessible),
235-
"prev${field.name.capitalize()}") {
234+
val prevValue = newVar(
235+
CgClassId(field.type, isNullable = !fieldAccessible),
236+
"prev${field.name.capitalize()}"
237+
) {
236238
if (fieldAccessible) {
237239
declaringClass[field]
238240
} else {
@@ -1198,7 +1200,8 @@ internal class CgMethodConstructor(val context: CgContext) : CgContextOwner by c
11981200
it.variableName,
11991201
// guard initializer to reuse typecast creation logic
12001202
initializer = guardExpression(varType, nullLiteral()).expression,
1201-
isMutable = true)
1203+
isMutable = true,
1204+
)
12021205
}
12031206
+tryWithMocksFinallyClosing
12041207
}
@@ -1253,10 +1256,13 @@ internal class CgMethodConstructor(val context: CgContext) : CgContextOwner by c
12531256
}
12541257
val method = currentExecutable as MethodId
12551258
val containsFailureExecution = containsFailureExecution(testSet)
1256-
if (method.returnType != voidClassId) {
1259+
1260+
val expectedResultClassId = wrapTypeIfRequired(method.returnType)
1261+
1262+
if (expectedResultClassId != voidClassId) {
12571263
testArguments += CgParameterDeclaration(
1258-
expectedResultVarName, resultClassId(method.returnType),
1259-
isReferenceType = containsFailureExecution || !method.returnType.isPrimitive
1264+
expectedResultVarName, resultClassId(expectedResultClassId),
1265+
isReferenceType = containsFailureExecution || !expectedResultClassId.isPrimitive
12601266
)
12611267
}
12621268
if (containsFailureExecution) {

utbot-framework/src/main/kotlin/org/utbot/framework/codegen/model/constructor/util/CgStatementConstructor.kt

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,8 @@ interface CgStatementConstructor {
151151
fun declareVariable(type: ClassId, name: String): CgVariable
152152

153153
fun guardExpression(baseType: ClassId, expression: CgExpression): ExpressionWithType
154+
155+
fun wrapTypeIfRequired(baseType: ClassId): ClassId
154156
}
155157

156158
internal class CgStatementConstructorImpl(context: CgContext) :
@@ -385,6 +387,9 @@ internal class CgStatementConstructorImpl(context: CgContext) :
385387
updateVariableScope(it)
386388
}
387389

390+
override fun wrapTypeIfRequired(baseType: ClassId): ClassId =
391+
if (baseType.isAccessibleFrom(testClassPackageName)) baseType else objectClassId
392+
388393
// utils
389394

390395
private fun classRefOrNull(type: ClassId, expr: CgExpression): ClassId? {
@@ -444,11 +449,8 @@ internal class CgStatementConstructorImpl(context: CgContext) :
444449
if (call.executableId != mockMethodId) return guardExpression(baseType, call)
445450

446451
// call represents a call to mock() method
447-
return if (baseType.isAccessibleFrom(testClassPackageName)) {
448-
ExpressionWithType(baseType, call)
449-
} else {
450-
ExpressionWithType(objectClassId, call)
451-
}
452+
val wrappedType = wrapTypeIfRequired(baseType)
453+
return ExpressionWithType(wrappedType, call)
452454
}
453455

454456
override fun guardExpression(baseType: ClassId, expression: CgExpression): ExpressionWithType {

0 commit comments

Comments
 (0)