Skip to content

Commit 9938405

Browse files
committed
Add tests for static fields with references to primitive wrappers
In this case, the values are represented as simple JSON numbers, booleans or strings. This did not work before the recent fix for primitive wrapper types.
1 parent 8317e49 commit 9938405

35 files changed

+265
-0
lines changed
Binary file not shown.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
public class ContainerForBoolean {
2+
public Boolean booleanField;
3+
public ContainerForBoolean(Boolean b) { booleanField = b; }
4+
}
Binary file not shown.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
public class ContainerForByte {
2+
public Byte byteField;
3+
public ContainerForByte(Byte b) { byteField = b; }
4+
}
Binary file not shown.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
public class ContainerForCharacter {
2+
public Character characterField;
3+
public ContainerForCharacter(Character c) { characterField = c; }
4+
}
Binary file not shown.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
public class ContainerForDouble {
2+
public Double doubleField;
3+
public ContainerForDouble(Double d) { doubleField = d; }
4+
}
Binary file not shown.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
public class ContainerForFloat {
2+
public Float floatField;
3+
public ContainerForFloat(Float f) { floatField = f; }
4+
}
Binary file not shown.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
public class ContainerForInteger {
2+
public Integer integerField;
3+
public ContainerForInteger(Integer i) { integerField = Util.setTo(i); }
4+
}
Binary file not shown.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
public class ContainerForLong {
2+
public Long longField;
3+
public ContainerForLong(Long l) { longField = l; }
4+
}
Binary file not shown.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
public class ContainerForShort {
2+
public Short shortField;
3+
public ContainerForShort(Short s) { shortField = s; }
4+
}
Binary file not shown.

jbmc/regression/jbmc/deterministic_assignments_json/StaticValues.java

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,79 @@ public static void testShortWrapperFail() {
260260
assert shortWrapperField != (short)200;
261261
}
262262

