@@ -261,33 +261,30 @@ class InheritanceReachabilityTest {
261261
262262 // Test ConcreteA.process() method directly
263263 val concreteAMethods = scene.projectClasses
264- .find { it.name.contains(" ConcreteA" ) }
265- ?.methods?.filter { it.name == " process" }
266-
267- if (! concreteAMethods.isNullOrEmpty()) {
268- val method = concreteAMethods.first()
269- val initialTarget = TsReachabilityTarget .InitialPoint (method.cfg.stmts.first())
270- var target: TsTarget = initialTarget
271-
272- // if (this.value > 10)
273- val valueCheck = method.cfg.stmts.filterIsInstance<EtsIfStmt >()[0 ]
274- target = target.addChild(TsReachabilityTarget .IntermediatePoint (valueCheck))
275-
276- // return this.commonMethod() or similar
277- val returnStmt = method.cfg.stmts.filterIsInstance<EtsReturnStmt >()[0 ]
278- target.addChild(TsReachabilityTarget .FinalPoint (returnStmt))
279-
280- val results = machine.analyze(listOf (method), listOf (initialTarget))
281- assertTrue(
282- results.isNotEmpty(),
283- " Expected at least one result for abstract method implementation reachability"
284- )
285-
286- val reachedStatements = results.flatMap { it.pathNode.allStatements }.toSet()
287- assertTrue(
288- returnStmt in reachedStatements,
289- " Expected return statement to be reached when value > 10"
290- )
291- }
264+ .first { it.name.contains(" ConcreteA" ) }
265+ .methods.filter { it.name == " process" }
266+
267+ val method = concreteAMethods.first()
268+ val target = TsReachabilityTarget .InitialPoint (method.cfg.stmts.first())
269+
270+ // if (this.value > 10)
271+ // return this.commonMethod() or similar
272+ val ifStmt = method.cfg.stmts.filterIsInstance<EtsIfStmt >()[0 ]
273+ val returnStmt = method.cfg.stmts.filterIsInstance<EtsReturnStmt >()[0 ]
274+ target
275+ .addChild(TsReachabilityTarget .IntermediatePoint (ifStmt))
276+ .addChild(TsReachabilityTarget .FinalPoint (returnStmt))
277+
278+ val results = machine.analyze(listOf (method), listOf (target))
279+ assertTrue(
280+ results.isNotEmpty(),
281+ " Expected at least one result for abstract method implementation reachability"
282+ )
283+
284+ val reachedStatements = results.flatMap { it.pathNode.allStatements }.toSet()
285+ assertTrue(
286+ returnStmt in reachedStatements,
287+ " Expected return statement to be reached when value > 10"
288+ )
292289 }
293290}
0 commit comments