1
1
package org.utbot.engine
2
2
3
- import kotlinx.collections.immutable.persistentListOf
4
- import kotlinx.collections.immutable.persistentSetOf
5
3
import org.utbot.common.unreachableBranch
6
- import org.utbot.engine.CommonStreamWrapper.Companion.isClosedStreamFieldId
7
- import org.utbot.engine.CommonStreamWrapper.Companion.isParallelStreamFieldId
8
- import org.utbot.engine.CommonStreamWrapper.Companion.utStreamType
9
4
import org.utbot.engine.overrides.collections.AssociativeArray
10
- import org.utbot.engine.overrides.collections.RangeModifiableUnlimitedArray
11
5
import org.utbot.engine.overrides.collections.UtArrayList
12
6
import org.utbot.engine.overrides.collections.UtGenericAssociative
13
7
import org.utbot.engine.overrides.collections.UtGenericStorage
14
8
import org.utbot.engine.overrides.collections.UtHashMap
15
9
import org.utbot.engine.overrides.collections.UtHashSet
16
10
import org.utbot.engine.overrides.collections.UtLinkedList
17
- import org.utbot.engine.overrides.stream.UtStream
18
11
import org.utbot.engine.pc.UtAddrExpression
19
12
import org.utbot.engine.pc.UtExpression
20
- import org.utbot.engine.pc.mkEq
21
- import org.utbot.engine.pc.mkFalse
22
13
import org.utbot.engine.pc.select
23
14
import org.utbot.engine.symbolic.asHardConstraint
24
15
import org.utbot.engine.z3.intValue
@@ -58,8 +49,7 @@ abstract class BaseOverriddenWrapper(protected val overriddenClassName: String)
58
49
*
59
50
* @see invoke
60
51
*/
61
- protected abstract fun overrideInvoke (
62
- engine : UtBotSymbolicEngine ,
52
+ protected abstract fun UtBotSymbolicEngine.overrideInvoke (
63
53
wrapper : ObjectValue ,
64
54
method : SootMethod ,
65
55
parameters : List <SymbolicValue >
@@ -83,7 +73,7 @@ abstract class BaseOverriddenWrapper(protected val overriddenClassName: String)
83
73
method : SootMethod ,
84
74
parameters : List <SymbolicValue >
85
75
): List <InvokeResult > {
86
- val methodResults = overrideInvoke(this , wrapper, method, parameters)
76
+ val methodResults = overrideInvoke(wrapper, method, parameters)
87
77
if (methodResults != null ) {
88
78
return methodResults
89
79
}
@@ -159,28 +149,25 @@ abstract class BaseContainerWrapper(containerClassName: String) : BaseOverridden
159
149
}
160
150
161
151
abstract class BaseGenericStorageBasedContainerWrapper (containerClassName : String ) : BaseContainerWrapper(containerClassName) {
162
- override fun overrideInvoke (
163
- engine : UtBotSymbolicEngine ,
152
+ override fun UtBotSymbolicEngine.overrideInvoke (
164
153
wrapper : ObjectValue ,
165
154
method : SootMethod ,
166
155
parameters : List <SymbolicValue >
167
156
): List <InvokeResult >? =
168
- with (engine) {
169
- when (method.signature) {
170
- UT_GENERIC_STORAGE_SET_EQUAL_GENERIC_TYPE_SIGNATURE -> {
171
- val equalGenericTypeConstraint = typeRegistry
172
- .eqGenericSingleTypeParameterConstraint(parameters[0 ].addr, wrapper.addr)
173
- .asHardConstraint()
174
-
175
- val methodResult = MethodResult (
176
- SymbolicSuccess (voidValue),
177
- equalGenericTypeConstraint
178
- )
157
+ when (method.signature) {
158
+ UT_GENERIC_STORAGE_SET_EQUAL_GENERIC_TYPE_SIGNATURE -> {
159
+ val equalGenericTypeConstraint = typeRegistry
160
+ .eqGenericSingleTypeParameterConstraint(parameters[0 ].addr, wrapper.addr)
161
+ .asHardConstraint()
162
+
163
+ val methodResult = MethodResult (
164
+ SymbolicSuccess (voidValue),
165
+ equalGenericTypeConstraint
166
+ )
179
167
180
- listOf (methodResult)
181
- }
182
- else -> null
168
+ listOf (methodResult)
183
169
}
170
+ else -> null
184
171
}
185
172
186
173
override fun Resolver.resolveValueModels (wrapper : ObjectValue ): List <List <UtModel >> {
@@ -283,34 +270,32 @@ class SetWrapper : BaseGenericStorageBasedContainerWrapper(UtHashSet::class.qual
283
270
* entries, then real behavior of generated test can differ from expected and undefined.
284
271
*/
285
272
class MapWrapper : BaseContainerWrapper (UtHashMap : :class.qualifiedName!!) {
286
- override fun overrideInvoke (
287
- engine : UtBotSymbolicEngine ,
273
+ override fun UtBotSymbolicEngine.overrideInvoke (
288
274
wrapper : ObjectValue ,
289
275
method : SootMethod ,
290
276
parameters : List <SymbolicValue >
291
277
): List <InvokeResult >? =
292
- with (engine) {
293
- when (method.signature) {
294
- UT_GENERIC_STORAGE_SET_EQUAL_GENERIC_TYPE_SIGNATURE -> listOf (
295
- MethodResult (
296
- SymbolicSuccess (voidValue),
297
- typeRegistry.eqGenericSingleTypeParameterConstraint(parameters[0 ].addr, wrapper.addr)
298
- .asHardConstraint()
299
- )
278
+ when (method.signature) {
279
+ UT_GENERIC_STORAGE_SET_EQUAL_GENERIC_TYPE_SIGNATURE -> listOf (
280
+ MethodResult (
281
+ SymbolicSuccess (voidValue),
282
+ typeRegistry.eqGenericSingleTypeParameterConstraint(parameters[0 ].addr, wrapper.addr)
283
+ .asHardConstraint()
300
284
)
301
- UT_GENERIC_ASSOCIATIVE_SET_EQUAL_GENERIC_TYPE_SIGNATURE -> listOf (
302
- MethodResult (
303
- SymbolicSuccess (voidValue),
304
- typeRegistry.eqGenericTypeParametersConstraint(
305
- parameters[ 0 ].addr,
306
- wrapper .addr,
307
- parameterSize = 2
308
- ).asHardConstraint()
309
- )
285
+ )
286
+ UT_GENERIC_ASSOCIATIVE_SET_EQUAL_GENERIC_TYPE_SIGNATURE -> listOf (
287
+ MethodResult (
288
+ SymbolicSuccess (voidValue),
289
+ typeRegistry.eqGenericTypeParametersConstraint(
290
+ parameters[ 0 ] .addr,
291
+ wrapper.addr,
292
+ parameterSize = 2
293
+ ).asHardConstraint()
310
294
)
311
- else -> null
312
- }
295
+ )
296
+ else -> null
313
297
}
298
+
314
299
override fun Resolver.resolveValueModels (wrapper : ObjectValue ): List <List <UtModel >> {
315
300
val fieldModels = collectFieldModels(wrapper.addr, overriddenClass.type)
316
301
val keyModels = fieldModels[overriddenClass.getFieldByName(" keys" ).fieldId] as ? UtArrayModel
@@ -402,12 +387,6 @@ private val UT_GENERIC_ASSOCIATIVE_CLASS
402
387
private val UT_GENERIC_ASSOCIATIVE_SET_EQUAL_GENERIC_TYPE_SIGNATURE =
403
388
UT_GENERIC_ASSOCIATIVE_CLASS .getMethodByName(UtGenericAssociative <* , * >::setEqualGenericType.name).signature
404
389
405
- private val COLLECTION_CLASS : SootClass
406
- get() = Scene .v().getSootClass(java.util.Collection ::class .java.canonicalName)
407
-
408
- private val UT_COLLECTION_STREAM_SIGNATURE : String =
409
- COLLECTION_CLASS .getMethodByName(" stream" ).signature
410
-
411
390
val ARRAY_LIST_TYPE : RefType
412
391
get() = Scene .v().getSootClass(java.util.ArrayList ::class .java.canonicalName).type
413
392
val LINKED_LIST_TYPE : RefType
0 commit comments