Skip to content

Commit

Permalink
Add std::basic_string test cases (#74830)
Browse files Browse the repository at this point in the history
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
  • Loading branch information
Tacet authored and copybara-github committed Dec 12, 2023
1 parent 3d39d2a commit 753fbcb
Show file tree
Hide file tree
Showing 22 changed files with 113 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ template <class S>
void test_string() {
test<S>(0, 0);
test<S>(10, 5);
test<S>(100, 5);
test<S>(100, 50);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ TEST_CONSTEXPR_CXX20 void test_string() {
test<S>(0, 0, 50);
}
{
test<S>(100, 1, 5);
test<S>(100, 50, 5);
test<S>(100, 50, 10);
test<S>(100, 50, 50);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,10 @@ TEST_CONSTEXPR_CXX20 void test_string() {
s.erase(5);
test(s);

s.assign(50, 'a');
s.erase(5);
test(s);

s.assign(100, 'a');
s.erase(50);
test(s);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ TEST_CONSTEXPR_CXX20 void test_string() {

test(S(), S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"));
test(S("123456789"), S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"));
test(S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"), S("123456789"));
test(S("1234567890123456789012345678901234567890123456789012345678901234567890"),
S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"));
test(S("1234567890123456789012345678901234567890123456789012345678901234567890"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ TEST_CONSTEXPR_CXX20 void test_string() {

test(S(), S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"));
test(S("123456789"), S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"));
test(S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"), S("123456789"));
test(S("1234567890123456789012345678901234567890123456789012345678901234567890"),
S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"));
test(S("1234567890123456789012345678901234567890123456789012345678901234567890"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ TEST_CONSTEXPR_CXX20 void test_string() {

test(S(), "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz");
test(S("123456789"), "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz");
test(S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"), "123456789");
test(S("1234567890123456789012345678901234567890123456789012345678901234567890"),
"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz");
test(S("1234567890123456789012345678901234567890123456789012345678901234567890"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ TEST_CONSTEXPR_CXX20 void test_string() {

test(S(), SV("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"));
test(S("123456789"), SV("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"));
test(S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"), SV("123456789"));
test(S("1234567890123456789012345678901234567890123456789012345678901234567890"),
SV("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"));
test(S("1234567890123456789012345678901234567890123456789012345678901234567890"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,11 @@ TEST_CONSTEXPR_CXX20 void test_string() {
test(S("12345678901234567890"), SV(), 0, 0, S("12345678901234567890"));
test(S("12345678901234567890"), SV("12345"), 1, 3, S("12345678901234567890234"));
test(S("12345678901234567890"), SV("12345678901234567890"), 5, 10, S("123456789012345678906789012345"));

// Starting from long string (no SSO)
test(S("1234512345678901234567890"), SV(), 0, 0, S("1234512345678901234567890"));
test(S("1234512345678901234567890"), SV("12345"), 1, 3, S("1234512345678901234567890234"));
test(S("1234512345678901234567890"), SV("12345678901234567890"), 5, 10, S("12345123456789012345678906789012345"));
}

TEST_CONSTEXPR_CXX20 bool test() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,10 @@ TEST_CONSTEXPR_CXX20 void test_string() {
test(S(), 'a', S(1, 'a'));
test(S("12345"), 'a', S("12345a"));
test(S("12345678901234567890"), 'a', S("12345678901234567890a"));
test(S("123abcabcdefghabcdefgh"), 'a', S("123abcabcdefghabcdefgha"));
test(S("123abcabcdefghabcdefgha"), 'b', S("123abcabcdefghabcdefghab"));
test(S("123abcabcdefghabcdefghab"), 'c', S("123abcabcdefghabcdefghabc"));
test(S("123abcabcdefghabcdefghabc"), 'd', S("123abcabcdefghabcdefghabcd"));
}

TEST_CONSTEXPR_CXX20 bool test() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,11 @@ TEST_CONSTEXPR_CXX20 void test_string() {
test(S("12345678901234567890"), 0, 'a', S("12345678901234567890"));
test(S("12345678901234567890"), 1, 'a', S("12345678901234567890a"));
test(S("12345678901234567890"), 10, 'a', S("12345678901234567890aaaaaaaaaa"));

// Starting from long string (no SSO)
test(S("1234567890123456789012345678901234567890"), 0, 'a', S("1234567890123456789012345678901234567890"));
test(S("1234567890123456789012345678901234567890"), 1, 'a', S("1234567890123456789012345678901234567890a"));
test(S("1234567890123456789012345678901234567890"), 10, 'a', S("1234567890123456789012345678901234567890aaaaaaaaaa"));
}

TEST_CONSTEXPR_CXX20 bool test() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,14 @@ TEST_CONSTEXPR_CXX20 void test_string() {
test(S("12345678901234567890"), S("12345"), S("1234567890123456789012345"));
test(S("12345678901234567890"), S("1234567890"), S("123456789012345678901234567890"));
test(S("12345678901234567890"), S("12345678901234567890"), S("1234567890123456789012345678901234567890"));

// Starting from long string (no SSO)
test(S("123456789012345678901234567890"), S(), S("123456789012345678901234567890"));
test(S("123456789012345678901234567890"), S("12345"), S("12345678901234567890123456789012345"));
test(S("123456789012345678901234567890"), S("1234567890"), S("1234567890123456789012345678901234567890"));
test(S("123456789012345678901234567890"),
S("12345678901234567890"),
S("12345678901234567890123456789012345678901234567890"));
}

TEST_CONSTEXPR_CXX20 bool test() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,15 @@ TEST_CONSTEXPR_CXX20 void test_string() {
test(S("12345678901234567890"), S(), 0, 0, S("12345678901234567890"));
test(S("12345678901234567890"), S("12345"), 1, 3, S("12345678901234567890234"));
test(S("12345678901234567890"), S("12345678901234567890"), 5, 10, S("123456789012345678906789012345"));

// Starting from long string (no SSO)
test(S("123456789012345678901234567890"), S(), 0, 0, S("123456789012345678901234567890"));
test(S("123456789012345678901234567890"), S("12345"), 1, 3, S("123456789012345678901234567890234"));
test(S("123456789012345678901234567890"),
S("12345678901234567890"),
5,
10,
S("1234567890123456789012345678906789012345"));
}

TEST_CONSTEXPR_CXX20 bool test() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,14 @@ TEST_CONSTEXPR_CXX20 void test_string() {
test(S("12345678901234567890"), SV("12345"), S("1234567890123456789012345"));
test(S("12345678901234567890"), SV("1234567890"), S("123456789012345678901234567890"));
test(S("12345678901234567890"), SV("12345678901234567890"), S("1234567890123456789012345678901234567890"));

// Starting from long string (no SSO)
test(S("123456789012345678901234567890"), SV(), S("123456789012345678901234567890"));
test(S("123456789012345678901234567890"), SV("12345"), S("12345678901234567890123456789012345"));
test(S("123456789012345678901234567890"), SV("1234567890"), S("1234567890123456789012345678901234567890"));
test(S("123456789012345678901234567890"),
SV("12345678901234567890"),
S("12345678901234567890123456789012345678901234567890"));
}

TEST_CONSTEXPR_CXX20 bool test() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,11 @@ TEST_CONSTEXPR_CXX20 void test_string() {
test(S("12345678901234567890"), "", S());
test(S("12345678901234567890"), "12345", S("12345"));
test(S("12345678901234567890"), "12345678901234567890", S("12345678901234567890"));

// Starting from long string (no SSO)
test(S("1234512345678901234567890"), "", S());
test(S("1234512345678901234567890"), "12345", S("12345"));
test(S("1234512345678901234567890"), "12345678901234567890", S("12345678901234567890"));
}

TEST_CONSTEXPR_CXX20 bool test() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,12 @@ TEST_CONSTEXPR_CXX20 void test_string() {
test(S("12345678901234567890"), "", 0, S());
test(S("12345678901234567890"), "12345", 5, S("12345"));
test(S("12345678901234567890"), "12345678901234567890", 20, S("12345678901234567890"));

// Starting from long string (no SSO)
test(S("1234512345678901234567890"), "", 0, S());
test(S("1234512345678901234567890"), "12345", 5, S("12345"));
test(S("1234512345678901234567890"), "12345678901234567890", 20, S("12345678901234567890"));
test(S("1234512345678901234567890"), "123451234512345678901234567890", 30, S("123451234512345678901234567890"));
}

TEST_CONSTEXPR_CXX20 bool test() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,8 @@ TEST_CONSTEXPR_CXX20 void test_string() {
test(S("abcdefghijklmnopqrst"), s, 20, 0);
test(S("abcdefghijklmnopqrst"), s, 20, 1);
test(S("abcdefghijklmnopqrst"), s, 21, 0);
test(S("abcdefghijklmnopqrstabcdefghijklmnopqrst"), s, 40, 1);
test(S("abcdefghijklmnopqrstabcdefghijklmnopqrst"), s, 40, 0);
}

TEST_CONSTEXPR_CXX20 bool test() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,23 @@ TEST_CONSTEXPR_CXX20 void test_string() {
test(s, s.begin() + 4, 'A', S("a567A1432dcb"));
test(s, s.begin() + 5, 'B', S("a567AB1432dcb"));
test(s, s.begin() + 6, 'C', S("a567ABC1432dcb"));
test(s, s.begin(), 'x', S("xa567ABC1432dcb"));
test(s, s.begin(), 'x', S("xxa567ABC1432dcb"));
test(s, s.begin(), 'x', S("xxxa567ABC1432dcb"));
test(s, s.begin(), 'x', S("xxxxa567ABC1432dcb"));
test(s, s.begin(), 'x', S("xxxxxa567ABC1432dcb"));
test(s, s.begin(), 'x', S("xxxxxxa567ABC1432dcb"));
test(s, s.begin(), 'x', S("xxxxxxxa567ABC1432dcb"));
test(s, s.begin(), 'x', S("xxxxxxxxa567ABC1432dcb"));
test(s, s.begin(), 'x', S("xxxxxxxxxa567ABC1432dcb"));
test(s, s.begin(), 'x', S("xxxxxxxxxxa567ABC1432dcb"));
test(s, s.begin(), 'x', S("xxxxxxxxxxxa567ABC1432dcb"));
test(s, s.begin(), 'x', S("xxxxxxxxxxxxa567ABC1432dcb"));
test(s, s.begin(), 'x', S("xxxxxxxxxxxxxa567ABC1432dcb"));
test(s, s.begin(), 'x', S("xxxxxxxxxxxxxxa567ABC1432dcb"));
test(s, s.begin(), 'x', S("xxxxxxxxxxxxxxxa567ABC1432dcb"));
test(s, s.begin(), 'x', S("xxxxxxxxxxxxxxxxa567ABC1432dcb"));
test(s, s.begin() + 1, 'x', S("xxxxxxxxxxxxxxxxxa567ABC1432dcb"));
}

TEST_CONSTEXPR_CXX20 bool test() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ TEST_CONSTEXPR_CXX20 void test_string() {
test(S("12345"), 'a', S("12345a"));
test(S("1234567890"), 'a', S("1234567890a"));
test(S("12345678901234567890"), 'a', S("12345678901234567890a"));
test(S("1234567890123456789012345678901234567890"), 'a', S("1234567890123456789012345678901234567890a"));
}

TEST_CONSTEXPR_CXX20 bool test() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,16 @@ TEST_CONSTEXPR_CXX20 void test_string() {
test(S("12345678901234567890"), "12345", S("1234567890123456789012345"));
test(S("12345678901234567890"), "1234567890", S("123456789012345678901234567890"));
test(S("12345678901234567890"), "12345678901234567890", S("1234567890123456789012345678901234567890"));

// Starting from long string (no SSO)
test(S("1234567890123456789012345678901234567890"), "", S("1234567890123456789012345678901234567890"));
test(S("1234567890123456789012345678901234567890"), "12345", S("123456789012345678901234567890123456789012345"));
test(S("1234567890123456789012345678901234567890"),
"12345678901234567890",
S("123456789012345678901234567890123456789012345678901234567890"));
test(S("1234567890123456789012345678901234567890"),
"1234567890123456789012345678901234567890",
S("12345678901234567890123456789012345678901234567890123456789012345678901234567890"));
}

TEST_CONSTEXPR_CXX20 bool test() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,16 @@ TEST_CONSTEXPR_CXX20 void test_string() {
test(S("12345678901234567890"), S("12345"), S("1234567890123456789012345"));
test(S("12345678901234567890"), S("1234567890"), S("123456789012345678901234567890"));
test(S("12345678901234567890"), S("12345678901234567890"), S("1234567890123456789012345678901234567890"));

// Starting from long string (no SSO)
test(S("1234567890123456789012345678901234567890"), S(), S("1234567890123456789012345678901234567890"));
test(S("1234567890123456789012345678901234567890"), S("12345"), S("123456789012345678901234567890123456789012345"));
test(S("1234567890123456789012345678901234567890"),
S("12345678901234567890"),
S("123456789012345678901234567890123456789012345678901234567890"));
test(S("1234567890123456789012345678901234567890"),
S("1234567890123456789012345678901234567890"),
S("12345678901234567890123456789012345678901234567890123456789012345678901234567890"));
}

TEST_CONSTEXPR_CXX20 bool test() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,10 @@ TEST_CONSTEXPR_CXX20 void test_string() {
test(S("abcdefghijklmnopqrst"), S("12345"));
test(S("abcdefghijklmnopqrst"), S("1234567890"));
test(S("abcdefghijklmnopqrst"), S("12345678901234567890"));
test(S("abcdefghijklmnopqrst123456LONG1234567890"), S(""));
test(S("abcdefghijklmnopqrst123456LONG1234567890"), S("12345"));
test(S("abcdefghijklmnopqrst123456LONG1234567890"), S("1234567890"));
test(S("abcdefghijklmnopqrst123456LONG1234567890"), S("12345678901234567890"));
}

TEST_CONSTEXPR_CXX20 bool test() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,15 @@ TEST_CONSTEXPR_CXX20 void test_string() {
test(S("ktsrmnqagdecfhijpobl"), 19, 1);
test(S("lsaijeqhtrbgcdmpfkno"), 20, 0);
test(S("dplqartnfgejichmoskb"), 21, 0);
test(S("gbmetiprqdoasckjfhlnxx"), 0, 22);
test(S("gbmetiprqdoasckjfhlnxa"), 0, 8);
test(S("gbmetiprqdoasckjfhlnxb"), 1, 0);
test(S("LONGtiprqdoasckjfhlnxxo"), 0, 23);
test(S("LONGtiprqdoasckjfhlnxap"), 0, 8);
test(S("LONGtiprqdoasckjfhlnxbl"), 1, 0);
test(S("LONGtiprqdoasckjfhlnxxyy"), 0, 24);
test(S("LONGtiprqdoasckjfhlnxxyr"), 0, 8);
test(S("LONGtiprqdoasckjfhlnxxyz"), 1, 0);
}

TEST_CONSTEXPR_CXX20 bool test() {
Expand Down

0 comments on commit 753fbcb

Please sign in to comment.