Skip to content

Commit ea309c6

Browse files
committed
Fix compilation
1 parent e64c04f commit ea309c6

File tree

5 files changed

+85
-29
lines changed

5 files changed

+85
-29
lines changed

utbot-framework/src/main/kotlin/org/utbot/framework/codegen/CodeGenerator.kt

Lines changed: 50 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,15 @@ import org.utbot.framework.codegen.domain.StaticsMocking
99
import org.utbot.framework.codegen.domain.TestFramework
1010
import org.utbot.framework.codegen.domain.models.CgMethodTestSet
1111
import org.utbot.framework.codegen.domain.context.CgContext
12-
import org.utbot.framework.codegen.domain.models.SimpleTestClassModelBuilder
13-
import org.utbot.framework.codegen.domain.models.SpringTestClassModelBuilder
14-
import org.utbot.framework.codegen.domain.models.TestClassModel
12+
import org.utbot.framework.codegen.domain.models.CgClassFile
13+
import org.utbot.framework.codegen.domain.models.builders.SimpleTestClassModelBuilder
14+
import org.utbot.framework.codegen.domain.models.builders.SpringTestClassModelBuilder
1515
import org.utbot.framework.codegen.renderer.CgAbstractRenderer
1616
import org.utbot.framework.codegen.reports.TestsGenerationReport
1717
import org.utbot.framework.codegen.tree.CgSimpleTestClassConstructor
1818
import org.utbot.framework.codegen.tree.ututils.UtilClassKind
1919
import org.utbot.framework.codegen.services.language.CgLanguageAssistant
20+
import org.utbot.framework.codegen.tree.CgSpringTestClassConstructor
2021
import org.utbot.framework.plugin.api.ClassId
2122
import org.utbot.framework.plugin.api.CodegenLanguage
2223
import org.utbot.framework.plugin.api.ExecutableId
@@ -75,33 +76,60 @@ open class CodeGenerator(
7576
val cgTestSets = testSets.map { CgMethodTestSet(it) }.toList()
7677
return withCustomContext(testClassCustomName) {
7778
context.withTestClassFileScope {
78-
val astConstructor = CgSimpleTestClassConstructor(context)
79-
val renderer = CgAbstractRenderer.makeRenderer(context)
79+
if (context.isSpringClass) {
80+
generateForSpringClass(cgTestSets)
81+
} else {
82+
generateForSimpleClass(cgTestSets)
83+
}
84+
}
85+
}
86+
}
8087

81-
val testClassModelBuilder =
82-
if (context.isSpringClass) SpringTestClassModelBuilder() else SimpleTestClassModelBuilder()
88+
private fun generateForSimpleClass(testSets: List<CgMethodTestSet>): CodeGeneratorResult {
89+
val astConstructor = CgSimpleTestClassConstructor(context)
90+
val testClassModel = SimpleTestClassModelBuilder().createTestClassModel(classUnderTest, testSets)
8391

84-
val testClassModel = testClassModelBuilder.createClassModel(classUnderTest, cgTestSets)
92+
logger.info { "Code generation phase started at ${now()}" }
93+
val testClassFile = astConstructor.construct(testClassModel)
94+
logger.info { "Code generation phase finished at ${now()}" }
8595

86-
fun now() = LocalDateTime.now().format(DateTimeFormatter.ofPattern("HH:mm:ss.SSS"))
96+
val generatedCode = renderToString(testClassFile)
8797

88-
logger.info { "Code generation phase started at ${now()}" }
89-
val testClassFile = astConstructor.construct(testClassModel)
90-
logger.info { "Code generation phase finished at ${now()}" }
98+
return CodeGeneratorResult(
99+
generatedCode = generatedCode,
100+
utilClassKind = UtilClassKind.fromCgContextOrNull(context),
101+
testsGenerationReport = astConstructor.testsGenerationReport
102+
)
103+
}
91104

92-
logger.info { "Rendering phase started at ${now()}" }
93-
testClassFile.accept(renderer)
94-
logger.info { "Rendering phase finished at ${now()}" }
105+
private fun generateForSpringClass(testSets: List<CgMethodTestSet>): CodeGeneratorResult {
106+
val astConstructor = CgSpringTestClassConstructor(context)
107+
val testClassModel = SpringTestClassModelBuilder().createTestClassModel(classUnderTest, testSets)
95108

96-
CodeGeneratorResult(
97-
generatedCode = renderer.toString(),
98-
utilClassKind = UtilClassKind.fromCgContextOrNull(context),
99-
testsGenerationReport = astConstructor.testsGenerationReport
100-
)
101-
}
102-
}
109+
logger.info { "Code generation phase started at ${now()}" }
110+
val testClassFile = astConstructor.construct(testClassModel)
111+
logger.info { "Code generation phase finished at ${now()}" }
112+
113+
val generatedCode = renderToString(testClassFile)
114+
115+
return CodeGeneratorResult(
116+
generatedCode = generatedCode,
117+
utilClassKind = UtilClassKind.fromCgContextOrNull(context),
118+
testsGenerationReport = TestsGenerationReport()
119+
)
120+
}
121+
122+
private fun renderToString(testClassFile: CgClassFile): String {
123+
logger.info { "Rendering phase started at ${now()}" }
124+
val renderer = CgAbstractRenderer.makeRenderer(context)
125+
testClassFile.accept(renderer)
126+
logger.info { "Rendering phase finished at ${now()}" }
127+
128+
return renderer.toString()
103129
}
104130

