Skip to content

Commit 5dbbd07

Browse files
committed
Replace MethodDescriptor with EtsMethod
1 parent 300bc06 commit 5dbbd07

File tree

6 files changed

+137
-150
lines changed

6 files changed

+137
-150
lines changed
Lines changed: 22 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,60 @@
11
package org.usvm.samples
22

3+
import org.jacodb.ets.model.EtsScene
4+
import org.jacodb.ets.utils.loadEtsFileAutoConvert
35
import org.junit.jupiter.api.Disabled
4-
import org.usvm.api.TSObject
5-
import org.usvm.util.MethodDescriptor
6+
import org.usvm.TSObject
67
import org.usvm.util.TSMethodTestRunner
8+
import org.usvm.util.getResourcePath
79
import kotlin.test.Test
810

911
class Arguments : TSMethodTestRunner() {
12+
13+
override val scene: EtsScene = run {
14+
val name = "Arguments.ts"
15+
val path = getResourcePath("/samples/$name")
16+
val file = loadEtsFileAutoConvert(path)
17+
EtsScene(listOf(file))
18+
}
19+
1020
@Test
1121
fun testNoArgs() {
22+
val method = getMethod("SimpleClass", "noArguments")
1223
discoverProperties<TSObject.TSNumber>(
13-
methodIdentifier = MethodDescriptor(
14-
fileName = "Arguments.ts",
15-
className = "SimpleClass",
16-
methodName = "noArguments",
17-
argumentsNumber = 0
18-
),
19-
{ r -> r?.number == 42.0 }
24+
method,
25+
{ r -> r.number == 42.0 }
2026
)
2127
}
2228

2329
@Test
2430
fun testSingleArg() {
31+
val method = getMethod("SimpleClass", "singleArgument")
2532
discoverProperties<TSObject.TSNumber, TSObject.TSNumber>(
26-
methodIdentifier = MethodDescriptor(
27-
fileName = "Arguments.ts",
28-
className = "SimpleClass",
29-
methodName = "singleArgument",
30-
argumentsNumber = 1
31-
),
33+
method,
3234
{ a, r -> a == r }
3335
)
3436
}
3537

3638
@Test
3739
fun testManyArgs() {
40+
val method = getMethod("SimpleClass", "manyArguments")
3841
discoverProperties<TSObject.TSNumber, TSObject.TSNumber, TSObject.TSNumber, TSObject.TSNumber>(
39-
methodIdentifier = MethodDescriptor(
40-
fileName = "Arguments.ts",
41-
className = "SimpleClass",
42-
methodName = "manyArguments",
43-
argumentsNumber = 3
44-
),
42+
method,
4543
{ a, _, _, r -> a.number == 1.0 && r == a },
4644
{ _, b, _, r -> b.number == 2.0 && r == b },
4745
{ _, _, c, r -> c.number == 3.0 && r == c },
4846
{ a, b, c, r ->
49-
a.number != 1.0 && b.number != 2.0 && c.number != 3.0 && r?.number == 100.0
47+
a.number != 1.0 && b.number != 2.0 && c.number != 3.0 && r.number == 100.0
5048
},
5149
)
5250
}
5351

5452
@Test
5553
@Disabled
5654
fun testThisArg() {
55+
val method = getMethod("SimpleClass", "thisArgument")
5756
discoverProperties<TSObject.TSNumber>(
58-
methodIdentifier = MethodDescriptor(
59-
fileName = "Arguments.ts",
60-
className = "SimpleClass",
61-
methodName = "thisArgument",
62-
argumentsNumber = 0
63-
)
57+
method,
6458
)
6559
}
6660
}
Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,28 @@
11
package org.usvm.samples
22

3+
import org.jacodb.ets.model.EtsScene
4+
import org.jacodb.ets.utils.loadEtsFileAutoConvert
35
import org.junit.jupiter.api.Disabled
4-
import org.usvm.api.TSObject
5-
import org.usvm.util.MethodDescriptor
6+
import org.usvm.TSObject
67
import org.usvm.util.TSMethodTestRunner
8+
import org.usvm.util.getResourcePath
79
import kotlin.test.Test
810

911
class MinValue : TSMethodTestRunner() {
12+
13+
override val scene: EtsScene = run {
14+
val name = "MinValue.ts"
15+
val path = getResourcePath("/samples/$name")
16+
val file = loadEtsFileAutoConvert(path)
17+
EtsScene(listOf(file))
18+
}
19+
1020
@Test
1121
@Disabled
1222
fun testMinValue() {
23+
val method = getMethod("MinValue", "findMinValue")
1324
discoverProperties<TSObject.Array, TSObject.TSNumber>(
14-
methodIdentifier = MethodDescriptor(
15-
fileName = "MinValue.ts",
16-
className = globalClassName,
17-
methodName = "findMinValue",
18-
argumentsNumber = 1
19-
)
25+
method,
2026
)
2127
}
2228
}

