Add regression test for static array propagation
This checks that array cell sensitivity works fine for static arrays, whether we use the --static-values option or not.
This commit is contained in:
parent
9d60ccf4a3
commit
bc47e4906e
Binary file not shown.
|
@ -0,0 +1,36 @@
|
|||
class Util {
|
||||
public static char[] chars(int count) {
|
||||
char result[] = new char[count];
|
||||
for (int i = 0; i < count; ++i) {
|
||||
result[i] = (char)((int)'a' + i);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
public class Test {
|
||||
// static field which is initialized to a non-empty value
|
||||
public static char[] staticCharArray = Util.chars(26);
|
||||
// reference to the same array
|
||||
public static char[] staticCharArrayRef = staticCharArray;
|
||||
|
||||
public static char[] charArray() {
|
||||
staticCharArray[0] = staticCharArray[3];
|
||||
staticCharArray[1] = 'e';
|
||||
assert staticCharArray[0] == 'd';
|
||||
assert staticCharArray[0] == 'A';
|
||||
return staticCharArray;
|
||||
}
|
||||
|
||||
public static char[] charArrayRef() {
|
||||
staticCharArrayRef[0] = staticCharArray[3];
|
||||
staticCharArray[1] = 'e';
|
||||
if (staticCharArray[0] == 'A') {
|
||||
assert false;
|
||||
} else if (staticCharArray[0] == 'd') {
|
||||
assert false;
|
||||
}
|
||||
|
||||
return staticCharArray;
|
||||
}
|
||||
}
|
Binary file not shown.
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"@type":"com.diffblue.retriever.StaticFieldMap",
|
||||
"Test":{
|
||||
"@type":"com.diffblue.retriever.StaticFieldMap",
|
||||
"staticCharArrayRef":{
|
||||
"@type":"[C",
|
||||
"@ref": "id1"
|
||||
},
|
||||
"staticCharArray":{
|
||||
"@type":"[C",
|
||||
"@id": "id1",
|
||||
"@items":[
|
||||
"abcAefghijklmnopqrstuvwxyz"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
CORE symex-driven-lazy-loading-expected-failure
|
||||
Test.class
|
||||
--function Test.charArrayRef --property "java::Test.charArrayRef:()[C.assertion.2" --static-values static-values.json
|
||||
Generated 0 VCC[(]s[)], 0 remaining after simplification
|
||||
assertion at file Test.java line 31 .*: SUCCESS
|
||||
^EXIT=0$
|
||||
^SIGNAL=0$
|
||||
--
|
||||
--
|
||||
Not that the json file has been modified on purpose so that this checks
|
||||
that it is actually loaded and not retrieved by execution of the Util function.
|
||||
This test does not work with symex-driven-lazy-loading because this option is
|
||||
not compatible with --property.
|
|
@ -0,0 +1,13 @@
|
|||
CORE symex-driven-lazy-loading-expected-failure
|
||||
Test.class
|
||||
--function Test.charArrayRef --property "java::Test.charArrayRef:()[C.assertion.1"
|
||||
Generated 0 VCC[(]s[)], 0 remaining after simplification
|
||||
assertion at file Test.java line 29 .*: SUCCESS
|
||||
^EXIT=0$
|
||||
^SIGNAL=0$
|
||||
--
|
||||
--
|
||||
Note that the json file has been modified on purpose so that this checks
|
||||
that it is actually loaded and not retrieved by execution of the Util function.
|
||||
This test does not work with symex-driven-lazy-loading because this option is
|
||||
not compatible with --property.
|
|
@ -0,0 +1,13 @@
|
|||
CORE symex-driven-lazy-loading-expected-failure
|
||||
Test.class
|
||||
--function Test.charArray --property "java::Test.charArray:()[C.assertion.2" --static-values static-values.json
|
||||
Generated 0 VCC[(]s[)], 0 remaining after simplification
|
||||
assertion at file Test.java line 21 .*: SUCCESS
|
||||
^EXIT=0$
|
||||
^SIGNAL=0$
|
||||
--
|
||||
--
|
||||
Note that the json file has been modified on purpose so that this checks
|
||||
that it is actually loaded and not retrieved by execution of the Util function.
|
||||
This test does not work with symex-driven-lazy-loading because this option is
|
||||
not compatible with --property.
|
|
@ -0,0 +1,12 @@
|
|||
CORE symex-driven-lazy-loading-expected-failure
|
||||
Test.class
|
||||
--function Test.charArray --property "java::Test.charArray:()[C.assertion.1"
|
||||
Generated 0 VCC[(]s[)], 0 remaining after simplification
|
||||
assertion at file Test.java line 20 .*: SUCCESS
|
||||
^EXIT=0$
|
||||
^SIGNAL=0$
|
||||
--
|
||||
--
|
||||
Checks that constant propagation happens through static arrays.
|
||||
This test does not work with symex-driven-lazy-loading because this option is
|
||||
not compatible with --property.
|
Loading…
Reference in New Issue