Skip to content

Commit 554a9c9

Browse files
Mock renderer added
1 parent ddaf943 commit 554a9c9

File tree

15 files changed

+212
-109
lines changed

15 files changed

+212
-109
lines changed

utbot-framework/src/main/kotlin/org/utbot/framework/codegen/domain/models/CgElement.kt

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ interface CgElement {
4545
is CgAuxiliaryClass -> visit(element)
4646
is CgUtilMethod -> visit(element)
4747
is CgTestMethod -> visit(element)
48+
is CgMockMethod -> visit(element)
4849
is CgErrorTestMethod -> visit(element)
4950
is CgParameterizedTestDataProviderMethod -> visit(element)
5051
is CgCommentedAnnotation -> visit(element)
@@ -133,7 +134,7 @@ class CgClass(
133134
val body: CgClassBody,
134135
val isStatic: Boolean,
135136
val isNested: Boolean,
136-
): CgElement {
137+
): CgStatement {
137138
val packageName
138139
get() = id.packageName
139140

@@ -282,6 +283,17 @@ class CgTestMethod(
282283
override val requiredFields: List<CgParameterDeclaration> = emptyList(),
283284
) : CgMethod(false)
284285

286+
class CgMockMethod(
287+
override val name: String,
288+
override val returnType: ClassId,
289+
override val parameters: List<CgParameterDeclaration>,
290+
override val statements: List<CgStatement>,
291+
override val exceptions: Set<ClassId>,
292+
override val annotations: List<CgAnnotation>,
293+
override val documentation: CgDocumentationComment = CgDocumentationComment(emptyList()),
294+
override val requiredFields: List<CgParameterDeclaration> = emptyList(),
295+
) : CgMethod(false)
296+
285297
class CgErrorTestMethod(
286298
override val name: String,
287299
override val statements: List<CgStatement>,

utbot-framework/src/main/kotlin/org/utbot/framework/codegen/renderer/CgAbstractRenderer.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ import org.utbot.framework.codegen.domain.models.CgStaticFieldAccess
7474
import org.utbot.framework.codegen.domain.models.CgStaticRunnable
7575
import org.utbot.framework.codegen.domain.models.CgStaticsRegion
7676
import org.utbot.framework.codegen.domain.models.CgTestMethod
77+
import org.utbot.framework.codegen.domain.models.CgMockMethod
7778
import org.utbot.framework.codegen.domain.models.CgTestMethodCluster
7879
import org.utbot.framework.codegen.domain.models.CgThisInstance
7980
import org.utbot.framework.codegen.domain.models.CgThrowStatement
@@ -246,6 +247,15 @@ abstract class CgAbstractRenderer(
246247
visit(element as CgMethod)
247248
}
248249

250+
override fun visit(element: CgMockMethod) {
251+
renderMethodDocumentation(element)
252+
for (annotation in element.annotations) {
253+
annotation.accept(this)
254+
}
255+
renderMethodSignature(element)
256+
visit(element as CgMethod)
257+
}
258+
249259
override fun visit(element: CgErrorTestMethod) {
250260
renderMethodDocumentation(element)
251261
renderMethodSignature(element)
@@ -758,6 +768,7 @@ abstract class CgAbstractRenderer(
758768
protected val maxParametersAmountInOneLine = 3
759769

760770
protected abstract fun renderMethodSignature(element: CgTestMethod)
771+
protected abstract fun renderMethodSignature(element: CgMockMethod)
761772
protected abstract fun renderMethodSignature(element: CgErrorTestMethod)
762773
protected abstract fun renderMethodSignature(element: CgParameterizedTestDataProviderMethod)
763774

utbot-framework/src/main/kotlin/org/utbot/framework/codegen/renderer/CgJavaRenderer.kt

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,16 +35,13 @@ import org.utbot.framework.codegen.domain.models.CgClassBody
3535
import org.utbot.framework.codegen.domain.models.CgFormattedString
3636
import org.utbot.framework.codegen.domain.models.CgLiteral
3737
import org.utbot.framework.codegen.domain.models.CgTestMethod
38+
import org.utbot.framework.codegen.domain.models.CgMockMethod
3839
import org.utbot.framework.codegen.domain.models.CgTypeCast
3940
import org.utbot.framework.codegen.domain.models.CgVariable
4041
import org.utbot.framework.codegen.util.nullLiteral
4142
import org.utbot.framework.plugin.api.ClassId
4243
import org.utbot.framework.plugin.api.TypeParameters
43-
import org.utbot.framework.plugin.api.util.isFinal
44-
import org.utbot.framework.plugin.api.util.isPrivate
45-
import org.utbot.framework.plugin.api.util.isProtected
46-
import org.utbot.framework.plugin.api.util.isPublic
47-
import org.utbot.framework.plugin.api.util.wrapperByPrimitive
44+
import org.utbot.framework.plugin.api.util.*
4845

4946
internal class CgJavaRenderer(context: CgRendererContext, printer: CgPrinter = CgPrinterImpl()) :
5047
CgAbstractRenderer(context, printer) {
@@ -241,6 +238,25 @@ internal class CgJavaRenderer(context: CgRendererContext, printer: CgPrinter = C
241238
renderExceptions(element)
242239
}
243240

241+
private fun getTypeStringRepresentation(typeId: ClassId): String =
242+
when {
243+
typeId.isArray -> getTypeStringRepresentation(typeId.elementClassId!!) + "[]"
244+
else -> typeId.toString()
245+
}
246+
247+
override fun renderMethodSignature(element: CgMockMethod) {
248+
val returnType = element.returnType.asString()
249+
print("public $returnType ")
250+
print(element.name)
251+
252+
print("(")
253+
val newLinesNeeded = element.parameters.size > maxParametersAmountInOneLine
254+
element.parameters.renderSeparated(newLinesNeeded)
255+
print(")")
256+
257+
renderExceptions(element)
258+
}
259+
244260
override fun renderMethodSignature(element: CgErrorTestMethod) {
245261
// error test methods always have void return type
246262
println("public void ${element.name}()")

utbot-framework/src/main/kotlin/org/utbot/framework/codegen/renderer/CgKotlinRenderer.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ import org.utbot.framework.codegen.domain.models.CgClassBody
4141
import org.utbot.framework.codegen.domain.models.CgFormattedString
4242
import org.utbot.framework.codegen.domain.models.CgLiteral
4343
import org.utbot.framework.codegen.domain.models.CgTestMethod
44+
import org.utbot.framework.codegen.domain.models.CgMockMethod
4445
import org.utbot.framework.codegen.domain.models.CgTypeCast
4546
import org.utbot.framework.codegen.domain.models.CgValue
4647
import org.utbot.framework.codegen.domain.models.CgVariable
@@ -403,6 +404,16 @@ internal class CgKotlinRenderer(context: CgRendererContext, printer: CgPrinter =
403404
renderMethodReturnType(element)
404405
}
405406

407+
override fun renderMethodSignature(element: CgMockMethod) {
408+
print("fun ")
409+
print(element.name)
410+
print("(")
411+
val newLines = element.parameters.size > maxParametersAmountInOneLine
412+
element.parameters.renderSeparated(newLines)
413+
print(")")
414+
renderMethodReturnType(element)
415+
}
416+
406417
override fun renderMethodSignature(element: CgErrorTestMethod) {
407418
// error test methods always have void return type
408419
print("fun ")

utbot-framework/src/main/kotlin/org/utbot/framework/codegen/renderer/CgVisitor.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ import org.utbot.framework.codegen.domain.models.CgDocRegularLineStmt
7979
import org.utbot.framework.codegen.domain.models.CgFormattedString
8080
import org.utbot.framework.codegen.domain.models.CgNestedClassesRegion
8181
import org.utbot.framework.codegen.domain.models.CgTestMethod
82+
import org.utbot.framework.codegen.domain.models.CgMockMethod
8283
import org.utbot.framework.codegen.domain.models.CgTestMethodCluster
8384
import org.utbot.framework.codegen.domain.models.CgThisInstance
8485
import org.utbot.framework.codegen.domain.models.CgThrowStatement
@@ -111,6 +112,7 @@ interface CgVisitor<R> {
111112
// Methods
112113
fun visit(element: CgMethod): R
113114
fun visit(element: CgTestMethod): R
115+
fun visit(element: CgMockMethod): R
114116
fun visit(element: CgErrorTestMethod): R
115117
fun visit(element: CgParameterizedTestDataProviderMethod): R
116118

0 commit comments

Comments
 (0)