optimize chatter list (#2814)

* optimize chatter list

* changelog

* Fix tests

Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
This commit is contained in:
fourtf
2021-05-24 12:13:59 +02:00
committed by GitHub
parent 7659dc27ae
commit 3fddafb867
19 changed files with 371 additions and 532 deletions
+84
View File
@@ -0,0 +1,84 @@
#include "common/ChatterSet.hpp"
#include <gtest/gtest.h>
#include <QStringList>
TEST(ChatterSet, insert)
{
chatterino::ChatterSet set;
EXPECT_FALSE(set.contains("pajlada"));
EXPECT_FALSE(set.contains("Pajlada"));
set.addRecentChatter("pajlada");
EXPECT_TRUE(set.contains("pajlada"));
EXPECT_TRUE(set.contains("Pajlada"));
set.addRecentChatter("pajlada");
EXPECT_TRUE(set.contains("pajlada"));
EXPECT_TRUE(set.contains("Pajlada"));
set.addRecentChatter("PAJLADA");
EXPECT_TRUE(set.contains("pajlada"));
EXPECT_TRUE(set.contains("Pajlada"));
}
TEST(ChatterSet, MaxSize)
{
chatterino::ChatterSet set;
EXPECT_FALSE(set.contains("pajlada"));
EXPECT_FALSE(set.contains("Pajlada"));
set.addRecentChatter("pajlada");
EXPECT_TRUE(set.contains("pajlada"));
EXPECT_TRUE(set.contains("Pajlada"));
// After adding CHATTER_LIMIT-1 additional chatters, pajlada should still be in the set
for (auto i = 0; i < chatterino::ChatterSet::chatterLimit - 1; ++i)
{
set.addRecentChatter(QString("%1").arg(i));
}
EXPECT_TRUE(set.contains("pajlada"));
EXPECT_TRUE(set.contains("Pajlada"));
// But adding one more chatter should bump pajlada out of the set
set.addRecentChatter("notpajlada");
EXPECT_FALSE(set.contains("pajlada"));
EXPECT_FALSE(set.contains("Pajlada"));
}
TEST(ChatterSet, MaxSizeLastUsed)
{
chatterino::ChatterSet set;
EXPECT_FALSE(set.contains("pajlada"));
EXPECT_FALSE(set.contains("Pajlada"));
set.addRecentChatter("pajlada");
EXPECT_TRUE(set.contains("pajlada"));
EXPECT_TRUE(set.contains("Pajlada"));
// After adding CHATTER_LIMIT-1 additional chatters, pajlada should still be in the set
for (auto i = 0; i < chatterino::ChatterSet::chatterLimit - 1; ++i)
{
set.addRecentChatter(QString("%1").arg(i));
}
EXPECT_TRUE(set.contains("pajlada"));
EXPECT_TRUE(set.contains("Pajlada"));
// Bump pajlada as a recent chatter
set.addRecentChatter("pajlada");
// After another CHATTER_LIMIT-1 additional chatters, pajlada should still be there
for (auto i = 0; i < chatterino::ChatterSet::chatterLimit - 1; ++i)
{
set.addRecentChatter(QString("new-%1").arg(i));
}
EXPECT_TRUE(set.contains("pajlada"));
EXPECT_TRUE(set.contains("Pajlada"));
}