@@ -8,41 +8,54 @@ import org.utbot.framework.plugin.api.UtModel
8
8
import org.utbot.instrumentation.instrumentation.execution.UtConcreteExecutionResult
9
9
import java.util.IdentityHashMap
10
10
11
+ /* *
12
+ * Tries to convert all models from [UtExecutionResult] to [UtAssembleModel] if possible.
13
+ *
14
+ * @return [UtConcreteExecutionResult] with converted models.
15
+ */
16
+ fun UtConcreteExecutionResult.convertToAssemble (packageName : String ): UtConcreteExecutionResult {
17
+ val allModels = collectAllModels()
18
+
19
+ val modelsToAssembleModels = AssembleModelGenerator (packageName).createAssembleModels(allModels)
20
+ return updateWithAssembleModels(modelsToAssembleModels)
21
+ }
22
+
11
23
private fun UtConcreteExecutionResult.updateWithAssembleModels (
12
24
assembledUtModels : IdentityHashMap <UtModel , UtModel >
13
25
): UtConcreteExecutionResult {
14
26
val toAssemble: (UtModel ) -> UtModel = { assembledUtModels.getOrDefault(it, it) }
15
27
16
- val resolvedStateAfter = if (stateAfter is MissingState ) MissingState else stateAfter.copy(
17
- thisInstance = stateAfter.thisInstance?.let { toAssemble(it) },
18
- parameters = stateAfter.parameters.map { toAssemble(it) },
19
- statics = stateAfter.statics.mapValues { toAssemble(it.value) },
20
- )
21
- val resolvedResult =
22
- (result as ? UtExecutionSuccess )?.model?.let { UtExecutionSuccess (toAssemble(it)) } ? : result
28
+ val resolvedStateBefore = stateBefore.resolveState(toAssemble)
29
+ val resolvedStateAfter = stateAfter.resolveState(toAssemble)
30
+ val resolvedResult = (result as ? UtExecutionSuccess )?.model?.let { UtExecutionSuccess (toAssemble(it)) } ? : result
23
31
24
32
return copy(
33
+ stateBefore = resolvedStateBefore,
25
34
stateAfter = resolvedStateAfter,
26
35
result = resolvedResult,
27
36
)
28
37
}
29
38
30
- /* *
31
- * Tries to convert all models from [UtExecutionResult] to [UtAssembleModel] if possible.
32
- *
33
- * @return [UtConcreteExecutionResult] with converted models.
34
- */
35
- fun UtConcreteExecutionResult.convertToAssemble (packageName : String ): UtConcreteExecutionResult {
36
- val allModels = collectAllModels()
37
-
38
- val modelsToAssembleModels = AssembleModelGenerator (packageName).createAssembleModels(allModels)
39
- return updateWithAssembleModels(modelsToAssembleModels)
40
- }
39
+ private fun EnvironmentModels.resolveState (toAssemble : (UtModel ) -> UtModel ): EnvironmentModels =
40
+ if (this is MissingState ) {
41
+ MissingState
42
+ } else {
43
+ copy(
44
+ thisInstance = thisInstance?.let { toAssemble(it) },
45
+ parameters = parameters.map { toAssemble(it) },
46
+ statics = statics.mapValues { toAssemble(it.value) },
47
+ )
48
+ }
41
49
42
50
private fun UtConcreteExecutionResult.collectAllModels (): List <UtModel > {
43
- val allModels = listOfNotNull(stateAfter.thisInstance).toMutableList()
44
- allModels + = stateAfter.parameters
45
- allModels + = stateAfter.statics.values
51
+ val allModels = mutableListOf<UtModel >()
52
+
53
+ allModels + = stateBefore.utModels
54
+ allModels + = stateAfter.utModels
46
55
allModels + = listOfNotNull((result as ? UtExecutionSuccess )?.model)
56
+
47
57
return allModels
48
- }
58
+ }
59
+
60
+ private val EnvironmentModels .utModels: List <UtModel >
61
+ get() = listOfNotNull(thisInstance) + parameters + statics.values
0 commit comments