Skip to content

Commit 753fbcb

Browse files
Tacetcopybara-github
authored andcommitted
Add std::basic_string test cases (#74830)
Extend `std::basic_string` tests to cover more buffer situations and length in general, particularly non-SSO cases after SSO test cases (changing buffers). This commit is a side effect of working on tests for ASan annotations. Related PR: llvm/llvm-project#72677 NOKEYCHECK=True GitOrigin-RevId: c77cdbac9b121611121adf5806a99aff4812a40c
1 parent 3d39d2a commit 753fbcb

File tree

22 files changed

+113
-0
lines changed

22 files changed

+113
-0
lines changed

test/std/strings/basic.string/string.capacity/reserve.pass.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ template <class S>
3939
void test_string() {
4040
test<S>(0, 0);
4141
test<S>(10, 5);
42+
test<S>(100, 5);
4243
test<S>(100, 50);
4344
}
4445

test/std/strings/basic.string/string.capacity/reserve_size.pass.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ TEST_CONSTEXPR_CXX20 void test_string() {
6464
test<S>(0, 0, 50);
6565
}
6666
{
67+
test<S>(100, 1, 5);
6768
test<S>(100, 50, 5);
6869
test<S>(100, 50, 10);
6970
test<S>(100, 50, 50);

test/std/strings/basic.string/string.capacity/shrink_to_fit.pass.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@ TEST_CONSTEXPR_CXX20 void test_string() {
3636
s.erase(5);
3737
test(s);
3838

39+
s.assign(50, 'a');
40+
s.erase(5);
41+
test(s);
42+
3943
s.assign(100, 'a');
4044
s.erase(50);
4145
test(s);

test/std/strings/basic.string/string.cons/copy_assignment.pass.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ TEST_CONSTEXPR_CXX20 void test_string() {
3535

3636
test(S(), S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"));
3737
test(S("123456789"), S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"));
38+
test(S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"), S("123456789"));
3839
test(S("1234567890123456789012345678901234567890123456789012345678901234567890"),
3940
S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"));
4041
test(S("1234567890123456789012345678901234567890123456789012345678901234567890"

test/std/strings/basic.string/string.cons/move_assignment.pass.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ TEST_CONSTEXPR_CXX20 void test_string() {
4040

4141
test(S(), S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"));
4242
test(S("123456789"), S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"));
43+
test(S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"), S("123456789"));
4344
test(S("1234567890123456789012345678901234567890123456789012345678901234567890"),
4445
S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"));
4546
test(S("1234567890123456789012345678901234567890123456789012345678901234567890"

test/std/strings/basic.string/string.cons/pointer_assignment.pass.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ TEST_CONSTEXPR_CXX20 void test_string() {
3737

3838
test(S(), "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz");
3939
test(S("123456789"), "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz");
40+
test(S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"), "123456789");
4041
test(S("1234567890123456789012345678901234567890123456789012345678901234567890"),
4142
"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz");
4243
test(S("1234567890123456789012345678901234567890123456789012345678901234567890"

test/std/strings/basic.string/string.cons/string_view_assignment.pass.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ TEST_CONSTEXPR_CXX20 void test_string() {
3737

3838
test(S(), SV("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"));
3939
test(S("123456789"), SV("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"));
40+
test(S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"), SV("123456789"));
4041
test(S("1234567890123456789012345678901234567890123456789012345678901234567890"),
4142
SV("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"));
4243
test(S("1234567890123456789012345678901234567890123456789012345678901234567890"

test/std/strings/basic.string/string.modifiers/string_append/T_size_size.pass.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,11 @@ TEST_CONSTEXPR_CXX20 void test_string() {
8080
test(S("12345678901234567890"), SV(), 0, 0, S("12345678901234567890"));
8181
test(S("12345678901234567890"), SV("12345"), 1, 3, S("12345678901234567890234"));
8282
test(S("12345678901234567890"), SV("12345678901234567890"), 5, 10, S("123456789012345678906789012345"));
83+
84+
// Starting from long string (no SSO)
85+
test(S("1234512345678901234567890"), SV(), 0, 0, S("1234512345678901234567890"));
86+
test(S("1234512345678901234567890"), SV("12345"), 1, 3, S("1234512345678901234567890234"));
87+
test(S("1234512345678901234567890"), SV("12345678901234567890"), 5, 10, S("12345123456789012345678906789012345"));
8388
}
8489

8590
TEST_CONSTEXPR_CXX20 bool test() {

test/std/strings/basic.string/string.modifiers/string_append/push_back.pass.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,10 @@ TEST_CONSTEXPR_CXX20 void test_string() {
6868
test(S(), 'a', S(1, 'a'));
6969
test(S("12345"), 'a', S("12345a"));
7070
test(S("12345678901234567890"), 'a', S("12345678901234567890a"));
71+
test(S("123abcabcdefghabcdefgh"), 'a', S("123abcabcdefghabcdefgha"));
72+
test(S("123abcabcdefghabcdefgha"), 'b', S("123abcabcdefghabcdefghab"));
73+
test(S("123abcabcdefghabcdefghab"), 'c', S("123abcabcdefghabcdefghabc"));
74+
test(S("123abcabcdefghabcdefghabc"), 'd', S("123abcabcdefghabcdefghabcd"));
7175
}
7276

7377
TEST_CONSTEXPR_CXX20 bool test() {

test/std/strings/basic.string/string.modifiers/string_append/size_char.pass.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@ TEST_CONSTEXPR_CXX20 void test_string() {
3838
test(S("12345678901234567890"), 0, 'a', S("12345678901234567890"));
3939
test(S("12345678901234567890"), 1, 'a', S("12345678901234567890a"));
4040
test(S("12345678901234567890"), 10, 'a', S("12345678901234567890aaaaaaaaaa"));
41+
42+
// Starting from long string (no SSO)
43+
test(S("1234567890123456789012345678901234567890"), 0, 'a', S("1234567890123456789012345678901234567890"));
44+
test(S("1234567890123456789012345678901234567890"), 1, 'a', S("1234567890123456789012345678901234567890a"));
45+
test(S("1234567890123456789012345678901234567890"), 10, 'a', S("1234567890123456789012345678901234567890aaaaaaaaaa"));
4146
}
4247

4348
TEST_CONSTEXPR_CXX20 bool test() {

0 commit comments

Comments
 (0)