usvm-ts/src/test/kotlin/org/usvm/samples/StaticMethods.kt

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,51 @@
11
package org.usvm.samples
22

3-
import org.usvm.api.TSObject
4-
import org.usvm.util.MethodDescriptor
3+
import org.jacodb.ets.model.EtsScene
4+
import org.jacodb.ets.utils.loadEtsFileAutoConvert
5+
import org.usvm.TSObject
56
import org.usvm.util.TSMethodTestRunner
7+
import org.usvm.util.getResourcePath
68
import kotlin.test.Test
79

810
class StaticMethods : TSMethodTestRunner() {
11+
12+
override val scene: EtsScene = run {
13+
val name = "StaticMethods.ts"
14+
val path = getResourcePath("/samples/$name")
15+
val file = loadEtsFileAutoConvert(path)
16+
EtsScene(listOf(file))
17+
}
18+
919
@Test
1020
fun testNoArgsStaticMethod() {
21+
val method = getMethod("StaticMethods", "noArguments")
1122
discoverProperties<TSObject.TSNumber>(
12-
methodIdentifier = MethodDescriptor(
13-
fileName = "StaticMethods.ts",
14-
className = "StaticMethods",
15-
methodName = "noArguments",
16-
argumentsNumber = 0
17-
),
18-
{ r -> r?.number == 42.0 }
23+
method,
24+
{ r -> r.number == 42.0 }
1925
)
2026
}
2127

2228
@Test
2329
fun testSingleArgStaticMethod() {
30+
val method = getMethod("StaticMethods", "singleArgument")
2431
discoverProperties<TSObject.TSNumber, TSObject.TSNumber>(
25-
methodIdentifier = MethodDescriptor(
26-
fileName = "StaticMethods.ts",
27-
className = "StaticMethods",
28-
methodName = "singleArgument",
29-
argumentsNumber = 1
30-
),
31-
{ a, r -> a.number == 1.0 && r?.number == 100.0 },
32-
{ a, r -> a.number != 1.0 && r?.number == 0.0 },
32+
method,
33+
{ a, r -> a.number == 1.0 && r.number == 100.0 },
34+
{ a, r -> a.number != 1.0 && r.number == 0.0 },
3335
)
3436
}
3537

3638
@Test
3739
fun testManyArgsStaticMethod() {
40+
val method = getMethod("StaticMethods", "manyArguments")
3841
discoverProperties<TSObject.TSNumber, TSObject.TSNumber, TSObject.TSNumber, TSObject.TSNumber, TSObject.TSNumber>(
39-
methodIdentifier = MethodDescriptor(
40-
fileName = "StaticMethods.ts",
41-
className = "StaticMethods",
42-
methodName = "manyArguments",
43-
argumentsNumber = 4
44-
),
42+
method,
4543
{ a, _, _, _, r -> a.number == 1.0 && r == a },
4644
{ _, b, _, _, r -> b.number == 2.0 && r == b },
4745
{ _, _, c, _, r -> c.number == 3.0 && r == c },
4846
{ _, _, _, d, r -> d.number == 4.0 && r == d },
4947
{ a, b, c, d, r ->
50-
a.number != 1.0 && b.number != 2.0 && c.number != 3.0 && d.number != 4.0 && r?.number == 100.0
48+
a.number != 1.0 && b.number != 2.0 && c.number != 3.0 && d.number != 4.0 && r.number == 100.0
5149
},
5250
)
5351
}

usvm-ts/src/test/kotlin/org/usvm/samples/TypeCoercion.kt

Lines changed: 32 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,79 +1,69 @@
11
package org.usvm.samples
22

3+
import org.jacodb.ets.model.EtsScene
4+
import org.jacodb.ets.utils.loadEtsFileAutoConvert
35
import org.junit.jupiter.api.Test
4-
import org.usvm.api.TSObject
5-
import org.usvm.util.MethodDescriptor
6+
import org.usvm.TSObject
67
import org.usvm.util.TSMethodTestRunner
8+
import org.usvm.util.getResourcePath
79

810
class TypeCoercion : TSMethodTestRunner() {
11+
12+
override val scene: EtsScene = run {
13+
val name = "TypeCoercion.ts"
14+
val path = getResourcePath("/samples/$name")
15+
val file = loadEtsFileAutoConvert(path)
16+
EtsScene(listOf(file))
17+
}
18+
919
@Test
1020
fun testArgWithConst() {
21+
val method = getMethod("TypeCoercion", "argWithConst")
1122
discoverProperties<TSObject.TSNumber, TSObject.TSNumber>(
12-
methodIdentifier = MethodDescriptor(
13-
fileName = "TypeCoercion.ts",
14-
className = "TypeCoercion",
15-
methodName = "argWithConst",
16-
argumentsNumber = 1
17-
),
18-
{ a, r -> a.number == 1.0 && r?.number == 1.0 },
19-
{ a, r -> a.number != 1.0 && r?.number == 0.0 },
23+
method,
24+
{ a, r -> a.number == 1.0 && r.number == 1.0 },
25+
{ a, r -> a.number != 1.0 && r.number == 0.0 },
2026
)
2127
}
2228

2329
@Test
2430
fun testArgWithArg() {
31+
val method = getMethod("TypeCoercion", "argWithArg")
2532
discoverProperties<TSObject.Boolean, TSObject.TSNumber, TSObject.TSNumber>(
26-
methodIdentifier = MethodDescriptor(
27-
fileName = "TypeCoercion.ts",
28-
className = "TypeCoercion",
29-
methodName = "argWithArg",
30-
argumentsNumber = 2
31-
),
32-
{ a, b, r -> (a.number + b.number == 10.0) && r?.number == 1.0 },
33-
{ a, b, r -> (a.number + b.number != 10.0) && r?.number == 0.0 },
33+
method,
34+
{ a, b, r -> (a.number + b.number == 10.0) && r.number == 1.0 },
35+
{ a, b, r -> (a.number + b.number != 10.0) && r.number == 0.0 },
3436
)
3537
}
3638

3739
@Test
3840
fun testUnreachableByType() {
41+
val method = getMethod("TypeCoercion", "unreachableByType")
3942
discoverProperties<TSObject.TSNumber, TSObject.Boolean, TSObject.TSNumber>(
40-
methodIdentifier = MethodDescriptor(
41-
fileName = "TypeCoercion.ts",
42-
className = "TypeCoercion",
43-
methodName = "unreachableByType",
44-
argumentsNumber = 2
45-
),
46-
{ a, b, r -> a.number != b.number && r?.number == 2.0 },
47-
{ a, b, r -> (a.number == b.number) && !(a.boolean && !b.value) && r?.number == 1.0 },
43+
method,
44+
{ a, b, r -> a.number != b.number && r.number == 2.0 },
45+
{ a, b, r -> (a.number == b.number) && !(a.boolean && !b.value) && r.number == 1.0 },
4846
// Unreachable branch matcher
49-
{ _, _, r -> r?.number != 0.0 },
47+
{ _, _, r -> r.number != 0.0 },
5048
)
5149
}
5250

5351
@Test
5452
fun testTransitiveCoercion() {
53+
val method = getMethod("TypeCoercion", "transitiveCoercion")
5554
discoverProperties<TSObject.TSNumber, TSObject.Boolean, TSObject.TSNumber, TSObject.TSNumber>(
56-
methodIdentifier = MethodDescriptor(
57-
fileName = "TypeCoercion.ts",
58-
className = "TypeCoercion",
59-
methodName = "transitiveCoercion",
60-
argumentsNumber = 3
61-
),
62-
{ a, b, c, r -> a.number == b.number && b.number == c.number && r?.number == 1.0 },
63-
{ a, b, c, r -> a.number == b.number && (b.number != c.number || !c.boolean) && r?.number == 2.0 },
64-
{ a, b, _, r -> a.number != b.number && r?.number == 3.0 }
55+
method,
56+
{ a, b, c, r -> a.number == b.number && b.number == c.number && r.number == 1.0 },
57+
{ a, b, c, r -> a.number == b.number && (b.number != c.number || !c.boolean) && r.number == 2.0 },
58+
{ a, b, _, r -> a.number != b.number && r.number == 3.0 }
6559
)
6660
}
6761

6862
@Test
6963
fun testTransitiveCoercionNoTypes() {
64+
val method = getMethod("TypeCoercion", "transitiveCoercionNoTypes")
7065
discoverProperties<TSObject.Unknown, TSObject.Unknown, TSObject.Unknown, TSObject.TSNumber>(
71-
methodIdentifier = MethodDescriptor(
72-
fileName = "TypeCoercion.ts",
73-
className = "TypeCoercion",
74-
methodName = "transitiveCoercionNoTypes",
75-
argumentsNumber = 3
76-
),
66+
method,
7767
// Too complicated to write property matchers, examine run log to verify the test.
7868
)
7969
}

0 commit comments

Comments
 (0)