mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-20 19:45:12 +00:00
AK: Make Vector::remove_all_matching() return removal success
This matches the behavior of other remove_*_matching() functions.
This commit is contained in:
parent
5279a04c78
commit
558fb0a04a
Notes:
sideshowbarker
2024-07-17 21:35:13 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/558fb0a04ae
2 changed files with 27 additions and 1 deletions
|
@ -405,15 +405,18 @@ public:
|
|||
}
|
||||
|
||||
template<typename TUnaryPredicate>
|
||||
void remove_all_matching(TUnaryPredicate predicate)
|
||||
bool remove_all_matching(TUnaryPredicate predicate)
|
||||
{
|
||||
bool something_was_removed = false;
|
||||
for (size_t i = 0; i < size();) {
|
||||
if (predicate(at(i))) {
|
||||
remove(i);
|
||||
something_was_removed = true;
|
||||
} else {
|
||||
++i;
|
||||
}
|
||||
}
|
||||
return something_was_removed;
|
||||
}
|
||||
|
||||
ALWAYS_INLINE T take_last()
|
||||
|
|
|
@ -259,6 +259,29 @@ TEST_CASE(vector_remove)
|
|||
EXPECT_EQ(ints[0], 4);
|
||||
}
|
||||
|
||||
TEST_CASE(remove_all_matching)
|
||||
{
|
||||
Vector<int> ints;
|
||||
|
||||
ints.append(1);
|
||||
ints.append(2);
|
||||
ints.append(3);
|
||||
ints.append(4);
|
||||
|
||||
EXPECT_EQ(ints.size(), 4u);
|
||||
|
||||
EXPECT_EQ(ints.remove_all_matching([&](int value) { return value > 2; }), true);
|
||||
EXPECT_EQ(ints.remove_all_matching([&](int) { return false; }), false);
|
||||
|
||||
EXPECT_EQ(ints.size(), 2u);
|
||||
|
||||
EXPECT_EQ(ints.remove_all_matching([&](int) { return true; }), true);
|
||||
|
||||
EXPECT(ints.is_empty());
|
||||
|
||||
EXPECT_EQ(ints.remove_all_matching([&](int) { return true; }), false);
|
||||
}
|
||||
|
||||
TEST_CASE(nonnullownptrvector)
|
||||
{
|
||||
struct Object {
|
||||
|
|
Loading…
Add table
Reference in a new issue