Skip to content

Commit 9f81816

Browse files
authored
Merge pull request #5114 from danpoe/feature/string-builder-append
Tests for constant propagation of StringBuilder.append()
2 parents 31cd424 + 6ecf35e commit 9f81816

15 files changed

+186
-0
lines changed
Binary file not shown.
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
class Test {
2+
public void testBooleanSuccess() {
3+
StringBuilder sb = new StringBuilder("abc");
4+
sb.append(true);
5+
assert sb.toString().equals("abctrue");
6+
}
7+
8+
public void testCharSuccess() {
9+
StringBuilder sb = new StringBuilder("abc");
10+
sb.append('a');
11+
assert sb.toString().equals("abca");
12+
}
13+
14+
public void testIntSuccess() {
15+
StringBuilder sb = new StringBuilder("abc");
16+
sb.append(3);
17+
assert sb.toString().equals("abc3");
18+
}
19+
20+
public void testLongSuccess() {
21+
StringBuilder sb = new StringBuilder("abc");
22+
sb.append(3L);
23+
assert sb.toString().equals("abc3");
24+
}
25+
26+
public void testCharSequenceSuccess() {
27+
StringBuilder sb = new StringBuilder("abc");
28+
CharSequence cs = "xyz";
29+
sb.append(cs);
30+
assert sb.toString().equals("abcxyz");
31+
}
32+
33+
public void testStringBufferSuccess() {
34+
StringBuilder sb = new StringBuilder("abc");
35+
StringBuffer buf = new StringBuffer("xyz");
36+
sb.append(buf);
37+
assert sb.toString().equals("abcxyz");
38+
}
39+
40+
public void testBooleanNoPropagation(boolean b) {
41+
StringBuilder sb = new StringBuilder("abc");
42+
sb.append(b);
43+
assert sb.toString().equals("abctrue");
44+
}
45+
46+
public void testCharNoPropagation(char c) {
47+
StringBuilder sb = new StringBuilder("abc");
48+
sb.append(c);
49+
assert sb.toString().equals("abca");
50+
}
51+
52+
public void testIntNoPropagation(int i) {
53+
StringBuilder sb = new StringBuilder("abc");
54+
sb.append(i);
55+
assert sb.toString().equals("abc3");
56+
}
57+
58+
public void testLongNoPropagation(long l) {
59+
StringBuilder sb = new StringBuilder("abc");
60+
sb.append(l);
61+
assert sb.toString().equals("abc3");
62+
}
63+
64+
public void testCharSequenceNoPropagation(CharSequence cs) {
65+
StringBuilder sb = new StringBuilder("abc");
66+
sb.append(cs);
67+
assert sb.toString().equals("abcxyz");
68+
}
69+
70+
public void testStringBufferNoPropagation(StringBuffer buf) {
71+
StringBuilder sb = new StringBuilder("abc");
72+
sb.append(buf);
73+
assert sb.toString().equals("abcxyz");
74+
}
75+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
CORE symex-driven-lazy-loading-expected-failure
2+
Test.class
3+
--function Test.testBooleanNoPropagation --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar` --property 'java::Test.testBooleanNoPropagation:(Z)V.assertion.1'
4+
^Generated [0-9]+ VCC\(s\), 1 remaining after simplification$
5+
^EXIT=10$
6+
^SIGNAL=0$
7+
^VERIFICATION FAILED$
8+
--
9+
--
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
CORE
2+
Test.class
3+
--function Test.testBooleanSuccess --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar`
4+
^Generated [0-9]+ VCC\(s\), 0 remaining after simplification$
5+
^EXIT=0$
6+
^SIGNAL=0$
7+
^VERIFICATION SUCCESSFUL$
8+
--
9+
--
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
CORE symex-driven-lazy-loading-expected-failure
2+
Test.class
3+
--function Test.testCharNoPropagation --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar` --property 'java::Test.testCharNoPropagation:(C)V.assertion.1'
4+
^Generated [0-9]+ VCC\(s\), 1 remaining after simplification$
5+
^EXIT=10$
6+
^SIGNAL=0$
7+
^VERIFICATION FAILED$
8+
--
9+
--
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
CORE symex-driven-lazy-loading-expected-failure
2+
Test.class
3+
--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'
4+
^Generated [0-9]+ VCC\(s\), 1 remaining after simplification$
5+
^EXIT=10$
6+
^SIGNAL=0$
7+
^VERIFICATION FAILED$
8+
--
9+
--
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
CORE
2+
Test.class
3+
--function Test.testCharSequenceSuccess --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar`
4+
^Generated [0-9]+ VCC\(s\), 0 remaining after simplification$
5+
^EXIT=0$
6+
^SIGNAL=0$
7+
^VERIFICATION SUCCESSFUL$
8+
--
9+
--
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
FUTURE
2+
Test.class
3+
--function Test.testCharSuccess --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar`
4+
^Generated [0-9]+ VCC\(s\), 0 remaining after simplification$
5+
^EXIT=0$
6+
^SIGNAL=0$
7+
^VERIFICATION SUCCESSFUL$
8+
--
9+
--
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
CORE symex-driven-lazy-loading-expected-failure
2+
Test.class
3+
--function Test.testIntNoPropagation --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar` --property 'java::Test.testIntNoPropagation:(I)V.assertion.1'
4+
^Generated [0-9]+ VCC\(s\), 1 remaining after simplification$
5+
^EXIT=10$
6+
^SIGNAL=0$
7+
^VERIFICATION FAILED$
8+
--
9+
--
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
CORE
2+
Test.class
3+
--function Test.testIntSuccess --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar`
4+
^Generated [0-9]+ VCC\(s\), 0 remaining after simplification$
5+
^EXIT=0$
6+
^SIGNAL=0$
7+
^VERIFICATION SUCCESSFUL$
8+
--
9+
--

0 commit comments

Comments
 (0)