Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import org.utbot.framework.codegen.domain.models.TestClassModel
import org.utbot.framework.codegen.domain.context.CgContext
import org.utbot.framework.codegen.renderer.CgAbstractRenderer
import org.utbot.framework.codegen.reports.TestsGenerationReport
import org.utbot.framework.codegen.tree.CgTestClassConstructor
import org.utbot.framework.codegen.tree.CgSimpleTestClassConstructor
import org.utbot.framework.codegen.tree.ututils.UtilClassKind
import org.utbot.framework.codegen.services.language.CgLanguageAssistant
import org.utbot.framework.plugin.api.ClassId
Expand Down Expand Up @@ -73,7 +73,7 @@ open class CodeGenerator(
val cgTestSets = testSets.map { CgMethodTestSet(it) }.toList()
return withCustomContext(testClassCustomName) {
context.withTestClassFileScope {
val astConstructor = CgTestClassConstructor(context)
val astConstructor = CgSimpleTestClassConstructor(context)
val renderer = CgAbstractRenderer.makeRenderer(context)
val testClassModel = TestClassModel.fromTestSets(classUnderTest, cgTestSets)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ import org.utbot.framework.codegen.domain.models.CgThisInstance
import org.utbot.framework.codegen.domain.models.CgValue
import org.utbot.framework.codegen.domain.models.CgVariable
import org.utbot.framework.codegen.services.access.CgCallableAccessManagerImpl.FieldAccessorSuitability.*
import org.utbot.framework.codegen.tree.CgTestClassConstructor.CgComponents.getStatementConstructorBy
import org.utbot.framework.codegen.tree.CgTestClassConstructor.CgComponents.getVariableConstructorBy
import org.utbot.framework.codegen.tree.CgComponents.getStatementConstructorBy
import org.utbot.framework.codegen.tree.CgComponents.getVariableConstructorBy
import org.utbot.framework.codegen.tree.getAmbiguousOverloadsOf
import org.utbot.framework.codegen.tree.importIfNeeded
import org.utbot.framework.codegen.tree.isUtil
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ import org.utbot.framework.codegen.domain.models.CgExpression
import org.utbot.framework.codegen.domain.models.CgGetJavaClass
import org.utbot.framework.codegen.domain.models.CgValue
import org.utbot.framework.codegen.domain.models.CgVariable
import org.utbot.framework.codegen.tree.CgComponents.getCallableAccessManagerBy
import org.utbot.framework.codegen.tree.CgComponents.getStatementConstructorBy
import org.utbot.framework.codegen.tree.CgFieldState
import org.utbot.framework.codegen.tree.CgStatementConstructor
import org.utbot.framework.codegen.tree.CgTestClassConstructor.CgComponents.getCallableAccessManagerBy
import org.utbot.framework.codegen.tree.CgTestClassConstructor.CgComponents.getStatementConstructorBy
import org.utbot.framework.codegen.tree.FieldStateCache
import org.utbot.framework.codegen.tree.classCgClassId
import org.utbot.framework.codegen.tree.getFieldVariableName
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,9 @@ import org.utbot.framework.codegen.domain.models.CgValue
import org.utbot.framework.codegen.domain.models.CgVariable
import org.utbot.framework.codegen.services.access.CgCallableAccessManager
import org.utbot.framework.codegen.services.access.CgCallableAccessManagerImpl
import org.utbot.framework.codegen.tree.CgComponents.getVariableConstructorBy
import org.utbot.framework.codegen.tree.CgStatementConstructor
import org.utbot.framework.codegen.tree.CgStatementConstructorImpl
import org.utbot.framework.codegen.tree.CgTestClassConstructor.CgComponents.getVariableConstructorBy
import org.utbot.framework.codegen.tree.CgVariableConstructor
import org.utbot.framework.codegen.tree.hasAmbiguousOverloadsOf
import org.utbot.framework.codegen.util.isAccessibleFrom
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ import org.utbot.framework.codegen.domain.models.CgSingleArgAnnotation
import org.utbot.framework.codegen.domain.models.CgValue
import org.utbot.framework.codegen.domain.models.CgVariable
import org.utbot.framework.codegen.services.access.CgCallableAccessManager
import org.utbot.framework.codegen.tree.CgTestClassConstructor.CgComponents.getCallableAccessManagerBy
import org.utbot.framework.codegen.tree.CgTestClassConstructor.CgComponents.getStatementConstructorBy
import org.utbot.framework.codegen.tree.CgComponents.getCallableAccessManagerBy
import org.utbot.framework.codegen.tree.CgComponents.getStatementConstructorBy
import org.utbot.framework.codegen.tree.addToListMethodId
import org.utbot.framework.codegen.tree.argumentsClassId
import org.utbot.framework.codegen.tree.argumentsMethodId
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package org.utbot.framework.codegen.tree

import org.utbot.framework.codegen.domain.context.CgContext
import org.utbot.framework.codegen.services.CgNameGenerator
import org.utbot.framework.codegen.services.access.CgCallableAccessManager
import org.utbot.framework.codegen.services.framework.MockFrameworkManager
import org.utbot.framework.codegen.services.framework.TestFrameworkManager

object CgComponents {

/**
* Clears all stored data for current [CgContext].
* As far as context is created per class under test,
* no related data is required after it's processing.
*/
fun clearContextRelatedStorage() {
nameGenerators.clear()
statementConstructors.clear()
callableAccessManagers.clear()
testFrameworkManagers.clear()
mockFrameworkManagers.clear()
variableConstructors.clear()
methodConstructors.clear()
}

private val nameGenerators: MutableMap<CgContext, CgNameGenerator> = mutableMapOf()
private val statementConstructors: MutableMap<CgContext, CgStatementConstructor> = mutableMapOf()
private val callableAccessManagers: MutableMap<CgContext, CgCallableAccessManager> = mutableMapOf()
private val testFrameworkManagers: MutableMap<CgContext, TestFrameworkManager> = mutableMapOf()
private val mockFrameworkManagers: MutableMap<CgContext, MockFrameworkManager> = mutableMapOf()

private val variableConstructors: MutableMap<CgContext, CgVariableConstructor> = mutableMapOf()
private val methodConstructors: MutableMap<CgContext, CgMethodConstructor> = mutableMapOf()

fun getNameGeneratorBy(context: CgContext) = nameGenerators.getOrPut(context) {
context.cgLanguageAssistant.getNameGeneratorBy(context)
}
fun getCallableAccessManagerBy(context: CgContext) = callableAccessManagers.getOrPut(context) {
context.cgLanguageAssistant.getCallableAccessManagerBy(context)
}
fun getStatementConstructorBy(context: CgContext) = statementConstructors.getOrPut(context) {
context.cgLanguageAssistant.getStatementConstructorBy(context)
}

fun getTestFrameworkManagerBy(context: CgContext) =
testFrameworkManagers.getOrDefault(context, context.cgLanguageAssistant.getLanguageTestFrameworkManager().managerByFramework(context))

fun getMockFrameworkManagerBy(context: CgContext) = mockFrameworkManagers.getOrPut(context) { MockFrameworkManager(context) }
fun getVariableConstructorBy(context: CgContext) = variableConstructors.getOrPut(context) {
context.cgLanguageAssistant.getVariableConstructorBy(context)
}
fun getMethodConstructorBy(context: CgContext) = methodConstructors.getOrPut(context) {
context.cgLanguageAssistant.getMethodConstructorBy(context)
}
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
package org.utbot.framework.codegen.tree

import org.utbot.common.PathUtil
import org.utbot.common.WorkaroundReason
import org.utbot.common.isStatic
import org.utbot.common.workaround
import org.utbot.engine.ArtificialError
import org.utbot.framework.UtSettings
import org.utbot.framework.assemble.assemble
import org.utbot.framework.codegen.domain.ForceStaticMocking
import org.utbot.framework.codegen.domain.ParametrizedTestSource
import org.utbot.framework.codegen.domain.RuntimeExceptionTestsBehaviour.PASS
import org.utbot.framework.codegen.domain.models.CgMethodTestSet
import org.utbot.framework.codegen.domain.builtin.closeMethodIdOrNull
import org.utbot.framework.codegen.domain.builtin.forName
import org.utbot.framework.codegen.domain.builtin.getClass
Expand All @@ -22,8 +21,6 @@ import org.utbot.framework.codegen.domain.models.CgAllocateArray
import org.utbot.framework.codegen.domain.models.CgArrayElementAccess
import org.utbot.framework.codegen.domain.models.CgClassId
import org.utbot.framework.codegen.domain.models.CgDeclaration
import org.utbot.framework.codegen.domain.models.CgDocPreTagStatement
import org.utbot.framework.codegen.domain.models.CgDocRegularStmt
import org.utbot.framework.codegen.domain.models.CgDocumentationComment
import org.utbot.framework.codegen.domain.models.CgEqualTo
import org.utbot.framework.codegen.domain.models.CgErrorTestMethod
Expand All @@ -34,6 +31,7 @@ import org.utbot.framework.codegen.domain.models.CgGetJavaClass
import org.utbot.framework.codegen.domain.models.CgLiteral
import org.utbot.framework.codegen.domain.models.CgMethod
import org.utbot.framework.codegen.domain.models.CgMethodCall
import org.utbot.framework.codegen.domain.models.CgMethodTestSet
import org.utbot.framework.codegen.domain.models.CgMultilineComment
import org.utbot.framework.codegen.domain.models.CgNotNullAssertion
import org.utbot.framework.codegen.domain.models.CgParameterDeclaration
Expand All @@ -53,10 +51,19 @@ import org.utbot.framework.codegen.domain.models.CgValue
import org.utbot.framework.codegen.domain.models.CgVariable
import org.utbot.framework.codegen.domain.models.convertDocToCg
import org.utbot.framework.codegen.domain.models.toStatement
import org.utbot.framework.codegen.services.access.CgCallableAccessManager
import org.utbot.framework.codegen.services.access.CgFieldStateManagerImpl
import org.utbot.framework.codegen.services.framework.TestFrameworkManager
import org.utbot.framework.codegen.tree.CgComponents.getCallableAccessManagerBy
import org.utbot.framework.codegen.tree.CgComponents.getMockFrameworkManagerBy
import org.utbot.framework.codegen.tree.CgComponents.getNameGeneratorBy
import org.utbot.framework.codegen.tree.CgComponents.getStatementConstructorBy
import org.utbot.framework.codegen.tree.CgComponents.getTestFrameworkManagerBy
import org.utbot.framework.codegen.tree.CgComponents.getVariableConstructorBy
import org.utbot.framework.codegen.util.canBeReadFrom
import org.utbot.framework.codegen.util.canBeSetFrom
import org.utbot.framework.codegen.util.equalTo
import org.utbot.framework.codegen.util.inc
import org.utbot.framework.codegen.util.canBeReadFrom
import org.utbot.framework.codegen.util.length
import org.utbot.framework.codegen.util.lessThan
import org.utbot.framework.codegen.util.nullLiteral
Expand All @@ -67,10 +74,10 @@ import org.utbot.framework.plugin.api.BuiltinClassId
import org.utbot.framework.plugin.api.BuiltinMethodId
import org.utbot.framework.plugin.api.ClassId
import org.utbot.framework.plugin.api.CodegenLanguage
import org.utbot.framework.plugin.api.InstrumentedProcessDeathException
import org.utbot.framework.plugin.api.ConstructorId
import org.utbot.framework.plugin.api.ExecutableId
import org.utbot.framework.plugin.api.FieldId
import org.utbot.framework.plugin.api.InstrumentedProcessDeathException
import org.utbot.framework.plugin.api.MethodId
import org.utbot.framework.plugin.api.TimeoutException
import org.utbot.framework.plugin.api.TypeParameters
Expand All @@ -83,79 +90,69 @@ import org.utbot.framework.plugin.api.UtDirectSetFieldModel
import org.utbot.framework.plugin.api.UtEnumConstantModel
import org.utbot.framework.plugin.api.UtExecution
import org.utbot.framework.plugin.api.UtExecutionFailure
import org.utbot.framework.plugin.api.UtExecutionResult
import org.utbot.framework.plugin.api.UtExecutionSuccess
import org.utbot.framework.plugin.api.UtExplicitlyThrownException
import org.utbot.framework.plugin.api.UtLambdaModel
import org.utbot.framework.plugin.api.UtModel
import org.utbot.framework.plugin.api.UtNewInstanceInstrumentation
import org.utbot.framework.plugin.api.UtNullModel
import org.utbot.framework.plugin.api.UtOverflowFailure
import org.utbot.framework.plugin.api.UtPrimitiveModel
import org.utbot.framework.plugin.api.UtReferenceModel
import org.utbot.framework.plugin.api.UtSandboxFailure
import org.utbot.framework.plugin.api.UtStaticMethodInstrumentation
import org.utbot.framework.plugin.api.UtStreamConsumingFailure
import org.utbot.framework.plugin.api.UtSymbolicExecution
import org.utbot.framework.plugin.api.UtTimeoutException
import org.utbot.framework.plugin.api.UtVoidModel
import org.utbot.framework.plugin.api.isNotNull
import org.utbot.framework.plugin.api.isNull
import org.utbot.framework.plugin.api.onFailure
import org.utbot.framework.plugin.api.onSuccess
import org.utbot.framework.plugin.api.util.allSuperTypes
import org.utbot.framework.plugin.api.util.baseStreamClassId
import org.utbot.framework.plugin.api.util.doubleArrayClassId
import org.utbot.framework.plugin.api.util.doubleClassId
import org.utbot.framework.plugin.api.util.doubleStreamClassId
import org.utbot.framework.plugin.api.util.doubleStreamToArrayMethodId
import org.utbot.framework.plugin.api.util.doubleWrapperClassId
import org.utbot.framework.plugin.api.util.executable
import org.utbot.framework.plugin.api.util.jField
import org.utbot.framework.plugin.api.util.floatArrayClassId
import org.utbot.framework.plugin.api.util.floatClassId
import org.utbot.framework.plugin.api.util.floatWrapperClassId
import org.utbot.framework.plugin.api.util.hasField
import org.utbot.framework.plugin.api.util.id
import org.utbot.framework.plugin.api.util.intClassId
import org.utbot.framework.plugin.api.util.intStreamClassId
import org.utbot.framework.plugin.api.util.intStreamToArrayMethodId
import org.utbot.framework.plugin.api.util.isArray
import org.utbot.framework.plugin.api.util.isInaccessibleViaReflection
import org.utbot.framework.plugin.api.util.isInnerClassEnclosingClassReference
import org.utbot.framework.plugin.api.util.isIterableOrMap
import org.utbot.framework.plugin.api.util.isPrimitive
import org.utbot.framework.plugin.api.util.isPrimitiveArray
import org.utbot.framework.plugin.api.util.isPrimitiveWrapper
import org.utbot.framework.plugin.api.util.isRefType
import org.utbot.framework.plugin.api.util.isStatic
import org.utbot.framework.plugin.api.util.isSubtypeOf
import org.utbot.framework.plugin.api.util.jClass
import org.utbot.framework.plugin.api.util.jField
import org.utbot.framework.plugin.api.util.kClass
import org.utbot.framework.plugin.api.util.longStreamClassId
import org.utbot.framework.plugin.api.util.longStreamToArrayMethodId
import org.utbot.framework.plugin.api.util.objectArrayClassId
import org.utbot.framework.plugin.api.util.objectClassId
import org.utbot.framework.plugin.api.util.streamClassId
import org.utbot.framework.plugin.api.util.streamToArrayMethodId
import org.utbot.framework.plugin.api.util.stringClassId
import org.utbot.framework.plugin.api.util.voidClassId
import org.utbot.framework.plugin.api.util.wrapIfPrimitive
import org.utbot.framework.plugin.api.util.isInaccessibleViaReflection
import org.utbot.framework.util.isUnit
import org.utbot.summary.SummarySentenceConstants.TAB
import java.lang.reflect.InvocationTargetException
import java.security.AccessControlException
import java.lang.reflect.ParameterizedType
import org.utbot.framework.UtSettings
import org.utbot.framework.codegen.services.access.CgCallableAccessManager
import org.utbot.framework.codegen.services.access.CgFieldStateManagerImpl
import org.utbot.framework.codegen.services.framework.TestFrameworkManager
import org.utbot.framework.codegen.tree.CgTestClassConstructor.CgComponents.getCallableAccessManagerBy
import org.utbot.framework.codegen.tree.CgTestClassConstructor.CgComponents.getMockFrameworkManagerBy
import org.utbot.framework.codegen.tree.CgTestClassConstructor.CgComponents.getNameGeneratorBy
import org.utbot.framework.codegen.tree.CgTestClassConstructor.CgComponents.getStatementConstructorBy
import org.utbot.framework.codegen.tree.CgTestClassConstructor.CgComponents.getTestFrameworkManagerBy
import org.utbot.framework.codegen.tree.CgTestClassConstructor.CgComponents.getVariableConstructorBy
import org.utbot.framework.plugin.api.UtExecutionResult
import org.utbot.framework.plugin.api.UtOverflowFailure
import org.utbot.framework.plugin.api.UtStreamConsumingFailure
import org.utbot.framework.plugin.api.util.allSuperTypes
import org.utbot.framework.plugin.api.util.baseStreamClassId
import org.utbot.framework.plugin.api.util.doubleStreamClassId
import org.utbot.framework.plugin.api.util.doubleStreamToArrayMethodId
import org.utbot.framework.plugin.api.util.intStreamClassId
import org.utbot.framework.plugin.api.util.intStreamToArrayMethodId
import org.utbot.framework.plugin.api.util.isSubtypeOf
import org.utbot.framework.plugin.api.util.longStreamClassId
import org.utbot.framework.plugin.api.util.longStreamToArrayMethodId
import org.utbot.framework.plugin.api.util.streamClassId
import org.utbot.framework.plugin.api.util.streamToArrayMethodId
import org.utbot.framework.plugin.api.util.isStatic
import java.security.AccessControlException

private const val DEEP_EQUALS_MAX_DEPTH = 5 // TODO move it to plugin settings?

Expand Down
Loading