optimize chatter list (#2814)
* optimize chatter list * changelog * Fix tests Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
This commit is contained in:
@@ -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"));
|
||||
}
|
||||
@@ -1,161 +0,0 @@
|
||||
#include "common/UsernameSet.hpp"
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
#include <QStringList>
|
||||
|
||||
chatterino::Prefix prefix_pajlada(QString("pajlada"));
|
||||
chatterino::Prefix prefix_Pajlada(QString("Pajlada"));
|
||||
chatterino::Prefix prefix_randers(QString("randers"));
|
||||
chatterino::Prefix prefix_Chancu(QString("ch"));
|
||||
|
||||
TEST(Prefix, isStartOf)
|
||||
{
|
||||
EXPECT_TRUE(prefix_pajlada.isStartOf("pajlada"));
|
||||
EXPECT_TRUE(prefix_pajlada.isStartOf("Pajlada"));
|
||||
EXPECT_FALSE(prefix_pajlada.isStartOf("randers"));
|
||||
|
||||
EXPECT_TRUE(prefix_Pajlada.isStartOf("pajlada"));
|
||||
EXPECT_TRUE(prefix_Pajlada.isStartOf("Pajlada"));
|
||||
EXPECT_TRUE(prefix_Pajlada.isStartOf("pajbot"));
|
||||
EXPECT_TRUE(prefix_Pajlada.isStartOf("Pajbot"));
|
||||
EXPECT_FALSE(prefix_Pajlada.isStartOf("randers"));
|
||||
}
|
||||
|
||||
TEST(Prefix, EqualsOperator)
|
||||
{
|
||||
EXPECT_EQ(prefix_pajlada, prefix_Pajlada);
|
||||
EXPECT_NE(prefix_pajlada, prefix_randers);
|
||||
}
|
||||
|
||||
TEST(UsernameSet, insert)
|
||||
{
|
||||
std::pair<chatterino::UsernameSet::Iterator, bool> p;
|
||||
chatterino::UsernameSet set;
|
||||
|
||||
EXPECT_EQ(set.size(), 0);
|
||||
|
||||
p = set.insert("pajlada");
|
||||
EXPECT_TRUE(p.second);
|
||||
|
||||
EXPECT_EQ(set.size(), 1);
|
||||
|
||||
p = set.insert("pajlada");
|
||||
EXPECT_FALSE(p.second);
|
||||
|
||||
EXPECT_EQ(set.size(), 1);
|
||||
|
||||
// Non-lowercase variant should override full lowercase variant
|
||||
p = set.insert("PAJLADA");
|
||||
EXPECT_TRUE(p.second);
|
||||
|
||||
EXPECT_EQ(set.size(), 1);
|
||||
|
||||
// Lowercase variant should not override non-lowercase variant
|
||||
p = set.insert("pajlada");
|
||||
EXPECT_FALSE(p.second);
|
||||
|
||||
EXPECT_EQ(set.size(), 1);
|
||||
|
||||
p = set.insert("pajbot");
|
||||
EXPECT_TRUE(p.second);
|
||||
|
||||
EXPECT_EQ(set.size(), 2);
|
||||
|
||||
p = set.insert("pajbot");
|
||||
EXPECT_FALSE(p.second);
|
||||
|
||||
EXPECT_EQ(set.size(), 2);
|
||||
|
||||
p = set.insert("Pajbot");
|
||||
EXPECT_TRUE(p.second);
|
||||
|
||||
EXPECT_EQ(set.size(), 2);
|
||||
|
||||
p = set.insert("PAJBOT");
|
||||
EXPECT_TRUE(p.second);
|
||||
|
||||
EXPECT_EQ(set.size(), 2);
|
||||
|
||||
// Same uppercase should not result in a change
|
||||
p = set.insert("PAJBOT");
|
||||
EXPECT_FALSE(p.second);
|
||||
|
||||
EXPECT_EQ(set.size(), 2);
|
||||
}
|
||||
|
||||
TEST(UsernameSet, CollisionTest)
|
||||
{
|
||||
QString s;
|
||||
chatterino::UsernameSet set;
|
||||
chatterino::Prefix prefix("not_");
|
||||
|
||||
set.insert("pajlada");
|
||||
set.insert("Chancu");
|
||||
set.insert("chief_tony");
|
||||
set.insert("ChodzacyKac");
|
||||
set.insert("ChatAbuser");
|
||||
set.insert("Normies_GTFO");
|
||||
set.insert("not_remzy");
|
||||
set.insert("Mullo2500");
|
||||
set.insert("muggedbyapie");
|
||||
|
||||
EXPECT_EQ(set.size(), 9);
|
||||
|
||||
{
|
||||
QStringList result;
|
||||
QStringList expectation{"Normies_GTFO", "not_remzy"};
|
||||
auto subrange = set.subrange(QString("not_"));
|
||||
std::copy(subrange.begin(), subrange.end(), std::back_inserter(result));
|
||||
EXPECT_EQ(expectation, result);
|
||||
}
|
||||
|
||||
{
|
||||
QStringList result;
|
||||
QStringList expectation{};
|
||||
auto subrange = set.subrange(QString("te"));
|
||||
std::copy(subrange.begin(), subrange.end(), std::back_inserter(result));
|
||||
EXPECT_EQ(expectation, result);
|
||||
}
|
||||
|
||||
{
|
||||
QStringList result;
|
||||
QStringList expectation{"pajlada"};
|
||||
auto subrange = set.subrange(QString("PA"));
|
||||
std::copy(subrange.begin(), subrange.end(), std::back_inserter(result));
|
||||
EXPECT_EQ(expectation, result);
|
||||
}
|
||||
|
||||
{
|
||||
QStringList result;
|
||||
QStringList expectation{"pajlada"};
|
||||
auto subrange = set.subrange(QString("pajlada"));
|
||||
std::copy(subrange.begin(), subrange.end(), std::back_inserter(result));
|
||||
EXPECT_EQ(expectation, result);
|
||||
}
|
||||
|
||||
{
|
||||
QStringList result;
|
||||
QStringList expectation{"pajlada"};
|
||||
auto subrange = set.subrange(QString("Pajl"));
|
||||
std::copy(subrange.begin(), subrange.end(), std::back_inserter(result));
|
||||
EXPECT_EQ(expectation, result);
|
||||
}
|
||||
|
||||
{
|
||||
QStringList result;
|
||||
QStringList expectation{"Chancu", "ChatAbuser", "chief_tony",
|
||||
"ChodzacyKac"};
|
||||
auto subrange = set.subrange(QString("chan"));
|
||||
std::copy(subrange.begin(), subrange.end(), std::back_inserter(result));
|
||||
EXPECT_EQ(expectation, result);
|
||||
}
|
||||
|
||||
{
|
||||
QStringList result;
|
||||
QStringList expectation{"muggedbyapie", "Mullo2500"};
|
||||
auto subrange = set.subrange(QString("mu"));
|
||||
std::copy(subrange.begin(), subrange.end(), std::back_inserter(result));
|
||||
EXPECT_EQ(expectation, result);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user