@@ -11,28 +11,31 @@ import org.usvm.machine.TsOptions
11
11
import org.usvm.util.getResourcePath
12
12
13
13
class UnreachableCodeDetectorTest {
14
+ val scene = run {
15
+ val name = " UnreachableCode.ts"
16
+ val path = getResourcePath(" /samples/checkers/$name " )
17
+ val file = loadEtsFileAutoConvert(
18
+ path,
19
+ useArkAnalyzerTypeInference = 1
20
+ )
21
+ EtsScene (listOf (file))
22
+ }
23
+
14
24
@Test
15
25
fun testUnreachableCode () {
16
- val scene = run {
17
- val name = " UnreachableCode.ts"
18
- val path = getResourcePath(" /samples/checkers/$name " )
19
- val file = loadEtsFileAutoConvert(
20
- path,
21
- useArkAnalyzerTypeInference = 1
22
- )
23
- EtsScene (listOf (file))
24
- }
25
-
26
26
val options = UMachineOptions ()
27
27
val tsOptions = TsOptions (interproceduralAnalysis = false )
28
28
val observer = UnreachableCodeDetector ()
29
29
val machine = TsMachine (scene, options, tsOptions, observer, observer)
30
30
val methods = scene.projectClasses
31
31
.flatMap { it.methods }
32
32
.filterNot { it.cfg.stmts.isEmpty() }
33
- // .filter { it.name == "simpleUnreachableBranch" }
34
- val results = machine.analyze(methods)
33
+ .filter { it.name == " simpleUnreachableBranch" }
34
+ machine.analyze(methods)
35
+
36
+ val uncoveredResults = observer.result.values.singleOrNull() ? : error(" No results found" )
37
+ val uncoveredStatements = uncoveredResults.singleOrNull()
35
38
36
- check(results.isNotEmpty())
39
+ check(uncoveredStatements != null ) { " Uncovered statements are incorrect, results are $uncoveredStatements " }
37
40
}
38
41
}
0 commit comments