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 @@ -81,11 +81,13 @@ open class CodeGenerator(
): CodeGeneratorResult = withCustomContext(testClassCustomName) {
context.withTestClassFileScope {
val testClassModel = TestClassModel.fromTestSets(classUnderTest, cgTestSets)
val testClassFile = CgTestClassConstructor(context).construct(testClassModel)
val cgClassConstructor = CgTestClassConstructor(context)
val testClassFile = cgClassConstructor.construct(testClassModel)

CodeGeneratorResult(
generatedCode = renderClassFile(testClassFile),
utilClassKind = UtilClassKind.fromCgContextOrNull(context),
testsGenerationReport = testClassFile.testsGenerationReport
testsGenerationReport = cgClassConstructor.testsGenerationReport
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,16 @@ import org.utbot.framework.codegen.model.tree.CgRegion
import org.utbot.framework.codegen.model.tree.CgSimpleRegion
import org.utbot.framework.codegen.model.tree.CgStaticsRegion
import org.utbot.framework.codegen.model.tree.CgClass
import org.utbot.framework.codegen.model.tree.CgClassFile
import org.utbot.framework.codegen.model.tree.CgRealNestedClassesRegion
import org.utbot.framework.codegen.model.tree.CgTestClassFile
import org.utbot.framework.codegen.model.tree.CgTestMethod
import org.utbot.framework.codegen.model.tree.CgTestMethodCluster
import org.utbot.framework.codegen.model.tree.CgTripleSlashMultilineComment
import org.utbot.framework.codegen.model.tree.CgUtilEntity
import org.utbot.framework.codegen.model.tree.CgUtilMethod
import org.utbot.framework.codegen.model.tree.buildClass
import org.utbot.framework.codegen.model.tree.buildClassBody
import org.utbot.framework.codegen.model.tree.buildTestClassFile
import org.utbot.framework.codegen.model.tree.buildClassFile
import org.utbot.framework.codegen.model.visitor.importUtilMethodDependencies
import org.utbot.framework.plugin.api.ClassId
import org.utbot.framework.plugin.api.MethodId
Expand All @@ -53,16 +53,15 @@ open class CgTestClassConstructor(val context: CgContext) :
private val nameGenerator = getNameGeneratorBy(context)
private val testFrameworkManager = getTestFrameworkManagerBy(context)

protected val testsGenerationReport: TestsGenerationReport = TestsGenerationReport()
val testsGenerationReport = TestsGenerationReport()

/**
* Given a testClass model constructs CgTestClass
*/
open fun construct(testClassModel: TestClassModel): CgTestClassFile {
return buildTestClassFile {
open fun construct(testClassModel: TestClassModel): CgClassFile {
return buildClassFile {
this.declaredClass = withTestClassScope { constructTestClass(testClassModel) }
imports += context.collectedImports
testsGenerationReport = this@CgTestClassConstructor.testsGenerationReport
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,6 @@ class CgClassFileBuilder : CgBuilder<CgClassFile> {

fun buildClassFile(init: CgClassFileBuilder.() -> Unit) = CgClassFileBuilder().apply(init).build()

class CgTestClassFileBuilder : CgBuilder<CgTestClassFile> {
val imports: MutableList<Import> = mutableListOf()
lateinit var declaredClass: CgClass
lateinit var testsGenerationReport: TestsGenerationReport

override fun build() = CgTestClassFile(imports, declaredClass, testsGenerationReport)
}

fun buildTestClassFile(init: CgTestClassFileBuilder.() -> Unit) = CgTestClassFileBuilder().apply(init).build()

class CgClassBuilder : CgBuilder<CgClass> {
lateinit var id: ClassId
val annotations: MutableList<CgAnnotation> = mutableListOf()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ interface CgElement {
// TODO: order of cases is important here due to inheritance between some of the element types
fun <R> accept(visitor: CgVisitor<R>): R = visitor.run {
when (val element = this@CgElement) {
is CgTestClassFile -> visit(element)
is CgClassFile -> visit(element)
is CgClass -> visit(element)
is CgClassBody -> visit(element)
Expand Down Expand Up @@ -125,12 +124,6 @@ open class CgClassFile(
open val declaredClass: CgClass,
): CgElement

data class CgTestClassFile(
override val imports: List<Import>,
override val declaredClass: CgClass,
val testsGenerationReport: TestsGenerationReport
) : CgClassFile(imports, declaredClass)

class CgClass(
val id: ClassId,
val annotations: List<CgAnnotation>,
Expand Down
3 changes: 1 addition & 2 deletions utbot-js/src/main/kotlin/codegen/JsCodeGenerator.kt
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ import org.utbot.framework.codegen.model.constructor.CgMethodTestSet
import org.utbot.framework.codegen.model.constructor.TestClassModel
import org.utbot.framework.codegen.model.constructor.context.CgContext
import org.utbot.framework.codegen.model.constructor.tree.CgTestClassConstructor
import org.utbot.framework.codegen.model.tree.CgTestClassFile
import org.utbot.framework.codegen.model.visitor.CgAbstractRenderer
import org.utbot.framework.plugin.api.CodegenLanguage
import org.utbot.framework.plugin.api.ExecutableId
Expand Down Expand Up @@ -78,7 +77,7 @@ class JsCodeGenerator(
}
}

private fun renderClassFile(file: CgTestClassFile): String {
private fun renderClassFile(file: CgClassFile): String {
val renderer = CgAbstractRenderer.makeRenderer(context)
file.accept(renderer)
return renderer.toString()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,10 @@ class PythonCodeGenerator(
context.withTestClassFileScope {
val testClassModel = TestClassModel(classUnderTest, cgTestSets)
context.collectedImports.addAll(importModules)
val testClassFile = PythonCgTestClassConstructor(context).construct(testClassModel)
CodeGeneratorResult(renderClassFile(testClassFile), testClassFile.testsGenerationReport)
val cgTestClassConstructor = PythonCgTestClassConstructor(context)

val testClassFile = cgTestClassConstructor.construct(testClassModel)
CodeGeneratorResult(renderClassFile(testClassFile), cgTestClassConstructor.testsGenerationReport)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,17 @@ package org.utbot.python.framework.codegen.model.constructor.tree
import org.utbot.framework.codegen.model.constructor.TestClassModel
import org.utbot.framework.codegen.model.constructor.context.CgContext
import org.utbot.framework.codegen.model.constructor.tree.CgTestClassConstructor
import org.utbot.framework.codegen.model.tree.CgTestClassFile
import org.utbot.framework.codegen.model.tree.buildTestClassFile
import org.utbot.framework.codegen.model.tree.CgClassFile
import org.utbot.framework.codegen.model.tree.buildClassFile

internal class PythonCgTestClassConstructor(context: CgContext) : CgTestClassConstructor(context) {
override fun construct(testClassModel: TestClassModel): CgTestClassFile {
return buildTestClassFile {
override fun construct(testClassModel: TestClassModel): CgClassFile {
return buildClassFile {
this.declaredClass = withTestClassScope {
with(currentTestClassContext) { testClassSuperclass = testFramework.testSuperClass }
constructTestClass(testClassModel)
}
imports.addAll(context.collectedImports)
testsGenerationReport = this@PythonCgTestClassConstructor.testsGenerationReport
}
}
}