Skip to content

Commit 684c56a

Browse files
authored
Added a fix for resolving names to static inner classes (#1212)
* Fixed a bug with unresolved links to methods * Fixed a bug with unresolved links to methods
1 parent 80bd4f3 commit 684c56a

File tree

4 files changed

+136
-3
lines changed

4 files changed

+136
-3
lines changed

utbot-sample/src/main/java/org/utbot/examples/unsafe/UnsafeWithField.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
public class UnsafeWithField {
66
Field field;
77

8-
Field setField(Field f) {
8+
public Field setField(Field f) {
99
field = f;
1010
return Field.INTEGER;
1111
}
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
package examples.enums
2+
3+
import examples.CustomJavaDocTagsEnabler
4+
import examples.SummaryTestCaseGeneratorTest
5+
import org.junit.jupiter.api.Test
6+
import org.junit.jupiter.api.extension.ExtendWith
7+
import org.utbot.examples.enums.ComplexEnumExamples
8+
import org.utbot.framework.plugin.api.MockStrategyApi
9+
import org.utbot.tests.infrastructure.DoNotCalculate
10+
11+
@ExtendWith(CustomJavaDocTagsEnabler::class)
12+
class ComplexEnumExampleTest : SummaryTestCaseGeneratorTest(
13+
ComplexEnumExamples::class
14+
) {
15+
@Test
16+
fun testUnsafeWithField() {
17+
val summary1 = "@utbot.classUnderTest {@link ComplexEnumExamples}\n" +
18+
"@utbot.methodUnderTest {@link org.utbot.examples.enums.ComplexEnumExamples#countEqualColors(org.utbot.examples.enums.ComplexEnumExamples.Color,org.utbot.examples.enums.ComplexEnumExamples.Color,org.utbot.examples.enums.ComplexEnumExamples.Color)}\n" +
19+
"@utbot.executesCondition {@code (b == a): False}\n" +
20+
"@utbot.executesCondition {@code (c == a): False}\n" +
21+
"@utbot.executesCondition {@code (a == b): False}\n" +
22+
"@utbot.executesCondition {@code (c == b): False}\n" +
23+
"@utbot.executesCondition {@code (equalToA > equalToB): False}\n" +
24+
"@utbot.returnsFrom {@code return equalToB;}"
25+
val summary2 = "@utbot.classUnderTest {@link ComplexEnumExamples}\n" +
26+
"@utbot.methodUnderTest {@link org.utbot.examples.enums.ComplexEnumExamples#countEqualColors(org.utbot.examples.enums.ComplexEnumExamples.Color,org.utbot.examples.enums.ComplexEnumExamples.Color,org.utbot.examples.enums.ComplexEnumExamples.Color)}\n" +
27+
"@utbot.executesCondition {@code (b == a): False}\n" +
28+
"@utbot.executesCondition {@code (c == a): True}\n" +
29+
"@utbot.executesCondition {@code (a == b): False}\n" +
30+
"@utbot.executesCondition {@code (c == b): False}\n" +
31+
"@utbot.executesCondition {@code (equalToA > equalToB): True}\n" +
32+
"@utbot.returnsFrom {@code return equalToA;}\n"
33+
val summary3 = "@utbot.classUnderTest {@link ComplexEnumExamples}\n" +
34+
"@utbot.methodUnderTest {@link org.utbot.examples.enums.ComplexEnumExamples#countEqualColors(org.utbot.examples.enums.ComplexEnumExamples.Color,org.utbot.examples.enums.ComplexEnumExamples.Color,org.utbot.examples.enums.ComplexEnumExamples.Color)}\n" +
35+
"@utbot.executesCondition {@code (b == a): False}\n" +
36+
"@utbot.executesCondition {@code (c == a): False}\n" +
37+
"@utbot.executesCondition {@code (a == b): False}\n" +
38+
"@utbot.executesCondition {@code (c == b): True}\n" +
39+
"@utbot.executesCondition {@code (equalToA > equalToB): False}\n" +
40+
"@utbot.returnsFrom {@code return equalToB;}\n"
41+
val summary4 = "@utbot.classUnderTest {@link ComplexEnumExamples}\n" +
42+
"@utbot.methodUnderTest {@link org.utbot.examples.enums.ComplexEnumExamples#countEqualColors(org.utbot.examples.enums.ComplexEnumExamples.Color,org.utbot.examples.enums.ComplexEnumExamples.Color,org.utbot.examples.enums.ComplexEnumExamples.Color)}\n" +
43+
"@utbot.executesCondition {@code (b == a): True}\n" +
44+
"@utbot.executesCondition {@code (c == a): True}\n" +
45+
"@utbot.executesCondition {@code (a == b): True}\n" +
46+
"@utbot.executesCondition {@code (c == b): True}\n" +
47+
"@utbot.executesCondition {@code (equalToA > equalToB): False}\n" +
48+
"@utbot.returnsFrom {@code return equalToB;}"
49+
50+
val methodName1 = "testCountEqualColors_EqualToALessOrEqualEqualToB"
51+
val methodName2 = "testCountEqualColors_EqualToAGreaterThanEqualToB"
52+
val methodName3 = "testCountEqualColors_EqualToALessOrEqualEqualToB_1"
53+
val methodName4 = "testCountEqualColors_AEqualsB"
54+
55+
val displayName1 = "b == a : False -> return equalToB"
56+
val displayName2 = "equalToA > equalToB : True -> return equalToA"
57+
val displayName3 = "b == a : False -> return equalToB"
58+
val displayName4 = "b == a : True -> return equalToB"
59+
60+
val summaryKeys = listOf(
61+
summary1,
62+
summary2,
63+
summary3,
64+
summary4
65+
)
66+
67+
val displayNames = listOf(
68+
displayName1,
69+
displayName2,
70+
displayName3,
71+
displayName4
72+
)
73+
74+
val methodNames = listOf(
75+
methodName1,
76+
methodName2,
77+
methodName3,
78+
methodName4
79+
)
80+
81+
82+
val method = ComplexEnumExamples::countEqualColors
83+
val mockStrategy = MockStrategyApi.NO_MOCKS
84+
val coverage = DoNotCalculate
85+
86+
summaryCheck(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
87+
}
88+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package examples.unsafe
2+
3+
import examples.CustomJavaDocTagsEnabler
4+
import examples.SummaryTestCaseGeneratorTest
5+
import org.junit.jupiter.api.Test
6+
import org.junit.jupiter.api.extension.ExtendWith
7+
import org.utbot.examples.unsafe.UnsafeWithField
8+
import org.utbot.framework.plugin.api.MockStrategyApi
9+
import org.utbot.tests.infrastructure.DoNotCalculate
10+
11+
@ExtendWith(CustomJavaDocTagsEnabler::class)
12+
class UnsafeWithFieldTest : SummaryTestCaseGeneratorTest(
13+
UnsafeWithField::class
14+
) {
15+
@Test
16+
fun testUnsafeWithField() {
17+
val summary1 = "@utbot.classUnderTest {@link UnsafeWithField}\n" +
18+
"@utbot.methodUnderTest {@link org.utbot.examples.unsafe.UnsafeWithField#setField(java.text.NumberFormat.Field)}\n" +
19+
"@utbot.returnsFrom {@code return Field.INTEGER;}"
20+
21+
val methodName1 = "testSetField_ReturnFieldINTEGER"
22+
23+
val displayName1 = "-> return Field.INTEGER"
24+
25+
val summaryKeys = listOf(
26+
summary1
27+
)
28+
29+
val displayNames = listOf(
30+
displayName1
31+
)
32+
33+
val methodNames = listOf(
34+
methodName1
35+
)
36+
37+
val method = UnsafeWithField::setField
38+
val mockStrategy = MockStrategyApi.NO_MOCKS
39+
val coverage = DoNotCalculate
40+
41+
summaryCheck(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
42+
}
43+
}

utbot-summary/src/main/kotlin/org/utbot/summary/comment/customtags/CustomTagsUtil.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,14 @@ private fun formMethodReferenceForJavaDoc(
4949
methodParametersAsString: String,
5050
isPrivate: Boolean
5151
): String {
52+
// to avoid $ in names for static inner classes
5253
val prettyClassName: String = className.replace(JAVA_CLASS_DELIMITER, JAVA_DOC_CLASS_DELIMITER)
54+
val validMethodParameters = methodParametersAsString.replace(JAVA_CLASS_DELIMITER, JAVA_DOC_CLASS_DELIMITER)
5355

54-
val text = if (methodParametersAsString == EMPTY_STRING) {
56+
val text = if (validMethodParameters == EMPTY_STRING) {
5557
"$prettyClassName#$methodName()"
5658
} else {
57-
"$prettyClassName#$methodName($methodParametersAsString)"
59+
"$prettyClassName#$methodName($validMethodParameters)"
5860
}
5961

6062
return if (isPrivate) {

0 commit comments

Comments
 (0)