Add regression tests for constant propagation of StringBuilder.append()

This commit is contained in:
Daniel Poetzl 2019-09-17 18:05:32 +01:00
parent 39d13e4e9e
commit 6ecf35ec9c
14 changed files with 183 additions and 0 deletions

View File

@ -0,0 +1,75 @@
class Test {
public void testBooleanSuccess() {
StringBuilder sb = new StringBuilder("abc");
sb.append(true);
assert sb.toString().equals("abctrue");
}
public void testCharSuccess() {
StringBuilder sb = new StringBuilder("abc");
sb.append('a');
assert sb.toString().equals("abca");
}
public void testIntSuccess() {
StringBuilder sb = new StringBuilder("abc");
sb.append(3);
assert sb.toString().equals("abc3");
}
public void testLongSuccess() {
StringBuilder sb = new StringBuilder("abc");
sb.append(3L);
assert sb.toString().equals("abc3");
}
public void testCharSequenceSuccess() {
StringBuilder sb = new StringBuilder("abc");
CharSequence cs = "xyz";
sb.append(cs);
assert sb.toString().equals("abcxyz");
}
public void testStringBufferSuccess() {
StringBuilder sb = new StringBuilder("abc");
StringBuffer buf = new StringBuffer("xyz");
sb.append(buf);
assert sb.toString().equals("abcxyz");
}
public void testBooleanNoPropagation(boolean b) {
StringBuilder sb = new StringBuilder("abc");
sb.append(b);
assert sb.toString().equals("abctrue");
}
public void testCharNoPropagation(char c) {
StringBuilder sb = new StringBuilder("abc");
sb.append(c);
assert sb.toString().equals("abca");
}
public void testIntNoPropagation(int i) {
StringBuilder sb = new StringBuilder("abc");
sb.append(i);
assert sb.toString().equals("abc3");
}
public void testLongNoPropagation(long l) {
StringBuilder sb = new StringBuilder("abc");
sb.append(l);
assert sb.toString().equals("abc3");
}
public void testCharSequenceNoPropagation(CharSequence cs) {
StringBuilder sb = new StringBuilder("abc");
sb.append(cs);
assert sb.toString().equals("abcxyz");
}
public void testStringBufferNoPropagation(StringBuffer buf) {
StringBuilder sb = new StringBuilder("abc");
sb.append(buf);
assert sb.toString().equals("abcxyz");
}
}

View File

@ -0,0 +1,9 @@
CORE symex-driven-lazy-loading-expected-failure
Test.class
--function Test.testBooleanNoPropagation --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar` --property 'java::Test.testBooleanNoPropagation:(Z)V.assertion.1'
^Generated [0-9]+ VCC\(s\), 1 remaining after simplification$
^EXIT=10$
^SIGNAL=0$
^VERIFICATION FAILED$
--
--

View File

@ -0,0 +1,9 @@
CORE
Test.class
--function Test.testBooleanSuccess --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar`
^Generated [0-9]+ VCC\(s\), 0 remaining after simplification$
^EXIT=0$
^SIGNAL=0$
^VERIFICATION SUCCESSFUL$
--
--

View File

@ -0,0 +1,9 @@
CORE symex-driven-lazy-loading-expected-failure
Test.class
--function Test.testCharNoPropagation --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar` --property 'java::Test.testCharNoPropagation:(C)V.assertion.1'
^Generated [0-9]+ VCC\(s\), 1 remaining after simplification$
^EXIT=10$
^SIGNAL=0$
^VERIFICATION FAILED$
--
--

View File

@ -0,0 +1,9 @@
CORE symex-driven-lazy-loading-expected-failure
Test.class
--function Test.testCharSequenceNoPropagation --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar` --property 'java::Test.testCharSequenceNoPropagation:(Ljava/lang/CharSequence;)V.assertion.1'
^Generated [0-9]+ VCC\(s\), 1 remaining after simplification$
^EXIT=10$
^SIGNAL=0$
^VERIFICATION FAILED$
--
--

View File

@ -0,0 +1,9 @@
CORE
Test.class
--function Test.testCharSequenceSuccess --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar`
^Generated [0-9]+ VCC\(s\), 0 remaining after simplification$
^EXIT=0$
^SIGNAL=0$
^VERIFICATION SUCCESSFUL$
--
--

View File

@ -0,0 +1,9 @@
FUTURE
Test.class
--function Test.testCharSuccess --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar`
^Generated [0-9]+ VCC\(s\), 0 remaining after simplification$
^EXIT=0$
^SIGNAL=0$
^VERIFICATION SUCCESSFUL$
--
--

View File

@ -0,0 +1,9 @@
CORE symex-driven-lazy-loading-expected-failure
Test.class
--function Test.testIntNoPropagation --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar` --property 'java::Test.testIntNoPropagation:(I)V.assertion.1'
^Generated [0-9]+ VCC\(s\), 1 remaining after simplification$
^EXIT=10$
^SIGNAL=0$
^VERIFICATION FAILED$
--
--

View File

@ -0,0 +1,9 @@
CORE
Test.class
--function Test.testIntSuccess --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar`
^Generated [0-9]+ VCC\(s\), 0 remaining after simplification$
^EXIT=0$
^SIGNAL=0$
^VERIFICATION SUCCESSFUL$
--
--

View File

@ -0,0 +1,9 @@
CORE symex-driven-lazy-loading-expected-failure
Test.class
--function Test.testLongNoPropagation --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar` --property 'java::Test.testLongNoPropagation:(J)V.assertion.1'
^Generated [0-9]+ VCC\(s\), 1 remaining after simplification$
^EXIT=10$
^SIGNAL=0$
^VERIFICATION FAILED$
--
--

View File

@ -0,0 +1,9 @@
CORE
Test.class
--function Test.testLongSuccess --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar`
^Generated [0-9]+ VCC\(s\), 0 remaining after simplification$
^EXIT=0$
^SIGNAL=0$
^VERIFICATION SUCCESSFUL$
--
--

View File

@ -0,0 +1,9 @@
CORE symex-driven-lazy-loading-expected-failure
Test.class
--function Test.testStringBufferNoPropagation --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar` --property 'java::Test.testStringBufferNoPropagation:(Ljava/lang/StringBuffer;)V.assertion.1'
^Generated [0-9]+ VCC\(s\), 1 remaining after simplification$
^EXIT=10$
^SIGNAL=0$
^VERIFICATION FAILED$
--
--

View File

@ -0,0 +1,9 @@
CORE
Test.class
--function Test.testStringBufferSuccess --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar`
^Generated [0-9]+ VCC\(s\), 0 remaining after simplification$
^EXIT=0$
^SIGNAL=0$
^VERIFICATION SUCCESSFUL$
--
--