-
Notifications
You must be signed in to change notification settings - Fork 45
Expand file tree
/
Copy pathTestStaticMethods.kt
More file actions
105 lines (88 loc) · 3.28 KB
/
TestStaticMethods.kt
File metadata and controls
105 lines (88 loc) · 3.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
package org.utbot.examples
import org.utbot.examples.samples.staticenvironment.StaticExampleClass
import org.utbot.framework.plugin.api.util.signature
import org.utbot.instrumentation.ConcreteExecutor
import org.utbot.instrumentation.execute
import org.utbot.instrumentation.instrumentation.coverage.InstructionCoverageInstrumentation
import org.utbot.instrumentation.instrumentation.coverage.collectCoverage
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Assertions.assertTrue
import org.junit.jupiter.api.Test
class TestStaticMethods {
lateinit var utContext: AutoCloseable
@Test
fun testStaticMethodCall() {
ConcreteExecutor(
InstructionCoverageInstrumentation.Factory,
StaticExampleClass::class.java.protectionDomain.codeSource.location.path
).use {
val res1 = it.execute(StaticExampleClass::inc, arrayOf())
val coverageInfo1 = it.collectCoverage(StaticExampleClass::class.java)
assertEquals(0, res1.getOrNull())
assertEquals((3..6).toList() + (9..22).toList(), coverageInfo1.visitedInstrs)
val res2 = it.execute(
StaticExampleClass::plus,
arrayOf(5)
)
val coverageInfo2 = it.collectCoverage(StaticExampleClass::class.java)
assertEquals(0, res2.getOrNull())
assertTrue(
coverageInfo2.methodToInstrRange[StaticExampleClass::plus.signature]!!.toList()
.subtract(coverageInfo2.visitedInstrs)
.isEmpty()
)
}
}
@Test
fun testNullableMethod() {
ConcreteExecutor(
InstructionCoverageInstrumentation.Factory,
StaticExampleClass::class.java.protectionDomain.codeSource.location.path
).use {
val res1 = it.execute(
StaticExampleClass::canBeNull,
arrayOf(10,
"123")
)
assertEquals("123", res1.getOrNull())
val res2 = it.execute(
StaticExampleClass::canBeNull,
arrayOf(0,
"kek")
)
assertEquals(null, res2.getOrNull())
val res3 = it.execute(
StaticExampleClass::canBeNull,
arrayOf(1,
null)
)
assertEquals(null, res3.getOrNull())
}
}
@Test
fun testNullableMethodWithoutAnnotations() {
ConcreteExecutor(
InstructionCoverageInstrumentation.Factory,
StaticExampleClass::class.java.protectionDomain.codeSource.location.path
).use {
val res1 = it.execute(
StaticExampleClass::canBeNullWithoutAnnotations,
arrayOf(10,
"123")
)
assertEquals("123", res1.getOrNull())
val res2 = it.execute(
StaticExampleClass::canBeNullWithoutAnnotations,
arrayOf(0,
"kek")
)
assertEquals(null, res2.getOrNull())
val res3 = it.execute(
StaticExampleClass::canBeNullWithoutAnnotations,
arrayOf(1,
null)
)
assertEquals(null, res3.getOrNull())
}
}
}