Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Changes from 1 commit
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
Prev Previous commit
Next Next commit
Add unit tests
  • Loading branch information
mmvpm committed Jul 13, 2022
commit d8f34a644569f48d7ee210380c48e3e05b1fcf4b
53 changes: 53 additions & 0 deletions utbot-framework/src/test/kotlin/org/utbot/sarif/SarifReportTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,59 @@ class SarifReportTest {
assert(codeFlowPhysicalLocations[0].region.startColumn == 5)
}

@Test
fun testMinimizationRemovesDuplicates() {
mockUtMethodNames()

val mockUtExecution = Mockito.mock(UtExecution::class.java, Mockito.RETURNS_DEEP_STUBS)
Mockito.`when`(mockUtExecution.result).thenReturn(UtImplicitlyThrownException(NullPointerException(), false))

val testCases = listOf(
UtTestCase(mockUtMethod, listOf(mockUtExecution)),
UtTestCase(mockUtMethod, listOf(mockUtExecution)) // duplicate
)

val report = SarifReport(
testCases = testCases,
generatedTestsCode = "",
sourceFindingEmpty
).createReport().toSarif()

assert(report.runs.first().results.size == 1) // no duplicates
}

@Test
fun testMinimizationChoosesShortestCodeFlow() {
mockUtMethodNames()

val mockNPE1 = Mockito.mock(NullPointerException::class.java)
val mockNPE2 = Mockito.mock(NullPointerException::class.java)

val mockUtExecution1 = Mockito.mock(UtExecution::class.java, Mockito.RETURNS_DEEP_STUBS)
val mockUtExecution2 = Mockito.mock(UtExecution::class.java, Mockito.RETURNS_DEEP_STUBS)
Mockito.`when`(mockUtExecution1.result).thenReturn(UtImplicitlyThrownException(mockNPE1, false))
Mockito.`when`(mockUtExecution2.result).thenReturn(UtImplicitlyThrownException(mockNPE2, false))

val stackTraceElement1 = StackTraceElement("Main", "main", "Main.java", 3)
val stackTraceElement2 = StackTraceElement("Main", "main", "Main.java", 7)
Mockito.`when`(mockNPE1.stackTrace).thenReturn(arrayOf(stackTraceElement1))
Mockito.`when`(mockNPE2.stackTrace).thenReturn(arrayOf(stackTraceElement1, stackTraceElement2))

val testCases = listOf(
UtTestCase(mockUtMethod, listOf(mockUtExecution1)),
UtTestCase(mockUtMethod, listOf(mockUtExecution2)) // duplicate with longer stack trace
)

val report = SarifReport(
testCases = testCases,
generatedTestsCode = "",
sourceFindingEmpty
).createReport().toSarif()

assert(report.runs.first().results.size == 1) // no duplicates
assert(report.runs.first().results.first().totalCodeFlowLocations() == 1) // with shorter stack trace
}

// internal

private val mockUtMethod = Mockito.mock(UtMethod::class.java, Mockito.RETURNS_DEEP_STUBS)
Expand Down