263+
// Primitive wrapper types as fields of static field types
264+
public static ContainerForBoolean booleanWrapperContainer =
265+
new ContainerForBoolean(true);
266+
public static void testBooleanWrapperContainerPass() {
267+
assert booleanWrapperContainer.booleanField;
268+
}
269+
public static void testBooleanWrapperContainerFail() {
270+
assert !booleanWrapperContainer.booleanField;
271+
}
272+
273+
public static ContainerForByte byteWrapperContainer =
274+
new ContainerForByte((byte)50);
275+
public static void testByteWrapperContainerPass() {
276+
assert byteWrapperContainer.byteField == (byte)50;
277+
}
278+
public static void testByteWrapperContainerFail() {
279+
assert byteWrapperContainer.byteField != (byte)50;
280+
}
281+
282+
public static ContainerForCharacter characterWrapperContainer =
283+
new ContainerForCharacter('!');
284+
public static void testCharacterWrapperContainerPass() {
285+
assert characterWrapperContainer.characterField == '!';
286+
}
287+
public static void testCharacterWrapperContainerFail() {
288+
assert characterWrapperContainer.characterField != '!';
289+
}
290+
291+
public static ContainerForDouble doubleWrapperContainer =
292+
new ContainerForDouble(24.56);
293+
public static void testDoubleWrapperContainerPass() {
294+
assert doubleWrapperContainer.doubleField == 24.56;
295+
}
296+
public static void testDoubleWrapperContainerFail() {
297+
assert doubleWrapperContainer.doubleField != 24.56;
298+
}
299+
300+
public static ContainerForFloat floatWrapperContainer =
301+
new ContainerForFloat(13.13f);
302+
public static void testFloatWrapperContainerPass() {
303+
assert floatWrapperContainer.floatField == 13.13f;
304+
}
305+
public static void testFloatWrapperContainerFail() {
306+
assert floatWrapperContainer.floatField != 13.13f;
307+
}
308+
309+
public static ContainerForInteger integerWrapperContainer =
310+
new ContainerForInteger(1000);
311+
public static void testIntegerWrapperContainerPass() {
312+
assert integerWrapperContainer.integerField == 1000;
313+
}
314+
public static void testIntegerWrapperContainerFail() {
315+
assert integerWrapperContainer.integerField != 1000;
316+
}
317+
318+
public static ContainerForLong longWrapperContainer =
319+
new ContainerForLong(21000000000L);
320+
public static void testLongWrapperContainerPass() {
321+
assert longWrapperContainer.longField == 21000000000L;
322+
}
323+
public static void testLongWrapperContainerFail() {
324+
assert longWrapperContainer.longField != 21000000000L;
325+
}
326+
327+
public static ContainerForShort shortWrapperContainer =
328+
new ContainerForShort((short)200);
329+
public static void testShortWrapperContainerPass() {
330+
assert shortWrapperContainer.shortField == (short)200;
331+
}
332+
public static void testShortWrapperContainerFail() {
333+
assert shortWrapperContainer.shortField != (short)200;
334+
}
335+
263336
// Strings
264337
public static String stringField = Util.repeat("hello! ", 6);
265338
public static void testStringPass() {

jbmc/regression/jbmc/deterministic_assignments_json/clinit-state.json

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -444,6 +444,38 @@
444444
"shortWrapperField":{
445445
"@type":"java.lang.Short",
446446
"value":200
447+
},
448+
"booleanWrapperContainer":{
449+
"@type":"ContainerForBoolean",
450+
"booleanField":true
451+
},
452+
"byteWrapperContainer":{
453+
"@type":"ContainerForByte",
454+
"byteField":50
455+
},
456+
"characterWrapperContainer":{
457+
"@type":"ContainerForCharacter",
458+
"characterField":"!"
459+
},
460+
"doubleWrapperContainer":{
461+
"@type":"ContainerForDouble",
462+
"doubleField":24.56
463+
},
464+
"floatWrapperContainer":{
465+
"@type":"ContainerForFloat",
466+
"floatField":13.13
467+
},
468+
"integerWrapperContainer":{
469+
"@type":"ContainerForInteger",
470+
"integerField":1000
471+
},
472+
"longWrapperContainer":{
473+
"@type":"ContainerForLong",
474+
"longField":"21000000000"
475+
},
476+
"shortWrapperContainer":{
477+
"@type":"ContainerForShort",
478+
"shortField":200
447479
}
448480
},
449481
"OtherClass":{
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CORE
2+
StaticValues.class
3+
--unwind 1 --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar` --static-values clinit-state.json --function StaticValues.testBooleanWrapperContainerFail
4+
^VERIFICATION FAILED$
5+
^EXIT=10$
6+
^SIGNAL=0$
7+
--
8+
--
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CORE
2+
StaticValues.class
3+
--unwind 1 --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar` --static-values clinit-state.json --function StaticValues.testBooleanWrapperContainerPass
4+
^VERIFICATION SUCCESSFUL$
5+
^EXIT=0$
6+
^SIGNAL=0$
7+
--
8+
--
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CORE
2+
StaticValues.class
3+
--unwind 1 --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar` --static-values clinit-state.json --function StaticValues.testByteWrapperContainerFail
4+
^VERIFICATION FAILED$
5+
^EXIT=10$
6+
^SIGNAL=0$
7+
--
8+
--
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CORE
2+
StaticValues.class
3+
--unwind 1 --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar` --static-values clinit-state.json --function StaticValues.testByteWrapperContainerPass
4+
^VERIFICATION SUCCESSFUL$
5+
^EXIT=0$
6+
^SIGNAL=0$
7+
--
8+
--
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CORE
2+
StaticValues.class
3+
--unwind 1 --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar` --static-values clinit-state.json --function StaticValues.testCharacterWrapperContainerFail
4+
^VERIFICATION FAILED$
5+
^EXIT=10$
6+
^SIGNAL=0$
7+
--
8+
--
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CORE
2+
StaticValues.class
3+
--unwind 1 --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar` --static-values clinit-state.json --function StaticValues.testCharacterWrapperContainerPass
4+
^VERIFICATION SUCCESSFUL$
5+
^EXIT=0$
6+
^SIGNAL=0$
7+
--
8+
--
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CORE
2+
StaticValues.class
3+
--unwind 1 --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar` --static-values clinit-state.json --function StaticValues.testDoubleWrapperContainerFail
4+
^VERIFICATION FAILED$
5+
^EXIT=10$
6+
^SIGNAL=0$
7+
--
8+
--
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CORE
2+
StaticValues.class
3+
--unwind 1 --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar` --static-values clinit-state.json --function StaticValues.testDoubleWrapperContainerPass
4+
^VERIFICATION SUCCESSFUL$
5+
^EXIT=0$
6+
^SIGNAL=0$
7+
--
8+
--
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CORE
2+
StaticValues.class
3+
--unwind 1 --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar` --static-values clinit-state.json --function StaticValues.testFloatWrapperContainerFail
4+
^VERIFICATION FAILED$
5+
^EXIT=10$
6+
^SIGNAL=0$
7+
--
8+
--
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CORE
2+
StaticValues.class
3+
--unwind 1 --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar` --static-values clinit-state.json --function StaticValues.testFloatWrapperContainerPass
4+
^VERIFICATION SUCCESSFUL$
5+
^EXIT=0$
6+
^SIGNAL=0$
7+
--
8+
--
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CORE
2+
StaticValues.class
3+
--unwind 1 --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar` --static-values clinit-state.json --function StaticValues.testIntegerWrapperContainerFail
4+
^VERIFICATION FAILED$
5+
^EXIT=10$
6+
^SIGNAL=0$
7+
--
8+
--
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CORE
2+
StaticValues.class
3+
--unwind 1 --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar` --static-values clinit-state.json --function StaticValues.testIntegerWrapperContainerPass
4+
^VERIFICATION SUCCESSFUL$
5+
^EXIT=0$
6+
^SIGNAL=0$
7+
--
8+
--
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CORE
2+
StaticValues.class
3+
--unwind 1 --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar` --static-values clinit-state.json --function StaticValues.testLongWrapperContainerFail
4+
^VERIFICATION FAILED$
5+
^EXIT=10$
6+
^SIGNAL=0$
7+
--
8+
--
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CORE
2+
StaticValues.class
3+
--unwind 1 --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar` --static-values clinit-state.json --function StaticValues.testLongWrapperContainerPass
4+
^VERIFICATION SUCCESSFUL$
5+
^EXIT=0$
6+
^SIGNAL=0$
7+
--
8+
--
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CORE
2+
StaticValues.class
3+
--unwind 1 --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar` --static-values clinit-state.json --function StaticValues.testShortWrapperContainerFail
4+
^VERIFICATION FAILED$
5+
^EXIT=10$
6+
^SIGNAL=0$
7+
--
8+
--
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CORE
2+
StaticValues.class
3+
--unwind 1 --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar` --static-values clinit-state.json --function StaticValues.testShortWrapperContainerPass
4+
^VERIFICATION SUCCESSFUL$
5+
^EXIT=0$
6+
^SIGNAL=0$
7+
--
8+
--

0 commit comments

Comments
 (0)