11package org.utbot.engine
22
3- import kotlinx.collections.immutable.persistentListOf
4- import kotlinx.collections.immutable.persistentSetOf
53import 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
94import org.utbot.engine.overrides.collections.AssociativeArray
10- import org.utbot.engine.overrides.collections.RangeModifiableUnlimitedArray
115import org.utbot.engine.overrides.collections.UtArrayList
126import org.utbot.engine.overrides.collections.UtGenericAssociative
137import org.utbot.engine.overrides.collections.UtGenericStorage
148import org.utbot.engine.overrides.collections.UtHashMap
159import org.utbot.engine.overrides.collections.UtHashSet
1610import org.utbot.engine.overrides.collections.UtLinkedList
17- import org.utbot.engine.overrides.stream.UtStream
1811import org.utbot.engine.pc.UtAddrExpression
1912import org.utbot.engine.pc.UtExpression
20- import org.utbot.engine.pc.mkEq
21- import org.utbot.engine.pc.mkFalse
2213import org.utbot.engine.pc.select
2314import org.utbot.engine.symbolic.asHardConstraint
2415import org.utbot.engine.z3.intValue
@@ -58,8 +49,7 @@ abstract class BaseOverriddenWrapper(protected val overriddenClassName: String)
5849 *
5950 * @see invoke
6051 */
61- protected abstract fun overrideInvoke (
62- engine : UtBotSymbolicEngine ,
52+ protected abstract fun UtBotSymbolicEngine.overrideInvoke (
6353 wrapper : ObjectValue ,
6454 method : SootMethod ,
6555 parameters : List <SymbolicValue >
@@ -83,7 +73,7 @@ abstract class BaseOverriddenWrapper(protected val overriddenClassName: String)
8373 method : SootMethod ,
8474 parameters : List <SymbolicValue >
8575 ): List <InvokeResult > {
86- val methodResults = overrideInvoke(this , wrapper, method, parameters)
76+ val methodResults = overrideInvoke(wrapper, method, parameters)
8777 if (methodResults != null ) {
8878 return methodResults
8979 }
@@ -159,28 +149,25 @@ abstract class BaseContainerWrapper(containerClassName: String) : BaseOverridden
159149}
160150
161151abstract class BaseGenericStorageBasedContainerWrapper (containerClassName : String ) : BaseContainerWrapper(containerClassName) {
162- override fun overrideInvoke (
163- engine : UtBotSymbolicEngine ,
152+ override fun UtBotSymbolicEngine.overrideInvoke (
164153 wrapper : ObjectValue ,
165154 method : SootMethod ,
166155 parameters : List <SymbolicValue >
167156 ): 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+ )
179167
180- listOf (methodResult)
181- }
182- else -> null
168+ listOf (methodResult)
183169 }
170+ else -> null
184171 }
185172
186173 override fun Resolver.resolveValueModels (wrapper : ObjectValue ): List <List <UtModel >> {
@@ -283,34 +270,32 @@ class SetWrapper : BaseGenericStorageBasedContainerWrapper(UtHashSet::class.qual
283270 * entries, then real behavior of generated test can differ from expected and undefined.
284271 */
285272class MapWrapper : BaseContainerWrapper (UtHashMap : :class.qualifiedName!!) {
286- override fun overrideInvoke (
287- engine : UtBotSymbolicEngine ,
273+ override fun UtBotSymbolicEngine.overrideInvoke (
288274 wrapper : ObjectValue ,
289275 method : SootMethod ,
290276 parameters : List <SymbolicValue >
291277 ): 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()
300284 )
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()
310294 )
311- else -> null
312- }
295+ )
296+ else -> null
313297 }
298+
314299 override fun Resolver.resolveValueModels (wrapper : ObjectValue ): List <List <UtModel >> {
315300 val fieldModels = collectFieldModels(wrapper.addr, overriddenClass.type)
316301 val keyModels = fieldModels[overriddenClass.getFieldByName(" keys" ).fieldId] as ? UtArrayModel
@@ -402,12 +387,6 @@ private val UT_GENERIC_ASSOCIATIVE_CLASS
402387private val UT_GENERIC_ASSOCIATIVE_SET_EQUAL_GENERIC_TYPE_SIGNATURE =
403388 UT_GENERIC_ASSOCIATIVE_CLASS .getMethodByName(UtGenericAssociative <* , * >::setEqualGenericType.name).signature
404389
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-
411390val ARRAY_LIST_TYPE : RefType
412391 get() = Scene .v().getSootClass(java.util.ArrayList ::class .java.canonicalName).type
413392val LINKED_LIST_TYPE : RefType
0 commit comments