From 276986b15b63aa3738365aa4b5f14c9791c44830 Mon Sep 17 00:00:00 2001 From: IlyaMuravjov Date: Fri, 16 Jun 2023 12:56:11 +0300 Subject: [PATCH] Fix minimization missing last empty branch --- .../utbot/framework/minimization/Minimization.kt | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/utbot-framework/src/main/kotlin/org/utbot/framework/minimization/Minimization.kt b/utbot-framework/src/main/kotlin/org/utbot/framework/minimization/Minimization.kt index c115771d8f..09a74fbda3 100644 --- a/utbot-framework/src/main/kotlin/org/utbot/framework/minimization/Minimization.kt +++ b/utbot-framework/src/main/kotlin/org/utbot/framework/minimization/Minimization.kt @@ -92,15 +92,15 @@ private fun groupByBranchInstructions( executions: List, branchInstructionsNumber: Int ): Collection> { - val instructionToPossibleNextInstructions = mutableMapOf>() + val instructionToPossibleNextInstructions = mutableMapOf>() for (execution in executions) { execution.coverage?.let { coverage -> val coveredInstructionIds = coverage.coveredInstructions.map { it.id } - for (i in 0 until coveredInstructionIds.size - 1) { + for (i in coveredInstructionIds.indices) { instructionToPossibleNextInstructions .getOrPut(coveredInstructionIds[i]) { mutableSetOf() } - .add(coveredInstructionIds[i + 1]) + .add(coveredInstructionIds.getOrNull(i + 1)) } } } @@ -153,7 +153,7 @@ private fun groupExecutionsByTestSuite( */ private fun buildMapping(executions: List): Pair>, Map> { // (inst1, instr2) -> edge id --- edge represents as a pair of instructions, which are connected by this edge - val allCoveredEdges = mutableMapOf, Int>() + val allCoveredEdges = mutableMapOf, Int>() val thrownExceptions = mutableMapOf() val mapping = mutableMapOf>() val executionToPriorityMapping = mutableMapOf() @@ -167,14 +167,10 @@ private fun buildMapping(executions: List): Pair execution.result, thrownExceptions ).let { instructions -> - for (i in 0 until instructions.size - 1) { - allCoveredEdges.putIfAbsent(instructions[i] to instructions[i + 1], allCoveredEdges.size) + val edges = instructions.indices.map { i -> + allCoveredEdges.getOrPut(instructions[i] to instructions.getOrNull(i + 1)) { allCoveredEdges.size } } - val edges = mutableListOf() - for (i in 0 until instructions.size - 1) { - edges += allCoveredEdges[instructions[i] to instructions[i + 1]]!! - } mapping[idx] = edges executionToPriorityMapping[idx] = execution.getExecutionPriority() }