Skip to content

Commit 18dafdf

Browse files
Mock renderer added
1 parent bc988d4 commit 18dafdf

File tree

20 files changed

+267
-245
lines changed

20 files changed

+267
-245
lines changed

buildSrc/src/main/java/SettingsTemplateHelper.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public static void proceed(Project project) {
4747
if (s.startsWith("enum class ")) {//Enum class declaration
4848
enums.add(new EnumInfo(s.substring(11, s.length() - 2)));
4949
} else if (s.matches("[A-Z_]+,?") && !enums.isEmpty()) {//Enum value
50-
var enumValue = s.substring(0, s.length());
50+
String enumValue = s.substring(0, s.length());
5151
if (enumValue.endsWith(",")) enumValue = enumValue.substring(0, enumValue.length() - 1);
5252
enums.get(enums.size() - 1).docMap.put(enumValue, new ArrayList<>(docAcc));
5353
} else if (s.startsWith("const val ")) {//Constand value to be substitute later if need
@@ -66,9 +66,9 @@ public static void proceed(Project project) {
6666
s = acc.toString();
6767
acc.delete(0, acc.length());
6868
if (s.startsWith("var") || s.startsWith("val")) {
69-
var i = s.indexOf(" by ", 3);
69+
int i = s.indexOf(" by ", 3);
7070
if (i > 0) {
71-
var key = s.substring(3, i).trim();
71+
String key = s.substring(3, i).trim();
7272
if (key.contains(":")) {
7373
key = key.substring(0, key.lastIndexOf(':'));
7474
}
@@ -91,7 +91,7 @@ public static void proceed(Project project) {
9191
i = s.indexOf('(', i);
9292
if (i > 0) {
9393
s = s.substring(i + 1);
94-
var defaultValue = s.substring(0, s.indexOf(')')).trim();
94+
String defaultValue = s.substring(0, s.indexOf(')')).trim();
9595
if (defaultValue.contains(",")) defaultValue = defaultValue.substring(0, defaultValue.indexOf(','));
9696
defaultValue = dictionary.getOrDefault(defaultValue, defaultValue);
9797
if (defaultValue.matches("[\\d_]+L")) {

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
@@ -44,6 +44,7 @@ interface CgElement {
4444
is CgAuxiliaryClass -> visit(element)
4545
is CgUtilMethod -> visit(element)
4646
is CgTestMethod -> visit(element)
47+
is CgMockMethod -> visit(element)
4748
is CgErrorTestMethod -> visit(element)
4849
is CgParameterizedTestDataProviderMethod -> visit(element)
4950
is CgCommentedAnnotation -> visit(element)
@@ -132,7 +133,7 @@ class CgClass(
132133
val body: CgClassBody,
133134
val isStatic: Boolean,
134135
val isNested: Boolean,
135-
): CgElement {
136+
): CgStatement {
136137
val packageName
137138
get() = id.packageName
138139

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

285+
class CgMockMethod(
286+
override val name: String,
287+
override val returnType: ClassId,
288+
override val parameters: List<CgParameterDeclaration>,
289+
override val statements: List<CgStatement>,
290+
override val exceptions: Set<ClassId>,
291+
override val annotations: List<CgAnnotation>,
292+
override val documentation: CgDocumentationComment = CgDocumentationComment(emptyList()),
293+
override val requiredFields: List<CgParameterDeclaration> = emptyList(),
294+
) : CgMethod(false)
295+
284296
class CgErrorTestMethod(
285297
override val name: String,
286298
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)
@@ -757,6 +767,7 @@ abstract class CgAbstractRenderer(
757767
protected val maxParametersAmountInOneLine = 3
758768

759769
protected abstract fun renderMethodSignature(element: CgTestMethod)
770+
protected abstract fun renderMethodSignature(element: CgMockMethod)
760771
protected abstract fun renderMethodSignature(element: CgErrorTestMethod)
761772
protected abstract fun renderMethodSignature(element: CgParameterizedTestDataProviderMethod)
762773

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)