Skip to content

Commit 1948c21

Browse files
author
Brian Huffman
committed
Add integration test for #1006.
1 parent 5dec004 commit 1948c21

File tree

5 files changed

+137
-0
lines changed

5 files changed

+137
-0
lines changed
+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
%.class: %.java
2+
javac -g $<
1.03 KB
Binary file not shown.
+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
class Test
2+
{
3+
public static boolean addBoolean(boolean x, boolean y) {
4+
return x != y;
5+
}
6+
public static byte addByte(byte x, byte y) {
7+
return (byte) (x + y);
8+
}
9+
public static char addChar(char x, char y) {
10+
return (char) (x + y);
11+
}
12+
public static short addShort(short x, short y) {
13+
return (short) (x + y);
14+
}
15+
16+
public static void updBoolean(boolean []a, boolean x) {
17+
a[0] = x;
18+
}
19+
public static void updByte(byte []a, byte x) {
20+
a[0] = x;
21+
}
22+
public static void updChar(char []a, char x) {
23+
a[0] = x;
24+
}
25+
public static void updShort(short []a, short x) {
26+
a[0] = x;
27+
}
28+
}
+106
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
enable_experimental;
2+
c <- java_load_class "Test";
3+
4+
jvm_verify c "addBoolean" [] false
5+
do {
6+
x <- jvm_fresh_var "x" java_bool;
7+
y <- jvm_fresh_var "y" java_bool;
8+
jvm_execute_func [jvm_term x, jvm_term y];
9+
jvm_return (jvm_term {{ x ^ y }});
10+
}
11+
do {
12+
check_goal;
13+
z3;
14+
};
15+
16+
jvm_verify c "addByte" [] false
17+
do {
18+
x <- jvm_fresh_var "x" java_byte;
19+
y <- jvm_fresh_var "y" java_byte;
20+
jvm_execute_func [jvm_term x, jvm_term y];
21+
jvm_return (jvm_term {{ x + y }});
22+
}
23+
do {
24+
check_goal;
25+
z3;
26+
};
27+
28+
jvm_verify c "addChar" [] false
29+
do {
30+
x <- jvm_fresh_var "x" java_char;
31+
y <- jvm_fresh_var "y" java_char;
32+
jvm_execute_func [jvm_term x, jvm_term y];
33+
jvm_return (jvm_term {{ x + y }});
34+
}
35+
do {
36+
check_goal;
37+
z3;
38+
};
39+
40+
jvm_verify c "addShort" [] false
41+
do {
42+
x <- jvm_fresh_var "x" java_short;
43+
y <- jvm_fresh_var "y" java_short;
44+
jvm_execute_func [jvm_term x, jvm_term y];
45+
jvm_return (jvm_term {{ x + y }});
46+
}
47+
do {
48+
check_goal;
49+
z3;
50+
};
51+
52+
jvm_verify c "updBoolean" [] false
53+
do {
54+
a <- jvm_fresh_var "x" (java_array 4 java_bool);
55+
x <- jvm_fresh_var "x" java_bool;
56+
aref <- jvm_alloc_array 4 java_bool;
57+
jvm_array_is aref a;
58+
jvm_execute_func [aref, jvm_term x];
59+
jvm_array_is aref {{ update a 0x0 x }};
60+
}
61+
do {
62+
check_goal;
63+
z3;
64+
};
65+
66+
jvm_verify c "updByte" [] false
67+
do {
68+
a <- jvm_fresh_var "x" (java_array 4 java_byte);
69+
x <- jvm_fresh_var "x" java_byte;
70+
aref <- jvm_alloc_array 4 java_byte;
71+
jvm_array_is aref a;
72+
jvm_execute_func [aref, jvm_term x];
73+
jvm_array_is aref {{ update a 0x0 x }};
74+
}
75+
do {
76+
check_goal;
77+
z3;
78+
};
79+
80+
jvm_verify c "updChar" [] false
81+
do {
82+
a <- jvm_fresh_var "x" (java_array 4 java_char);
83+
x <- jvm_fresh_var "x" java_char;
84+
aref <- jvm_alloc_array 4 java_char;
85+
jvm_array_is aref a;
86+
jvm_execute_func [aref, jvm_term x];
87+
jvm_array_is aref {{ update a 0x0 x }};
88+
}
89+
do {
90+
check_goal;
91+
z3;
92+
};
93+
94+
jvm_verify c "updShort" [] false
95+
do {
96+
a <- jvm_fresh_var "x" (java_array 4 java_short);
97+
x <- jvm_fresh_var "x" java_short;
98+
aref <- jvm_alloc_array 4 java_short;
99+
jvm_array_is aref a;
100+
jvm_execute_func [aref, jvm_term x];
101+
jvm_array_is aref {{ update a 0x0 x }};
102+
}
103+
do {
104+
check_goal;
105+
z3;
106+
};

intTests/test_jvm_small_types/test.sh

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
$SAW test.saw

0 commit comments

Comments
 (0)