Skip to content

Added a few tests to check generated clustering comments #384 #595

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jul 27, 2022
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 @@ -5,24 +5,16 @@ import org.utbot.common.WorkaroundReason
import org.utbot.common.workaround
import org.utbot.examples.UtValueTestCaseChecker
import org.utbot.examples.CoverageMatcher
import org.utbot.examples.DoNotCalculate
import org.utbot.framework.UtSettings.checkNpeInNestedMethods
import org.utbot.framework.UtSettings.checkNpeInNestedNotPrivateMethods
import org.utbot.framework.UtSettings.checkSolverTimeoutMillis
import org.utbot.framework.codegen.TestExecution
import org.utbot.framework.plugin.api.CodegenLanguage
import org.utbot.framework.plugin.api.MockStrategyApi
import org.utbot.framework.plugin.api.UtExecution
import org.utbot.framework.plugin.api.UtMethod
import org.utbot.framework.plugin.api.*
import org.utbot.framework.plugin.api.util.UtContext
import org.utbot.summary.comment.nextSynonyms
import org.utbot.summary.summarize
import kotlin.reflect.KClass
import kotlin.reflect.KFunction
import kotlin.reflect.KFunction1
import kotlin.reflect.KFunction2
import kotlin.reflect.KFunction3
import kotlin.reflect.KFunction4


private const val NEW_LINE = "\n"
Expand Down Expand Up @@ -50,49 +42,14 @@ open class SummaryTestCaseGeneratorTest(
cookie.close()
}

protected inline fun <reified R> checkNoArguments(
method: KFunction1<*, R>,
coverage: CoverageMatcher = DoNotCalculate,
mockStrategy: MockStrategyApi = MockStrategyApi.NO_MOCKS,
summaryKeys: List<String>,
methodNames: List<String> = listOf(),
displayNames: List<String> = listOf()
) = check(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)

protected inline fun <reified T, reified R> checkOneArgument(
method: KFunction2<*, T, R>,
coverage: CoverageMatcher = DoNotCalculate,
mockStrategy: MockStrategyApi = MockStrategyApi.NO_MOCKS,
summaryKeys: List<String>,
methodNames: List<String> = listOf(),
displayNames: List<String> = listOf()
) = check(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)

protected inline fun <reified T1, reified T2, reified R> checkTwoArguments(
method: KFunction3<*, T1, T2, R>,
coverage: CoverageMatcher = DoNotCalculate,
mockStrategy: MockStrategyApi = MockStrategyApi.NO_MOCKS,
summaryKeys: List<String>,
methodNames: List<String> = listOf(),
displayNames: List<String> = listOf()
) = check(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)

protected inline fun <reified T1, reified T2, reified T3, reified R> checkThreeArguments(
method: KFunction4<*, T1, T2, T3, R>,
coverage: CoverageMatcher = DoNotCalculate,
mockStrategy: MockStrategyApi = MockStrategyApi.NO_MOCKS,
summaryKeys: List<String>,
methodNames: List<String> = listOf(),
displayNames: List<String> = listOf()
) = check(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)

