@@ -5,6 +5,8 @@ import org.evomaster.client.java.controller.api.dto.BootTimeInfoDto
55import org.evomaster.client.java.controller.api.dto.TargetInfoDto
66import org.evomaster.client.java.instrumentation.shared.ObjectiveNaming
77import org.evomaster.core.search.service.IdMapper
8+ import org.evomaster.core.sql.DatabaseExecution
9+ import org.evomaster.core.sql.SqlExecutionInfo
810import org.junit.jupiter.api.Assertions.*
911import org.junit.jupiter.api.Test
1012
@@ -123,4 +125,37 @@ class FitnessValueTest {
123125 assertEquals(3 , linesInfo.searchTime)
124126 }
125127
128+ @Test
129+ fun testAggregatedFailedWhereQueriesExcludesBlankEntries () {
130+ val fv = FitnessValue (1.0 )
131+
132+ val execution = DatabaseExecution (
133+ queriedData = emptyMap(),
134+ updatedData = emptyMap(),
135+ insertedData = emptyMap(),
136+ failedWhere = emptyMap(),
137+ deletedData = emptyList(),
138+ numberOfSqlCommands = 3 ,
139+ sqlParseFailureCount = 0 ,
140+ executionInfo = listOf (
141+ SqlExecutionInfo (" SELECT * FROM foo WHERE id = 1" , false , 10L ),
142+ SqlExecutionInfo (" " , false , 5L ),
143+ SqlExecutionInfo (" " , false , 5L ),
144+ SqlExecutionInfo (" SELECT * FROM bar WHERE name = 'x'" , false , 8L )
145+ )
146+ )
147+ fv.setDatabaseExecution(0 , execution)
148+ fv.aggregateDatabaseData()
149+
150+ val allQueries = fv.getViewOfAggregatedFailedWhereQueries()
151+ assertEquals(4 , allQueries.size)
152+
153+ // Simulate the filter applied in ApiWsStructureMutator before sending queries to the solver
154+ val nonBlankQueries = allQueries.filter { it.isNotBlank() }
155+ assertEquals(2 , nonBlankQueries.size)
156+ assertTrue(nonBlankQueries.none { it.isBlank() })
157+ assertTrue(nonBlankQueries.contains(" SELECT * FROM foo WHERE id = 1" ))
158+ assertTrue(nonBlankQueries.contains(" SELECT * FROM bar WHERE name = 'x'" ))
159+ }
160+
126161}
0 commit comments