Skip to content

Commit 19c07cb

Browse files
committed
Apply review fixes
1 parent f73a20d commit 19c07cb

File tree

2 files changed

+23
-25
lines changed

2 files changed

+23
-25
lines changed

utbot-junit-contest/src/main/kotlin/org/utbot/contest/usvm/JcToUtExecutionConverter.kt

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -53,16 +53,13 @@ class JcToUtExecutionConverter(
5353
private val toValueConverter = Descriptor2ValueConverter(utContext.classLoader)
5454

5555
private var jcToUtModelConverter: JcToUtModelConverter
56-
private var instrumentation: List<UtInstrumentation>
56+
private var uTestProcessResult: UTestAnalysisResult
5757

5858
init {
59-
val instToModelConverter = UTestInst2UtModelConverter(idGenerator, jcClasspath, utilMethodProvider)
60-
61-
instToModelConverter.processUTest(jcExecution.uTest).also {
62-
instrumentation = instToModelConverter.findInstrumentations()
63-
}
64-
59+
val instToModelConverter = UTestInst2UtModelConverter(jcExecution.uTest, jcClasspath, idGenerator, utilMethodProvider)
6560
jcToUtModelConverter = JcToUtModelConverter(idGenerator, jcClasspath, instToModelConverter)
61+
62+
uTestProcessResult = instToModelConverter.processUTest()
6663
}
6764

6865
fun convert(): UtExecution? {
@@ -75,7 +72,7 @@ class JcToUtExecutionConverter(
7572
// TODO usvm-sbft: ask why `UTestExecutionSuccessResult.result` is nullable
7673
result = UtExecutionSuccess(executionResult.result?.let { jcToUtModelConverter.convert(it) } ?: UtVoidModel),
7774
coverage = coverage,
78-
instrumentation = instrumentation,
75+
instrumentation = uTestProcessResult.instrumentation,
7976
)
8077
is UTestExecutionExceptionResult -> {
8178
UtUsvmExecution(
@@ -86,7 +83,7 @@ class JcToUtExecutionConverter(
8683
jcExecution.method,
8784
),
8885
coverage = coverage,
89-
instrumentation = instrumentation,
86+
instrumentation = uTestProcessResult.instrumentation,
9087
)
9188
}
9289

utbot-junit-contest/src/main/kotlin/org/utbot/contest/usvm/UTestInst2UtModelConverter.kt

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ import org.usvm.instrumentation.testcase.api.UTestShortExpression
3434
import org.usvm.instrumentation.testcase.api.UTestStaticMethodCall
3535
import org.usvm.instrumentation.testcase.api.UTestStringExpression
3636
import org.utbot.framework.codegen.domain.builtin.UtilMethodProvider
37-
import org.utbot.framework.plugin.api.ConstructorId
3837
import org.utbot.framework.plugin.api.ExecutableId
3938
import org.utbot.framework.plugin.api.FieldId
4039
import org.utbot.framework.plugin.api.MethodId
@@ -54,19 +53,19 @@ import org.utbot.framework.plugin.api.util.objectClassId
5453
import org.utbot.fuzzer.IdGenerator
5554

5655
class UTestInst2UtModelConverter(
57-
private val idGenerator: IdGenerator<Int>,
56+
private val uTest: UTest,
5857
private val jcClasspath: JcClasspath,
58+
private val idGenerator: IdGenerator<Int>,
5959
private val utilMethodProvider: UtilMethodProvider,
6060
) {
6161
private val exprToModelCache = mutableMapOf<UTestExpression, UtModel>()
6262
private val instrumentations = mutableListOf<UtInstrumentation>()
6363

64-
fun processUTest(uTest: UTest) {
65-
exprToModelCache.clear()
66-
instrumentations.clear()
67-
64+
fun processUTest(): UTestAnalysisResult {
6865
uTest.initStatements.forEach { uInst -> processInst(uInst) }
6966
removeInstantiationCallFromThisInstanceModificationChain(processExpr(uTest.callMethodExpression))
67+
68+
return UTestAnalysisResult(instrumentations)
7069
}
7170

7271
fun findModelByInst(expr: UTestExpression): UtModel {
@@ -75,8 +74,6 @@ class UTestInst2UtModelConverter(
7574
return alreadyCreatedModel
7675
}
7776

78-
fun findInstrumentations(): List<UtInstrumentation> = instrumentations
79-
8077
private fun removeInstantiationCallFromThisInstanceModificationChain(model: UtModel) {
8178
if (model is UtAssembleModel) {
8279
val instantiationCall = model.instantiationCall
@@ -307,11 +304,11 @@ class UTestInst2UtModelConverter(
307304
}
308305

309306
is UTestGlobalMock -> {
310-
// Daniil said that we can miss [type] and [fields] when converting to [UtInstrumentation]
311307
val methodsToExprs = uTestExpr.methods.entries
308+
val initMethodExprs = methodsToExprs.filter { it.key.isConstructor }
309+
val otherMethodsExprs = methodsToExprs.minus(initMethodExprs.toSet())
312310

313-
methodsToExprs
314-
.filter { it.key is MethodId }
311+
otherMethodsExprs
315312
.forEach { (jcMethod, uTestExprs) ->
316313
val methodId = jcMethod.toExecutableId(jcClasspath) as MethodId
317314
val valueModels = uTestExprs.map { expr -> processExpr(expr) }
@@ -323,15 +320,15 @@ class UTestInst2UtModelConverter(
323320
instrumentations += methodInstrumentation
324321
}
325322

326-
methodsToExprs
327-
.filter { it.key is ConstructorId }
323+
initMethodExprs
328324
.forEach { (jcMethod, uTestExprs) ->
329325
val valueModels = uTestExprs.map { expr -> processExpr(expr) }
330326
val methodInstrumentation = UtNewInstanceInstrumentation(
331-
// TODO usvm-sbft looking at [Traverser] ln 1682, this classId does not seem correct
332327
classId = jcMethod.enclosingClass.classId,
333328
instances = valueModels,
334-
callSites = setOf(jcMethod.enclosingClass.classId),
329+
// [UTestGlobalMock] does not have an equivalent of [callSites],
330+
// but it is used only in UtBot instrumentation. We use USVM one, so it is not a problem.
331+
callSites = emptySet(),
335332
)
336333

337334
instrumentations += methodInstrumentation
@@ -355,4 +352,8 @@ class UTestInst2UtModelConverter(
355352
is UTestArrayLengthExpression -> error("This expression type is not supported")
356353
}
357354
}
358-
}
355+
}
356+
357+
data class UTestAnalysisResult(
358+
val instrumentation: List<UtInstrumentation>,
359+
)

0 commit comments

Comments
 (0)