Skip to content

Commit a0a6485

Browse files
committed
Expand existing lambda test to check that lambdas behave as expected
1 parent a7bfdfe commit a0a6485

File tree

6 files changed

+77
-13
lines changed

6 files changed

+77
-13
lines changed

jbmc/regression/jbmc/lambda1/B.class

-57 Bytes
Binary file not shown.

jbmc/regression/jbmc/lambda1/B.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
public class B {
22
public int y;
33

4-
public static java.util.function.Function<Double, Double> dmul = x -> x * 3.1415;
4+
public static Function<Double, Double> dmul = x -> x * 1.5;
55

66
public void set(int x) {
77
y = x;

jbmc/regression/jbmc/lambda1/C.class

0 Bytes
Binary file not shown.
1.41 KB
Binary file not shown.

jbmc/regression/jbmc/lambda1/Lambdatest.java

Lines changed: 49 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ class A {
88
BiFunction<Float, Integer, Integer> add = (x0, y0) -> x0.intValue() + y0;
99
int z = 10;
1010

11-
A a;
11+
A a = new A();
1212
B b = new B();
1313

1414
public Integer g(Float x, Integer y, BiFunction<Float, Integer, Integer> fun) {
@@ -74,17 +74,54 @@ public boolean custom(Integer i) {
7474
return custom.is_ok(i);
7575
}
7676

77-
public static void main(String[] args) {
78-
// Uses all of the above test functions, to ensure they are loaded under
79-
// symex-driven loading:
80-
81-
Lambdatest lt = new Lambdatest();
82-
lt.f(0.0f, 0, 0);
83-
lt.i(0);
84-
lt.j(0);
85-
lt.k(0);
86-
lt.l(0);
87-
lt.m(0);
77+
public static void main(String[] args, int unknown) {
78+
Lambdatest lt = new Lambdatest();
79+
if(unknown == 0)
80+
assert lt.g(1.0f, 2, (x, y) -> x.intValue() + y) == 3; // should succeed
81+
else if(unknown == 1)
82+
assert lt.g(1.0f, 2, (x, y) -> x.intValue() + y) == 4; // should fail
83+
else if(unknown == 2)
84+
assert lt.f(1.0f, 2, 3) == 9; // should succeed
85+
else if(unknown == 3)
86+
assert lt.f(1.0f, 2, 3) == 10; // should fail
87+
else if(unknown == 4)
88+
assert lt.i(2) == 10; // should succeed
89+
else if(unknown == 5)
90+
assert lt.i(2) == 11; // should fail
91+
else if(unknown == 6)
92+
assert lt.j(3) == 30; // should succeed
93+
else if(unknown == 7)
94+
assert lt.j(3) == 31; // should fail
95+
else if(unknown == 8)
96+
assert lt.k(4) == 40; // should succeed
97+
else if(unknown == 9)
98+
assert lt.k(4) == 41; // should fail
99+
else if(unknown == 10)
100+
{
101+
assert lt.l(5) == 70; // should succeed
102+
assert lt.b.y == 70; // check side-effects of l method
103+
}
104+
else if(unknown == 11)
105+
assert lt.l(5) == 51; // should fail
106+
else if(unknown == 12)
107+
{
108+
assert lt.m(6) == 60; // should succeed
109+
assert lt.b.y == 60; // check side-effects of m method
110+
}
111+
else if(unknown == 13)
112+
assert lt.m(6) == 61; // should fail
113+
else if(unknown == 14)
114+
assert lt.d(7.0) == 10.5; // should succeed
115+
else if(unknown == 15)
116+
assert lt.d(7.0) == 12; // should fail
117+
else if(unknown == 16)
118+
assert lt.capture2(8.0f) == 9; // should succeed
119+
else if(unknown == 17)
120+
assert lt.capture2(8.0f) == 10; // should fail
121+
else if(unknown == 18)
122+
assert lt.custom(9); // should succeed
123+
else if(unknown == 19)
124+
assert !lt.custom(9); // should fail
88125
}
89126
}
90127

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
CORE
2+
Lambdatest.class
3+
--function Lambdatest.main
4+
line 80 assertion.*SUCCESS$
5+
line 82 assertion.*FAILURE$
6+
line 84 assertion.*SUCCESS$
7+
line 86 assertion.*FAILURE$
8+
line 88 assertion.*SUCCESS$
9+
line 90 assertion.*FAILURE$
10+
line 92 assertion.*SUCCESS$
11+
line 94 assertion.*FAILURE$
12+
line 96 assertion.*SUCCESS$
13+
line 98 assertion.*FAILURE$
14+
line 101 assertion.*SUCCESS$
15+
line 102 assertion.*SUCCESS$
16+
line 105 assertion.*FAILURE$
17+
line 108 assertion.*SUCCESS$
18+
line 109 assertion.*SUCCESS$
19+
line 112 assertion.*FAILURE$
20+
line 114 assertion.*SUCCESS$
21+
line 116 assertion.*FAILURE$
22+
line 118 assertion.*SUCCESS$
23+
line 120 assertion.*FAILURE$
24+
line 122 assertion.*SUCCESS$
25+
line 124 assertion.*FAILURE$
26+
^EXIT=10$
27+
^SIGNAL=0$

0 commit comments

Comments
 (0)