mirror of
https://github.com/Chatterino/chatterino2.git
synced 2024-11-21 22:24:07 +01:00
Add tests for the UsernameSet and Prefix classes
How to build test: mkdir build_test cd build_test cmake -DBUILD_TESTS=ON .. make -j Then to run the tests, use either: make test ctest ./chatterino-test
This commit is contained in:
parent
8bf9fc92c3
commit
cbd93f9537
3 changed files with 178 additions and 0 deletions
37
CMakeLists.txt
Normal file
37
CMakeLists.txt
Normal file
|
@ -0,0 +1,37 @@
|
|||
cmake_minimum_required(VERSION 3.8)
|
||||
|
||||
project(chatterino)
|
||||
|
||||
include_directories(src)
|
||||
|
||||
set(chatterino_SOURCES
|
||||
src/common/UsernameSet.cpp
|
||||
)
|
||||
|
||||
find_package(Qt5Widgets CONFIG REQUIRED)
|
||||
find_package(Qt5 5.9.0 REQUIRED COMPONENTS
|
||||
Core
|
||||
)
|
||||
|
||||
# set(CMAKE_AUTOMOC ON)
|
||||
|
||||
if (BUILD_TESTS)
|
||||
message("++ Tests enabled")
|
||||
find_package(GTest)
|
||||
enable_testing()
|
||||
|
||||
add_executable(chatterino-test
|
||||
${chatterino_SOURCES}
|
||||
|
||||
tests/src/main.cpp
|
||||
tests/src/UsernameSet.cpp
|
||||
)
|
||||
|
||||
target_link_libraries(chatterino-test Qt5::Core)
|
||||
|
||||
target_link_libraries(chatterino-test gtest gtest_main)
|
||||
|
||||
gtest_discover_tests(chatterino-test)
|
||||
else()
|
||||
message(FATAL_ERROR "This cmake file is only intended for tests right now. Use qmake to build chatterino2")
|
||||
endif()
|
138
tests/src/UsernameSet.cpp
Normal file
138
tests/src/UsernameSet.cpp
Normal file
|
@ -0,0 +1,138 @@
|
|||
#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);
|
||||
|
||||
p = set.insert("pajbot");
|
||||
EXPECT_TRUE(p.second);
|
||||
|
||||
EXPECT_EQ(set.size(), 2);
|
||||
|
||||
p = set.insert("pajlada");
|
||||
EXPECT_FALSE(p.second);
|
||||
|
||||
EXPECT_EQ(set.size(), 2);
|
||||
|
||||
p = set.insert("PAJLADA");
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
3
tests/src/main.cpp
Normal file
3
tests/src/main.cpp
Normal file
|
@ -0,0 +1,3 @@
|
|||
#include <gtest/gtest.h>
|
||||
|
||||
// do nothing
|
Loading…
Reference in a new issue