mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 15:27:35 +00:00
AK: Make String::substring() return non-null for 0-length strings
This also makes String::split() give non-null strings when keep_empty is true.
This commit is contained in:
parent
9dcbb263f1
commit
e57a432118
2 changed files with 26 additions and 1 deletions
|
@ -125,7 +125,7 @@ String String::isolated_copy() const
|
|||
String String::substring(size_t start, size_t length) const
|
||||
{
|
||||
if (!length)
|
||||
return {};
|
||||
return "";
|
||||
ASSERT(m_impl);
|
||||
ASSERT(start + length <= m_impl->length());
|
||||
// FIXME: This needs some input bounds checking.
|
||||
|
|
|
@ -188,6 +188,16 @@ TEST_CASE(replace)
|
|||
EXPECT(test_string == "111._.|||._.|||");
|
||||
}
|
||||
|
||||
TEST_CASE(substring)
|
||||
{
|
||||
String test = "abcdef";
|
||||
EXPECT_EQ(test.substring(0, 6), test);
|
||||
EXPECT_EQ(test.substring(0, 3), "abc");
|
||||
EXPECT_EQ(test.substring(3, 3), "def");
|
||||
EXPECT_EQ(test.substring(3, 0), "");
|
||||
EXPECT_EQ(test.substring(6, 0), "");
|
||||
}
|
||||
|
||||
TEST_CASE(split)
|
||||
{
|
||||
String test = "foo bar baz";
|
||||
|
@ -200,6 +210,21 @@ TEST_CASE(split)
|
|||
EXPECT_EQ(parts[0].characters()[3], '\0');
|
||||
EXPECT_EQ(parts[1].characters()[3], '\0');
|
||||
EXPECT_EQ(parts[2].characters()[3], '\0');
|
||||
|
||||
test = "a b";
|
||||
|
||||
parts = test.split(' ');
|
||||
EXPECT_EQ(parts.size(), 2u);
|
||||
EXPECT_EQ(parts[0], "a");
|
||||
EXPECT_EQ(parts[1], "b");
|
||||
|
||||
parts = test.split(' ', true);
|
||||
EXPECT_EQ(parts.size(), 5u);
|
||||
EXPECT_EQ(parts[0], "a");
|
||||
EXPECT_EQ(parts[1], "");
|
||||
EXPECT_EQ(parts[2], "");
|
||||
EXPECT_EQ(parts[3], "");
|
||||
EXPECT_EQ(parts[4], "b");
|
||||
}
|
||||
|
||||
TEST_CASE(builder_zero_initial_capacity)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue