1- @file:Suppress(" UNUSED_PARAMETER" , " UNUSED_VARIABLE" )
2-
31package org.usvm.gameserver
42
5- import org.usvm.JavaMethodRunner
3+ import org.usvm.runner. JavaMethodRunner
64import org.usvm.OracleImpl
5+ import org.usvm.PathSelectionStrategy
6+ import org.usvm.UMachineOptions
7+ import org.usvm.runner.defaultOptions
78import org.usvm.statistics.BasicBlock
89import kotlin.math.floor
910
@@ -22,10 +23,10 @@ fun randomExplorer(
2223 step.gameStep.stateId
2324 }
2425
25- val (className, methodName) = extractClassAndMethod (gameMap.nameOfObjectToCover )
26- val runner = JavaMethodRunner (gameMap, OracleImpl < BasicBlock >(predict) )
26+ val options = cloneDefaultOptions (gameMap, predict )
27+ val runner = JavaMethodRunner (options, gameMap.assemblyFullName )
2728
28- val (results, percentageCoverage) = runner.cover(className, methodName )
29+ val (results, percentageCoverage) = runner.cover(gameMap.nameOfObjectToCover )
2930 val errors = results.count { it.isExceptional }
3031 val tests = results.size - errors
3132
@@ -36,10 +37,16 @@ fun randomExplorer(
3637 )
3738}
3839
39- private fun extractClassAndMethod (fullName : String ): Pair <String , String > {
40- val parts = fullName.split(' .' )
41- val className = parts.dropLast(1 ).joinToString(" ." )
42- val methodName = parts.last()
43-
44- return Pair (className, methodName)
40+ private fun cloneDefaultOptions (gameMap : GameMap , predict : (GameState ) -> UInt ): UMachineOptions {
41+ val defaultSearcher = when (gameMap.defaultSearcher) {
42+ Searcher .BFS -> PathSelectionStrategy .BFS
43+ Searcher .DFS -> PathSelectionStrategy .DFS
44+ }
45+ val stepLimit = (gameMap.stepsToStart + gameMap.stepsToStart).toULong()
46+ return defaultOptions.copy(
47+ pathSelectionStrategies = listOf (defaultSearcher, PathSelectionStrategy .AI ),
48+ stepLimit = stepLimit,
49+ stepsToStart = gameMap.stepsToStart,
50+ oracle = OracleImpl <BasicBlock >(predict)
51+ )
4552}
0 commit comments