Remove String16::remove.
This function, ironically, is being removed. Even more amusing, it was never "remove" anyway --- it literally did the opposite, and removed everything *except* the range you passed to it, and should probably have been called "keep"! I'm looking at reimplementing much of libutils, but first I'm improving test coverage, and literally every test I wrote for this failed. And then when I fixed the "obvious bugs" in the implementation, I found there actually were a couple of existing unit tests --- that mostly served to demonstrate just how counter-intuitive this function was. Bug: http://b/156999009 Test: treehugger Change-Id: I41fd85f7c0988070f4039f607d2e57523d862ed9
This commit is contained in:
parent
8371ec25ab
commit
2cf0411910
4 changed files with 0 additions and 57 deletions
|
@ -411,36 +411,4 @@ status_t String16::replaceAll(char16_t replaceThis, char16_t withThis)
|
|||
return OK;
|
||||
}
|
||||
|
||||
status_t String16::remove(size_t len, size_t begin)
|
||||
{
|
||||
const size_t N = size();
|
||||
if (begin >= N) {
|
||||
release();
|
||||
mString = getEmptyString();
|
||||
return OK;
|
||||
}
|
||||
if (len > N || len > N - begin) len = N - begin;
|
||||
if (begin == 0 && len == N) {
|
||||
return OK;
|
||||
}
|
||||
|
||||
if (begin > 0) {
|
||||
SharedBuffer* buf = static_cast<SharedBuffer*>(editResize((N + 1) * sizeof(char16_t)));
|
||||
if (!buf) {
|
||||
return NO_MEMORY;
|
||||
}
|
||||
char16_t* str = (char16_t*)buf->data();
|
||||
memmove(str, str+begin, (N-begin+1)*sizeof(char16_t));
|
||||
mString = str;
|
||||
}
|
||||
SharedBuffer* buf = static_cast<SharedBuffer*>(editResize((len + 1) * sizeof(char16_t)));
|
||||
if (buf) {
|
||||
char16_t* str = (char16_t*)buf->data();
|
||||
str[len] = 0;
|
||||
mString = str;
|
||||
return OK;
|
||||
}
|
||||
return NO_MEMORY;
|
||||
}
|
||||
|
||||
}; // namespace android
|
||||
|
|
|
@ -72,12 +72,6 @@ std::vector<std::function<void(FuzzedDataProvider&, android::String16, android::
|
|||
char16_t replaceChar = dataProvider.ConsumeIntegral<char16_t>();
|
||||
str1.replaceAll(findChar, replaceChar);
|
||||
}),
|
||||
([](FuzzedDataProvider& dataProvider, android::String16 str1,
|
||||
android::String16) -> void {
|
||||
size_t len = dataProvider.ConsumeIntegral<size_t>();
|
||||
size_t begin = dataProvider.ConsumeIntegral<size_t>();
|
||||
str1.remove(len, begin);
|
||||
}),
|
||||
};
|
||||
|
||||
void callFunc(uint8_t index, FuzzedDataProvider& dataProvider, android::String16 str1,
|
||||
|
@ -111,7 +105,5 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
|
|||
callFunc(op, dataProvider, str_one_utf16, str_two_utf16);
|
||||
}
|
||||
|
||||
str_one_utf16.remove(0, str_one_utf16.size());
|
||||
str_two_utf16.remove(0, str_two_utf16.size());
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -90,13 +90,6 @@ TEST(String16Test, Insert) {
|
|||
EXPECT_STR16EQ(u"VerifyInsert me", tmp);
|
||||
}
|
||||
|
||||
TEST(String16Test, Remove) {
|
||||
String16 tmp("Verify me");
|
||||
tmp.remove(2, 6);
|
||||
EXPECT_EQ(2U, tmp.size());
|
||||
EXPECT_STR16EQ(u" m", tmp);
|
||||
}
|
||||
|
||||
TEST(String16Test, ReplaceAll) {
|
||||
String16 tmp("Verify verify Verify");
|
||||
tmp.replaceAll(u'r', u'!');
|
||||
|
@ -161,14 +154,6 @@ TEST(String16Test, StaticStringInsert) {
|
|||
EXPECT_FALSE(tmp.isStaticString());
|
||||
}
|
||||
|
||||
TEST(String16Test, StaticStringRemove) {
|
||||
StaticString16 tmp(u"Verify me");
|
||||
tmp.remove(2, 6);
|
||||
EXPECT_EQ(2U, tmp.size());
|
||||
EXPECT_STR16EQ(u" m", tmp);
|
||||
EXPECT_FALSE(tmp.isStaticString());
|
||||
}
|
||||
|
||||
TEST(String16Test, StaticStringReplaceAll) {
|
||||
StaticString16 tmp(u"Verify verify Verify");
|
||||
tmp.replaceAll(u'r', u'!');
|
||||
|
|
|
@ -88,8 +88,6 @@ public:
|
|||
status_t replaceAll(char16_t replaceThis,
|
||||
char16_t withThis);
|
||||
|
||||
status_t remove(size_t len, size_t begin=0);
|
||||
|
||||
inline int compare(const String16& other) const;
|
||||
|
||||
inline bool operator<(const String16& other) const;
|
||||
|
|
Loading…
Reference in a new issue