diff --git a/cockatrice/cockatrice.qrc b/cockatrice/cockatrice.qrc
index 4ec3d2385..14cf15b2f 100644
--- a/cockatrice/cockatrice.qrc
+++ b/cockatrice/cockatrice.qrc
@@ -62,9 +62,9 @@
resources/icons/mana/U.svg
resources/icons/mana/W.svg
- resources/backgrounds/home.jpg
- resources/backgrounds/home-dark.jpg
- resources/backgrounds/home-light.jpg
+ resources/backgrounds/home.png
+ resources/backgrounds/home-dark.png
+ resources/backgrounds/home-light.png
resources/backgrounds/card_triplet.svg
resources/backgrounds/placeholder_printing_selector.svg
diff --git a/cockatrice/resources/backgrounds/home-dark.jpg b/cockatrice/resources/backgrounds/home-dark.jpg
deleted file mode 100644
index 53d3406dd..000000000
Binary files a/cockatrice/resources/backgrounds/home-dark.jpg and /dev/null differ
diff --git a/cockatrice/resources/backgrounds/home-dark.png b/cockatrice/resources/backgrounds/home-dark.png
new file mode 100644
index 000000000..68f48e2c2
Binary files /dev/null and b/cockatrice/resources/backgrounds/home-dark.png differ
diff --git a/cockatrice/resources/backgrounds/home-light.jpg b/cockatrice/resources/backgrounds/home-light.jpg
deleted file mode 100644
index 112146e4f..000000000
Binary files a/cockatrice/resources/backgrounds/home-light.jpg and /dev/null differ
diff --git a/cockatrice/resources/backgrounds/home-light.png b/cockatrice/resources/backgrounds/home-light.png
new file mode 100644
index 000000000..eaaaba932
Binary files /dev/null and b/cockatrice/resources/backgrounds/home-light.png differ
diff --git a/cockatrice/resources/backgrounds/home.jpg b/cockatrice/resources/backgrounds/home.jpg
deleted file mode 100644
index 112146e4f..000000000
Binary files a/cockatrice/resources/backgrounds/home.jpg and /dev/null differ
diff --git a/cockatrice/resources/backgrounds/home.png b/cockatrice/resources/backgrounds/home.png
new file mode 100644
index 000000000..eaaaba932
Binary files /dev/null and b/cockatrice/resources/backgrounds/home.png differ
diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_report_user.cpp b/cockatrice/src/interface/widgets/dialogs/dlg_report_user.cpp
index 7b855af96..9519846e2 100644
--- a/cockatrice/src/interface/widgets/dialogs/dlg_report_user.cpp
+++ b/cockatrice/src/interface/widgets/dialogs/dlg_report_user.cpp
@@ -15,7 +15,6 @@
#include
#include
#include
-#include
DlgReportUser::DlgReportUser(AbstractClient *_client,
const QString &_reportedUser,
@@ -57,14 +56,22 @@ DlgReportUser::DlgReportUser(AbstractClient *_client,
auto *categoryGrid = new QGridLayout(categoryGroup);
categoryBox = new QComboBox;
- for (const QString &key : ReportCategories::keys()) {
- const QString label = categoryLabel(key);
- if (label.isEmpty()) {
- continue; // skip keys without a dialog label
- }
- categoryBox->addItem(label, key);
- categoryBox->setItemData(categoryBox->count() - 1, categoryToolTip(key), Qt::ToolTipRole);
- }
+ categoryBox->addItem(tr("Cheating / Unsporting behavior"), "cheating");
+ categoryBox->setItemData(categoryBox->count() - 1,
+ tr("Using external tools, card marked manipulation, or exploiting game bugs"),
+ Qt::ToolTipRole);
+ categoryBox->addItem(tr("Harassment / Abuse"), "harassment");
+ categoryBox->setItemData(categoryBox->count() - 1, tr("Threatening, bullying, or persistent unwanted contact"),
+ Qt::ToolTipRole);
+ categoryBox->addItem(tr("Hate speech"), "hate_speech");
+ categoryBox->setItemData(categoryBox->count() - 1,
+ tr("Discriminatory language targeting race, gender, religion, etc."), Qt::ToolTipRole);
+ categoryBox->addItem(tr("Spam"), "spam");
+ categoryBox->setItemData(categoryBox->count() - 1, tr("Repeated unwanted messages or advertisements"),
+ Qt::ToolTipRole);
+ categoryBox->addItem(tr("Other"), "other");
+ categoryBox->setItemData(categoryBox->count() - 1, tr("Any behavior not covered by the above categories"),
+ Qt::ToolTipRole);
categoryGrid->addWidget(new QLabel(tr("Category:")), 0, 0);
categoryGrid->addWidget(categoryBox, 0, 1);
@@ -182,55 +189,3 @@ void DlgReportUser::reportResponse(const Response &response)
QMessageBox::warning(this, tr("Submission Failed"), tr("Failed to submit report. Please try again."));
}
}
-
-QString DlgReportUser::categoryLabel(const QString &key)
-{
- if (key == QLatin1String("cheating")) {
- return tr("Cheating / Unsporting behavior");
- }
- if (key == QLatin1String("bug_abuse")) {
- return tr("Bug Abuse");
- }
- if (key == QLatin1String("harassment")) {
- return tr("Harassment / Abuse");
- }
- if (key == QLatin1String("verbal_abuse")) {
- return tr("Verbal Abuse");
- }
- if (key == QLatin1String("hate_speech")) {
- return tr("Hate speech");
- }
- if (key == QLatin1String("spam")) {
- return tr("Spam");
- }
- if (key == QLatin1String("other")) {
- return tr("Other");
- }
- return QString();
-}
-
-QString DlgReportUser::categoryToolTip(const QString &key)
-{
- if (key == QLatin1String("cheating")) {
- return tr("Using external tools, cheat programs, or exploiting game bugs");
- }
- if (key == QLatin1String("bug_abuse")) {
- return tr("Exploiting a bug or glitch to gain an unfair advantage");
- }
- if (key == QLatin1String("harassment")) {
- return tr("Threatening, bullying, or persistent unwanted contact");
- }
- if (key == QLatin1String("verbal_abuse")) {
- return tr("Abusive or offensive language directed at another player");
- }
- if (key == QLatin1String("hate_speech")) {
- return tr("Discriminatory language targeting race, gender, religion, etc.");
- }
- if (key == QLatin1String("spam")) {
- return tr("Repeated unwanted messages or advertisements");
- }
- if (key == QLatin1String("other")) {
- return tr("Any behavior not covered by the above categories");
- }
- return QString();
-}
diff --git a/cockatrice/src/interface/widgets/dialogs/dlg_report_user.h b/cockatrice/src/interface/widgets/dialogs/dlg_report_user.h
index f8d5938ce..c59fc5084 100644
--- a/cockatrice/src/interface/widgets/dialogs/dlg_report_user.h
+++ b/cockatrice/src/interface/widgets/dialogs/dlg_report_user.h
@@ -26,9 +26,6 @@ private slots:
void reportResponse(const Response &response);
private:
- static QString categoryLabel(const QString &key);
- static QString categoryToolTip(const QString &key);
-
AbstractClient *client;
QString reportedUser;
int gameId;
diff --git a/cockatrice/src/interface/widgets/server/user/user_list_widget.cpp b/cockatrice/src/interface/widgets/server/user/user_list_widget.cpp
index d9e1e1e7e..1bb7c5288 100644
--- a/cockatrice/src/interface/widgets/server/user/user_list_widget.cpp
+++ b/cockatrice/src/interface/widgets/server/user/user_list_widget.cpp
@@ -218,10 +218,9 @@ void UserListTWI::setOnline(bool online)
* 2) Admins, judge/vip/donator status ignored
* 3) Moderators, judge/vip/donator status ignored
* 4) Judges
- * 5) Developers
- * 6) VIPs
- * 7) Donators
- * 8) Everyone else
+ * 5) VIPs
+ * 6) Donators
+ * 7) Everyone else
* @param other RHS to compare to
* @return Left is less than the Right
*/
@@ -235,10 +234,11 @@ bool UserListTWI::operator<(const QTreeWidgetItem &other) const
const auto &lhsUserLevelFlags = UserLevelFlags(data(0, Qt::UserRole).toInt());
const auto &rhsUserLevelFlags = UserLevelFlags(other.data(0, Qt::UserRole).toInt());
- // Admins & Moderators need no additional comparison checks, just to see if they're an admin
+ // Admins, Developers & Mods need no additional comparison checks, just to see if they're an admin, a developer
// or a moderator
static const QList userLevelWithNoOtherPrefOrder = {
- ServerInfo_User_UserLevelFlag_IsAdmin, ServerInfo_User_UserLevelFlag_IsModerator};
+ ServerInfo_User_UserLevelFlag_IsAdmin, ServerInfo_User_UserLevelFlag_IsDeveloper,
+ ServerInfo_User_UserLevelFlag_IsModerator};
for (const auto &userLevelEntry : userLevelWithNoOtherPrefOrder) {
if (lhsUserLevelFlags.testFlag(userLevelEntry) &&
lhsUserLevelFlags.testFlag(userLevelEntry) == rhsUserLevelFlags.testFlag(userLevelEntry)) {
@@ -249,10 +249,10 @@ bool UserListTWI::operator<(const QTreeWidgetItem &other) const
}
}
- // Judges and developers can be sorted by their additional ranks
- static const QList userLevelOrder = {
- ServerInfo_User_UserLevelFlag_IsJudge, ServerInfo_User_UserLevelFlag_IsDeveloper,
- ServerInfo_User_UserLevelFlag_IsRegistered, ServerInfo_User_UserLevelFlag_IsUser};
+ // Judges can be sorted by their additional ranks
+ static const QList userLevelOrder = {ServerInfo_User_UserLevelFlag_IsJudge,
+ ServerInfo_User_UserLevelFlag_IsRegistered,
+ ServerInfo_User_UserLevelFlag_IsUser};
for (const auto &userLevelEntry : userLevelOrder) {
if (lhsUserLevelFlags.testFlag(userLevelEntry) != rhsUserLevelFlags.testFlag(userLevelEntry)) {
return lhsUserLevelFlags.testFlag(userLevelEntry) > rhsUserLevelFlags.testFlag(userLevelEntry);
diff --git a/cockatrice/themes/Fabric/backgrounds/home-dark.jpg b/cockatrice/themes/Fabric/backgrounds/home-dark.jpg
deleted file mode 100644
index f69e5923e..000000000
Binary files a/cockatrice/themes/Fabric/backgrounds/home-dark.jpg and /dev/null differ
diff --git a/cockatrice/themes/Fabric/backgrounds/home-dark.png b/cockatrice/themes/Fabric/backgrounds/home-dark.png
new file mode 100644
index 000000000..8d9514626
Binary files /dev/null and b/cockatrice/themes/Fabric/backgrounds/home-dark.png differ
diff --git a/cockatrice/themes/Fabric/backgrounds/home-light.jpg b/cockatrice/themes/Fabric/backgrounds/home-light.jpg
deleted file mode 100644
index 800e369e7..000000000
Binary files a/cockatrice/themes/Fabric/backgrounds/home-light.jpg and /dev/null differ
diff --git a/cockatrice/themes/Fabric/backgrounds/home-light.png b/cockatrice/themes/Fabric/backgrounds/home-light.png
new file mode 100644
index 000000000..78f51a686
Binary files /dev/null and b/cockatrice/themes/Fabric/backgrounds/home-light.png differ
diff --git a/cockatrice/themes/Leather/backgrounds/home-dark.jpg b/cockatrice/themes/Leather/backgrounds/home-dark.jpg
deleted file mode 100644
index 8c2c3d1df..000000000
Binary files a/cockatrice/themes/Leather/backgrounds/home-dark.jpg and /dev/null differ
diff --git a/cockatrice/themes/Leather/backgrounds/home-dark.png b/cockatrice/themes/Leather/backgrounds/home-dark.png
new file mode 100644
index 000000000..20d16a27f
Binary files /dev/null and b/cockatrice/themes/Leather/backgrounds/home-dark.png differ
diff --git a/cockatrice/themes/Leather/backgrounds/home-light.jpg b/cockatrice/themes/Leather/backgrounds/home-light.jpg
deleted file mode 100644
index 3fb49538a..000000000
Binary files a/cockatrice/themes/Leather/backgrounds/home-light.jpg and /dev/null differ
diff --git a/cockatrice/themes/Leather/backgrounds/home-light.png b/cockatrice/themes/Leather/backgrounds/home-light.png
new file mode 100644
index 000000000..ee1da361d
Binary files /dev/null and b/cockatrice/themes/Leather/backgrounds/home-light.png differ
diff --git a/cockatrice/themes/Plasma/backgrounds/home-dark.jpg b/cockatrice/themes/Plasma/backgrounds/home-dark.jpg
deleted file mode 100644
index 230d78e8e..000000000
Binary files a/cockatrice/themes/Plasma/backgrounds/home-dark.jpg and /dev/null differ
diff --git a/cockatrice/themes/Plasma/backgrounds/home-dark.png b/cockatrice/themes/Plasma/backgrounds/home-dark.png
new file mode 100644
index 000000000..ce1469e2b
Binary files /dev/null and b/cockatrice/themes/Plasma/backgrounds/home-dark.png differ
diff --git a/cockatrice/themes/Plasma/backgrounds/home-light.jpg b/cockatrice/themes/Plasma/backgrounds/home-light.jpg
deleted file mode 100644
index 2552325eb..000000000
Binary files a/cockatrice/themes/Plasma/backgrounds/home-light.jpg and /dev/null differ
diff --git a/cockatrice/themes/Plasma/backgrounds/home-light.png b/cockatrice/themes/Plasma/backgrounds/home-light.png
new file mode 100644
index 000000000..2e9000bd6
Binary files /dev/null and b/cockatrice/themes/Plasma/backgrounds/home-light.png differ
diff --git a/cockatrice/themes/VelvetMarble/backgrounds/home-dark.jpg b/cockatrice/themes/VelvetMarble/backgrounds/home-dark.jpg
deleted file mode 100644
index b55f2524e..000000000
Binary files a/cockatrice/themes/VelvetMarble/backgrounds/home-dark.jpg and /dev/null differ
diff --git a/cockatrice/themes/VelvetMarble/backgrounds/home-dark.png b/cockatrice/themes/VelvetMarble/backgrounds/home-dark.png
new file mode 100644
index 000000000..34738090f
Binary files /dev/null and b/cockatrice/themes/VelvetMarble/backgrounds/home-dark.png differ
diff --git a/cockatrice/themes/VelvetMarble/backgrounds/home-light.jpg b/cockatrice/themes/VelvetMarble/backgrounds/home-light.jpg
deleted file mode 100644
index 12a2fd2cc..000000000
Binary files a/cockatrice/themes/VelvetMarble/backgrounds/home-light.jpg and /dev/null differ
diff --git a/cockatrice/themes/VelvetMarble/backgrounds/home-light.png b/cockatrice/themes/VelvetMarble/backgrounds/home-light.png
new file mode 100644
index 000000000..de783e086
Binary files /dev/null and b/cockatrice/themes/VelvetMarble/backgrounds/home-light.png differ
diff --git a/libcockatrice_network/libcockatrice/network/client/remote/remote_client.cpp b/libcockatrice_network/libcockatrice/network/client/remote/remote_client.cpp
index de2cc720f..53608db65 100644
--- a/libcockatrice_network/libcockatrice/network/client/remote/remote_client.cpp
+++ b/libcockatrice_network/libcockatrice/network/client/remote/remote_client.cpp
@@ -559,15 +559,6 @@ void RemoteClient::ping()
PendingCommand *pend = i.next().value();
if (pend->tick() > maxTimeout) {
i.remove();
- // Answer the command instead of dropping it silently: the connection may still
- // be alive (other traffic keeps lastDataReceived fresh) while this single
- // command stalled, and awaiters such as TabServer's room-join dedup can only
- // release their in-flight markers when `finished` fires. A silent drop wedges
- // them permanently - e.g. a room whose join timing never surfaces again.
- Response response;
- response.set_response_code(Response::RespNotConnected);
- response.set_cmd_id(pend->getCommandContainer().cmd_id());
- pend->processResponse(response);
pend->deleteLater();
}
}
diff --git a/libcockatrice_utility/CMakeLists.txt b/libcockatrice_utility/CMakeLists.txt
index ab647258c..db23f7951 100644
--- a/libcockatrice_utility/CMakeLists.txt
+++ b/libcockatrice_utility/CMakeLists.txt
@@ -6,12 +6,8 @@ set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)
set(UTILITY_SOURCES
- libcockatrice/utility/cryptoutil.cpp
- libcockatrice/utility/expression.cpp
- libcockatrice/utility/levenshtein.cpp
- libcockatrice/utility/passwordhasher.cpp
- libcockatrice/utility/report_categories.cpp
- libcockatrice/utility/server_rate_limiter.cpp
+ libcockatrice/utility/cryptoutil.cpp libcockatrice/utility/expression.cpp libcockatrice/utility/levenshtein.cpp
+ libcockatrice/utility/passwordhasher.cpp libcockatrice/utility/server_rate_limiter.cpp
libcockatrice/utility/warning_categories.cpp
)
@@ -24,7 +20,6 @@ set(UTILITY_HEADERS
libcockatrice/utility/macros.h
libcockatrice/utility/passwordhasher.h
libcockatrice/utility/playmat_params.h
- libcockatrice/utility/report_categories.h
libcockatrice/utility/string_limits.h
libcockatrice/utility/dice_limits.h
libcockatrice/utility/counter_limits.h
diff --git a/libcockatrice_utility/libcockatrice/utility/report_categories.cpp b/libcockatrice_utility/libcockatrice/utility/report_categories.cpp
deleted file mode 100644
index 8551c1ca1..000000000
--- a/libcockatrice_utility/libcockatrice/utility/report_categories.cpp
+++ /dev/null
@@ -1,16 +0,0 @@
-#include "report_categories.h"
-
-namespace ReportCategories
-{
-const QStringList &keys()
-{
- static const QStringList categories = {"cheating", "bug_abuse", "harassment", "verbal_abuse",
- "hate_speech", "spam", "other"};
- return categories;
-}
-
-bool isValid(const QString &key)
-{
- return keys().contains(key, Qt::CaseInsensitive);
-}
-} // namespace ReportCategories
\ No newline at end of file
diff --git a/libcockatrice_utility/libcockatrice/utility/report_categories.h b/libcockatrice_utility/libcockatrice/utility/report_categories.h
deleted file mode 100644
index 5758c3dcf..000000000
--- a/libcockatrice_utility/libcockatrice/utility/report_categories.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef REPORT_CATEGORIES_H
-#define REPORT_CATEGORIES_H
-
-#include
-#include
-
-/**
- * Canonical report categories, shared by the client and the server.
- *
- * This is the single source of truth for the category keys exchanged over the
- * wire (Command_Report.category) and stored in the reports table. The server
- * only accepts keys from this list and the client report dialog only offers
- * keys from this list, so the two sides cannot drift apart again.
- */
-namespace ReportCategories
-{
-/** @brief The complete list of valid category keys, in canonical order. */
-const QStringList &keys();
-
-/** @brief Whether @a key is a valid report category (case-insensitive). */
-bool isValid(const QString &key);
-} // namespace ReportCategories
-
-#endif // REPORT_CATEGORIES_H
\ No newline at end of file
diff --git a/servatrice/src/serversocketinterface.cpp b/servatrice/src/serversocketinterface.cpp
index 9c78c48f3..c82a8dd73 100644
--- a/servatrice/src/serversocketinterface.cpp
+++ b/servatrice/src/serversocketinterface.cpp
@@ -128,7 +128,6 @@
#include
#include
#include
-#include
#include
#include
#include
@@ -3776,7 +3775,8 @@ Response::ResponseCode AbstractServerSocketInterface::cmdReport(const Command_Re
return Response::RespInvalidData;
}
- if (!ReportCategories::isValid(category)) {
+ static const QStringList validCategories = {"cheating", "bug_abuse", "verbal_abuse", "other"};
+ if (!validCategories.contains(category.toLower())) {
return Response::RespInvalidData;
}
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index d80995d26..d23d9ba04 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -14,7 +14,6 @@ add_test(NAME server_rate_limiter_test COMMAND server_rate_limiter_test)
add_test(NAME server_developer_role_test COMMAND server_developer_role_test)
add_test(NAME server_game_join_test COMMAND server_game_join_test)
add_test(NAME warning_categories_test COMMAND warning_categories_test)
-add_test(NAME report_categories_test COMMAND report_categories_test)
add_test(NAME lag_monitor_test COMMAND lag_monitor_test)
add_test(NAME latency_tracker_test COMMAND latency_tracker_test)
add_test(NAME metrics_registry_test COMMAND metrics_registry_test)
@@ -38,7 +37,6 @@ add_executable(server_rate_limiter_test server_rate_limiter_test.cpp)
add_executable(server_developer_role_test server_developer_role_test.cpp)
add_executable(server_game_join_test server_game_join_test.cpp)
add_executable(warning_categories_test warning_categories_test.cpp)
-add_executable(report_categories_test report_categories_test.cpp)
add_executable(lag_monitor_test ${CMAKE_SOURCE_DIR}/cockatrice/src/client/lag_monitor.cpp lag_monitor_test.cpp)
target_include_directories(lag_monitor_test PRIVATE ${CMAKE_SOURCE_DIR}/cockatrice/src)
add_executable(latency_tracker_test latency_tracker_test.cpp)
@@ -93,7 +91,6 @@ if(NOT GTEST_FOUND)
add_dependencies(server_developer_role_test gtest)
add_dependencies(server_game_join_test gtest)
add_dependencies(warning_categories_test gtest)
- add_dependencies(report_categories_test gtest)
add_dependencies(lag_monitor_test gtest)
add_dependencies(latency_tracker_test gtest)
add_dependencies(metrics_registry_test gtest)
@@ -140,9 +137,6 @@ target_link_libraries(
target_link_libraries(
warning_categories_test libcockatrice_utility Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES}
)
-target_link_libraries(
- report_categories_test libcockatrice_utility Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES}
-)
target_link_libraries(lag_monitor_test Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES})
target_link_libraries(
latency_tracker_test libcockatrice_network Threads::Threads ${GTEST_BOTH_LIBRARIES} ${TEST_QT_MODULES}
diff --git a/tests/report_categories_test.cpp b/tests/report_categories_test.cpp
deleted file mode 100644
index 790b2cff6..000000000
--- a/tests/report_categories_test.cpp
+++ /dev/null
@@ -1,54 +0,0 @@
-#include "gtest/gtest.h"
-#include
-#include
-#include
-#include
-
-TEST(ReportCategoriesTest, CanonicalListIsNonEmptyAndStable)
-{
- const QStringList categories = ReportCategories::keys();
-
- ASSERT_FALSE(categories.isEmpty());
- EXPECT_EQ("cheating", categories.at(0));
- EXPECT_EQ("other", categories.last());
-}
-
-TEST(ReportCategoriesTest, CanonicalListContainsMergedClientAndServerCategories)
-{
- const QStringList expected = {"cheating", "bug_abuse", "harassment", "verbal_abuse",
- "hate_speech", "spam", "other"};
- EXPECT_EQ(expected, ReportCategories::keys());
- EXPECT_EQ(7, ReportCategories::keys().size());
-}
-
-TEST(ReportCategoriesTest, AllCanonicalKeysAreValid)
-{
- for (const QString &category : ReportCategories::keys()) {
- EXPECT_TRUE(ReportCategories::isValid(category)) << category.toStdString();
- }
-}
-
-TEST(ReportCategoriesTest, LegacyCategoriesRemainValid)
-{
- EXPECT_TRUE(ReportCategories::isValid("bug_abuse"));
- EXPECT_TRUE(ReportCategories::isValid("verbal_abuse"));
-}
-
-TEST(ReportCategoriesTest, ValidationIsCaseInsensitive)
-{
- EXPECT_TRUE(ReportCategories::isValid("Cheating"));
- EXPECT_TRUE(ReportCategories::isValid("HATE_SPEECH"));
-}
-
-TEST(ReportCategoriesTest, UnknownAndEmptyCategoriesAreRejected)
-{
- EXPECT_FALSE(ReportCategories::isValid(QString()));
- EXPECT_FALSE(ReportCategories::isValid("hate speech"));
- EXPECT_FALSE(ReportCategories::isValid("griefing"));
-}
-
-int main(int argc, char **argv)
-{
- ::testing::InitGoogleTest(&argc, argv);
- return RUN_ALL_TESTS();
-}
\ No newline at end of file