Skip to content

Commit 1787b42

Browse files
authored
Fix empty else-branch in parameterized test generation #518 (#908)
Add assertNotNull for actual in parameterized test generation
1 parent 1197115 commit 1787b42

File tree

3 files changed

+15
-5
lines changed

3 files changed

+15
-5
lines changed

utbot-framework/src/main/kotlin/org/utbot/framework/codegen/Domain.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,8 @@ sealed class TestFramework(
219219

220220
val assertNull by lazy { assertionId("assertNull", objectClassId) }
221221

222+
val assertNotNull by lazy { assertionId("assertNotNull", objectClassId) }
223+
222224
val assertFalse by lazy { assertionId("assertFalse", booleanClassId) }
223225

224226
val assertTrue by lazy { assertionId("assertTrue", booleanClassId) }

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

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1212,7 +1212,10 @@ internal class CgMethodConstructor(val context: CgContext) : CgContextOwner by c
12121212
else -> ifStatement(
12131213
CgEqualTo(expected, nullLiteral()),
12141214
trueBranch = { +testFrameworkManager.assertions[testFramework.assertNull](actual).toStatement() },
1215-
falseBranch = { generateDeepEqualsAssertion(expected, actual) }
1215+
falseBranch = {
1216+
+testFrameworkManager.assertions[testFrameworkManager.assertNotNull](actual).toStatement()
1217+
generateDeepEqualsAssertion(expected, actual)
1218+
}
12161219
)
12171220
}
12181221
}
@@ -1344,10 +1347,7 @@ internal class CgMethodConstructor(val context: CgContext) : CgContextOwner by c
13441347
fun createParameterizedTestMethod(testSet: CgMethodTestSet, dataProviderMethodName: String): CgTestMethod {
13451348
//TODO: orientation on generic execution may be misleading, but what is the alternative?
13461349
//may be a heuristic to select a model with minimal number of internal nulls should be used
1347-
val genericExecution = testSet.executions
1348-
.firstOrNull { it.result is UtExecutionSuccess && (it.result as UtExecutionSuccess).model !is UtNullModel }
1349-
?: testSet.executions
1350-
.firstOrNull { it.result is UtExecutionSuccess } ?: testSet.executions.first()
1350+
val genericExecution = chooseGenericExecution(testSet.executions)
13511351

13521352
val statics = genericExecution.stateBefore.statics
13531353

@@ -1415,6 +1415,13 @@ internal class CgMethodConstructor(val context: CgContext) : CgContextOwner by c
14151415
}
14161416
}
14171417

1418+
private fun chooseGenericExecution(executions: List<UtExecution>): UtExecution {
1419+
return executions
1420+
.firstOrNull { it.result is UtExecutionSuccess && (it.result as UtExecutionSuccess).model !is UtNullModel }
1421+
?: executions
1422+
.firstOrNull { it.result is UtExecutionSuccess } ?: executions.first()
1423+
}
1424+
14181425
private fun createParameterDeclarations(
14191426
testSet: CgMethodTestSet,
14201427
genericExecution: UtExecution,

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ internal abstract class TestFrameworkManager(val context: CgContext)
6060
val assertDoubleEquals = context.testFramework.assertDoubleEquals
6161

6262
val assertNull = context.testFramework.assertNull
63+
val assertNotNull = context.testFramework.assertNotNull
6364
val assertTrue = context.testFramework.assertTrue
6465
val assertFalse = context.testFramework.assertFalse
6566

0 commit comments

Comments
 (0)