Skip to content

Commit 086f225

Browse files
authored
Improve processing CgNotNullAssertion in deepEquals #579 #580 (#582)
1 parent c5c3955 commit 086f225

File tree

1 file changed

+19
-21
lines changed

1 file changed

+19
-21
lines changed

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

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1004,18 +1004,17 @@ internal class CgMethodConstructor(val context: CgContext) : CgContextOwner by c
10041004
} else {
10051005
// array of objects, have to use deep equals
10061006

1007-
if (expected is CgLiteral) {
1008-
// Literal can only be Primitive or String, can use equals here
1009-
testFrameworkManager.assertEquals(expected, actual)
1010-
return
1011-
}
1012-
1013-
require(resultModel is UtArrayModel) {
1014-
"Result model have to be UtArrayModel to generate arrays assertion " +
1015-
"but `${resultModel::class}` found"
1007+
when (expected) {
1008+
is CgLiteral -> testFrameworkManager.assertEquals(expected, actual)
1009+
is CgNotNullAssertion -> generateForNotNullAssertion(expected, actual)
1010+
else -> {
1011+
require(resultModel is UtArrayModel) {
1012+
"Result model have to be UtArrayModel to generate arrays assertion " +
1013+
"but `${resultModel::class}` found"
1014+
}
1015+
generateDeepEqualsOrNullAssertion(expected, actual)
1016+
}
10161017
}
1017-
1018-
generateDeepEqualsOrNullAssertion(expected, actual)
10191018
}
10201019
}
10211020
}
@@ -1046,23 +1045,22 @@ internal class CgMethodConstructor(val context: CgContext) : CgContextOwner by c
10461045
}
10471046
else -> {
10481047
when (expected) {
1049-
is CgLiteral -> {
1050-
// Literal can only be Primitive or String, can use equals here
1051-
testFrameworkManager.assertEquals(expected, actual)
1052-
}
1053-
is CgNotNullAssertion -> {
1054-
require(expected.expression is CgVariable) {
1055-
"Only Variable wrapped in CgNotNullAssertion is supported in deep equals"
1056-
}
1057-
currentBlock = currentBlock.addAll(generateDeepEqualsAssertion(expected.expression, actual))
1058-
}
1048+
is CgLiteral -> testFrameworkManager.assertEquals(expected, actual)
1049+
is CgNotNullAssertion -> generateForNotNullAssertion(expected, actual)
10591050
else -> generateDeepEqualsOrNullAssertion(expected, actual)
10601051
}
10611052
}
10621053
}
10631054
}
10641055
}
10651056

1057+
private fun generateForNotNullAssertion(expected: CgNotNullAssertion, actual: CgVariable) {
1058+
require(expected.expression is CgVariable) {
1059+
"Only CgVariable wrapped in CgNotNullAssertion is supported in deepEquals"
1060+
}
1061+
generateDeepEqualsOrNullAssertion(expected.expression, actual)
1062+
}
1063+
10661064
/**
10671065
* We can't use standard deepEquals method in parametrized tests
10681066
* because nullable objects require different asserts.

0 commit comments

Comments
 (0)