131+
private fun now() = LocalDateTime.now().format(DateTimeFormatter.ofPattern("HH:mm:ss.SSS"))
132+
105133
/**
106134
* Wrapper function that configures context as needed for utbot-online:
107135
* - turns on imports optimization in code generator

utbot-framework/src/main/kotlin/org/utbot/framework/codegen/domain/models/SimpleTestClassModelBuilder.kt renamed to utbot-framework/src/main/kotlin/org/utbot/framework/codegen/domain/models/builders/SimpleTestClassModelBuilder.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
1-
package org.utbot.framework.codegen.domain.models
1+
package org.utbot.framework.codegen.domain.models.builders
22

3+
import org.utbot.framework.codegen.domain.models.CgMethodTestSet
4+
import org.utbot.framework.codegen.domain.models.SimpleTestClassModel
35
import org.utbot.framework.plugin.api.ClassId
46
import org.utbot.framework.plugin.api.util.enclosingClass
57

6-
open class SimpleTestClassModelBuilder {
7-
open fun createClassModel(classUnderTest: ClassId, testSets: List<CgMethodTestSet>): TestClassModel {
8+
open class SimpleTestClassModelBuilder: TestClassModelBuilder() {
9+
override fun createTestClassModel(classUnderTest: ClassId, testSets: List<CgMethodTestSet>): SimpleTestClassModel {
810
// For each class stores list of methods declared in this class (methods from nested classes are excluded)
911
val class2methodTestSets = testSets.groupBy { it.executableId.classId }
1012

utbot-framework/src/main/kotlin/org/utbot/framework/codegen/domain/models/SpringTestClassModelBuilder.kt renamed to utbot-framework/src/main/kotlin/org/utbot/framework/codegen/domain/models/builders/SpringTestClassModelBuilder.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1-
package org.utbot.framework.codegen.domain.models
1+
package org.utbot.framework.codegen.domain.models.builders
22

3+
import org.utbot.framework.codegen.domain.models.CgMethodTestSet
4+
import org.utbot.framework.codegen.domain.models.SpringTestClassModel
35
import org.utbot.framework.plugin.api.ClassId
46
import org.utbot.framework.plugin.api.UtArrayModel
57
import org.utbot.framework.plugin.api.UtAssembleModel
@@ -15,10 +17,10 @@ import org.utbot.framework.plugin.api.UtNullModel
1517
import org.utbot.framework.plugin.api.UtPrimitiveModel
1618
import org.utbot.framework.plugin.api.UtVoidModel
1719

18-
class SpringTestClassModelBuilder: SimpleTestClassModelBuilder() {
20+
class SpringTestClassModelBuilder: TestClassModelBuilder() {
1921

20-
override fun createClassModel(classUnderTest: ClassId, testSets: List<CgMethodTestSet>): SpringTestClassModel {
21-
val baseModel = super.createClassModel(classUnderTest, testSets)
22+
override fun createTestClassModel(classUnderTest: ClassId, testSets: List<CgMethodTestSet>): SpringTestClassModel {
23+
val baseModel = SimpleTestClassModelBuilder().createTestClassModel(classUnderTest, testSets)
2224
val mockedClasses = collectMockedClassIds(classUnderTest, testSets)
2325

2426
return SpringTestClassModel(
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package org.utbot.framework.codegen.domain.models.builders
2+
3+
import org.utbot.framework.codegen.domain.models.CgMethodTestSet
4+
import org.utbot.framework.codegen.domain.models.TestClassModel
5+
import org.utbot.framework.plugin.api.ClassId
6+
7+
abstract class TestClassModelBuilder {
8+
abstract fun createTestClassModel(classUnderTest: ClassId, testSets: List<CgMethodTestSet>): TestClassModel
9+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package org.utbot.framework.codegen.tree
2+
3+
import org.utbot.framework.codegen.domain.context.CgContext
4+
import org.utbot.framework.codegen.domain.models.CgClassBody
5+
import org.utbot.framework.codegen.domain.models.SpringTestClassModel
6+
7+
class CgSpringTestClassConstructor(context: CgContext): CgTestClassConstructorBase<SpringTestClassModel>(context) {
8+
9+
override val methodConstructor: CgMethodConstructor
10+
get() = TODO("Not yet implemented")
11+
12+
override fun constructTestClassBody(testClassModel: SpringTestClassModel): CgClassBody {
13+
TODO("Not yet implemented")
14+
}
15+
}

0 commit comments

Comments
 (0)