Skip to content

Commit a55f620

Browse files
committed
Add unit tests
1 parent 4bc9b3a commit a55f620

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed

utbot-framework/src/test/kotlin/org/utbot/sarif/SarifReportTest.kt

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,59 @@ class SarifReportTest {
186186
assert(codeFlowPhysicalLocations[0].region.startColumn == 5)
187187
}
188188

189+
@Test
190+
fun testMinimizationRemovesDuplicates() {
191+
mockUtMethodNames()
192+
193+
val mockUtExecution = Mockito.mock(UtExecution::class.java, Mockito.RETURNS_DEEP_STUBS)
194+
Mockito.`when`(mockUtExecution.result).thenReturn(UtImplicitlyThrownException(NullPointerException(), false))
195+
196+
val testCases = listOf(
197+
UtTestCase(mockUtMethod, listOf(mockUtExecution)),
198+
UtTestCase(mockUtMethod, listOf(mockUtExecution)) // duplicate
199+
)
200+
201+
val report = SarifReport(
202+
testCases = testCases,
203+
generatedTestsCode = "",
204+
sourceFindingEmpty
205+
).createReport().toSarif()
206+
207+
assert(report.runs.first().results.size == 1) // no duplicates
208+
}
209+
210+
@Test
211+
fun testMinimizationChoosesShortestCodeFlow() {
212+
mockUtMethodNames()
213+
214+
val mockNPE1 = Mockito.mock(NullPointerException::class.java)
215+
val mockNPE2 = Mockito.mock(NullPointerException::class.java)
216+
217+
val mockUtExecution1 = Mockito.mock(UtExecution::class.java, Mockito.RETURNS_DEEP_STUBS)
218+
val mockUtExecution2 = Mockito.mock(UtExecution::class.java, Mockito.RETURNS_DEEP_STUBS)
219+
Mockito.`when`(mockUtExecution1.result).thenReturn(UtImplicitlyThrownException(mockNPE1, false))
220+
Mockito.`when`(mockUtExecution2.result).thenReturn(UtImplicitlyThrownException(mockNPE2, false))
221+
222+
val stackTraceElement1 = StackTraceElement("Main", "main", "Main.java", 3)
223+
val stackTraceElement2 = StackTraceElement("Main", "main", "Main.java", 7)
224+
Mockito.`when`(mockNPE1.stackTrace).thenReturn(arrayOf(stackTraceElement1))
225+
Mockito.`when`(mockNPE2.stackTrace).thenReturn(arrayOf(stackTraceElement1, stackTraceElement2))
226+
227+
val testCases = listOf(
228+
UtTestCase(mockUtMethod, listOf(mockUtExecution1)),
229+
UtTestCase(mockUtMethod, listOf(mockUtExecution2)) // duplicate with longer stack trace
230+
)
231+
232+
val report = SarifReport(
233+
testCases = testCases,
234+
generatedTestsCode = "",
235+
sourceFindingEmpty
236+
).createReport().toSarif()
237+
238+
assert(report.runs.first().results.size == 1) // no duplicates
239+
assert(report.runs.first().results.first().totalCodeFlowLocations() == 1) // with shorter stack trace
240+
}
241+
189242
// internal
190243

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

0 commit comments

Comments
 (0)