inline fun <reified R> check(
inline fun <reified R> summaryCheck(
method: KFunction<R>,
mockStrategy: MockStrategyApi,
coverageMatcher: CoverageMatcher,
summaryKeys: List<String>,
methodNames: List<String>,
displayNames: List<String>
methodNames: List<String> = listOf(),
displayNames: List<String> = listOf(),
clusterInfo: List<Pair<UtClusterInfo, Int>> = listOf()
) {
workaround(WorkaroundReason.HACK) {
// @todo change to the constructor parameter
Expand All @@ -102,11 +59,12 @@ open class SummaryTestCaseGeneratorTest(
}
val utMethod = UtMethod.from(method)
val testSet = executionsModel(utMethod, mockStrategy)
testSet.summarize(searchDirectory)
val testSetWithSummarization = testSet.summarize(searchDirectory)

testSet.executions.checkMatchersWithTextSummary(summaryKeys)
testSet.executions.checkMatchersWithMethodNames(methodNames)
testSet.executions.checkMatchersWithDisplayNames(displayNames)
testSetWithSummarization.executions.checkMatchersWithTextSummary(summaryKeys)
testSetWithSummarization.executions.checkMatchersWithMethodNames(methodNames)
testSetWithSummarization.executions.checkMatchersWithDisplayNames(displayNames)
testSetWithSummarization.checkClusterInfo(clusterInfo)
}

/**
Expand All @@ -124,6 +82,37 @@ open class SummaryTestCaseGeneratorTest(
return result
}

// TODO: if next synonyms and normalize function will be removed, this method could be moved as overridden equals to the dataClass [UtClusterInfo]
private fun UtClusterInfo.normalizedAndEquals(other: UtClusterInfo): Boolean {
if (header != other.header) return false

return if (content == null) {
other.content == null
} else {
if (other.content == null) false
else {
content!!.normalize() == other.content!!.normalize()
}
}
}

/**
* Verifies that there are the same number of clusters, its content and number of included tests in each cluster.
*/
fun UtMethodTestSet.checkClusterInfo(clusterInfo: List<Pair<UtClusterInfo, Int>>) {
if (clusterInfo.isEmpty()) {
return
}

Assertions.assertEquals(this.clustersInfo.size, clusterInfo.size)

this.clustersInfo.forEachIndexed { index, it ->
Assertions.assertTrue(it.first!!.normalizedAndEquals(clusterInfo[index].first))
Assertions.assertEquals(it.second.count(), clusterInfo[index].second)
}
}


fun List<UtExecution>.checkMatchersWithTextSummary(
comments: List<String>,
) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ class SummaryReturnExampleTest : SummaryTestCaseGeneratorTest(
val mockStrategy = MockStrategyApi.NO_MOCKS
val coverage = DoNotCalculate

check(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
summaryCheck(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
}

@Test
Expand Down Expand Up @@ -160,7 +160,7 @@ class SummaryReturnExampleTest : SummaryTestCaseGeneratorTest(
val mockStrategy = MockStrategyApi.NO_MOCKS
val coverage = DoNotCalculate

check(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
summaryCheck(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
}

@Test
Expand Down Expand Up @@ -230,7 +230,7 @@ class SummaryReturnExampleTest : SummaryTestCaseGeneratorTest(
val mockStrategy = MockStrategyApi.NO_MOCKS
val coverage = DoNotCalculate

check(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
summaryCheck(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
}

@Test
Expand Down Expand Up @@ -304,7 +304,7 @@ class SummaryReturnExampleTest : SummaryTestCaseGeneratorTest(
val mockStrategy = MockStrategyApi.NO_MOCKS
val coverage = DoNotCalculate

check(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
summaryCheck(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
}

@Test
Expand Down Expand Up @@ -399,7 +399,7 @@ class SummaryReturnExampleTest : SummaryTestCaseGeneratorTest(
val mockStrategy = MockStrategyApi.NO_MOCKS
val coverage = DoNotCalculate

check(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
summaryCheck(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
}

@Test
Expand Down Expand Up @@ -501,6 +501,6 @@ class SummaryReturnExampleTest : SummaryTestCaseGeneratorTest(
val mockStrategy = MockStrategyApi.NO_MOCKS
val coverage = DoNotCalculate

check(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
summaryCheck(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ class SummaryListWrapperReturnsVoidTest : SummaryTestCaseGeneratorTest(
val mockStrategy = MockStrategyApi.NO_MOCKS
val coverage = DoNotCalculate

check(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
summaryCheck(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
}

@Test
Expand Down Expand Up @@ -125,6 +125,6 @@ class SummaryListWrapperReturnsVoidTest : SummaryTestCaseGeneratorTest(
val mockStrategy = MockStrategyApi.NO_MOCKS
val coverage = DoNotCalculate

check(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
summaryCheck(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ class SummaryCycleTest : SummaryTestCaseGeneratorTest(
val mockStrategy = MockStrategyApi.NO_MOCKS
val coverage = DoNotCalculate

check(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
summaryCheck(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
}

@Test
Expand Down Expand Up @@ -124,7 +124,6 @@ class SummaryCycleTest : SummaryTestCaseGeneratorTest(
val mockStrategy = MockStrategyApi.NO_MOCKS
val coverage = DoNotCalculate

check(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
summaryCheck(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ class SummaryInnerCallsTest : SummaryTestCaseGeneratorTest(
val mockStrategy = MockStrategyApi.NO_MOCKS
val coverage = DoNotCalculate

check(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
summaryCheck(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
}

@Test
Expand Down Expand Up @@ -193,7 +193,7 @@ class SummaryInnerCallsTest : SummaryTestCaseGeneratorTest(
val mockStrategy = MockStrategyApi.NO_MOCKS
val coverage = DoNotCalculate

check(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
summaryCheck(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
}

// TODO: SAT-1211
Expand Down Expand Up @@ -240,7 +240,7 @@ class SummaryInnerCallsTest : SummaryTestCaseGeneratorTest(
val mockStrategy = MockStrategyApi.NO_MOCKS
val coverage = DoNotCalculate

check(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
summaryCheck(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
}

@Test
Expand Down Expand Up @@ -304,7 +304,7 @@ class SummaryInnerCallsTest : SummaryTestCaseGeneratorTest(
methodName4
)

check(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
summaryCheck(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
}

@Test
Expand Down Expand Up @@ -357,7 +357,7 @@ class SummaryInnerCallsTest : SummaryTestCaseGeneratorTest(
methodName3
)

check(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
summaryCheck(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
}

@Test
Expand Down Expand Up @@ -414,7 +414,7 @@ class SummaryInnerCallsTest : SummaryTestCaseGeneratorTest(
methodName3
)

check(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
summaryCheck(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
}

@Test
Expand Down Expand Up @@ -495,7 +495,7 @@ class SummaryInnerCallsTest : SummaryTestCaseGeneratorTest(
methodName5
)

check(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
summaryCheck(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
}

@Test
Expand Down Expand Up @@ -548,7 +548,7 @@ class SummaryInnerCallsTest : SummaryTestCaseGeneratorTest(
methodName4
)

check(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
summaryCheck(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
}

@Test
Expand Down Expand Up @@ -601,7 +601,7 @@ class SummaryInnerCallsTest : SummaryTestCaseGeneratorTest(
methodName4
)

check(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
summaryCheck(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
}

@Test
Expand Down Expand Up @@ -662,7 +662,7 @@ class SummaryInnerCallsTest : SummaryTestCaseGeneratorTest(
methodName3
)

check(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
summaryCheck(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
}

@Test
Expand Down Expand Up @@ -757,7 +757,7 @@ class SummaryInnerCallsTest : SummaryTestCaseGeneratorTest(
methodName5
)

check(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
summaryCheck(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
}

@Test
Expand Down Expand Up @@ -823,6 +823,6 @@ class SummaryInnerCallsTest : SummaryTestCaseGeneratorTest(
methodName4
)

check(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
summaryCheck(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,6 @@ class SummaryNestedCallsTest : SummaryTestCaseGeneratorTest(
methodName3
)

check(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
summaryCheck(method, mockStrategy, coverage, summaryKeys, methodNames, displayNames)
}
}
Loading