aboutsummaryrefslogtreecommitdiff
path: root/tests/game/ChatCommand.cpp
diff options
context:
space:
mode:
authorTreeston <treeston.mmoc@gmail.com>2020-08-29 22:03:22 +0200
committerGitHub <noreply@github.com>2020-08-29 22:03:22 +0200
commit8ce3635d39dbdd101ddf180a66c483162df99c04 (patch)
treee3ea530823bf22d00f99419c3492de718eff3e3d /tests/game/ChatCommand.cpp
parent2c3d3c31b22c958c135627009de6c4a1cf213aa9 (diff)
UnitTests: Cleanup + StringConvert/ChatCommand tests (PR #25353)
Diffstat (limited to 'tests/game/ChatCommand.cpp')
-rw-r--r--tests/game/ChatCommand.cpp64
1 files changed, 64 insertions, 0 deletions
diff --git a/tests/game/ChatCommand.cpp b/tests/game/ChatCommand.cpp
new file mode 100644
index 00000000000..5aab641deba
--- /dev/null
+++ b/tests/game/ChatCommand.cpp
@@ -0,0 +1,64 @@
+/*
+ * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "tc_catch2.h"
+
+#include "ChatCommand.h"
+
+using namespace Trinity::ChatCommands;
+using namespace std::string_view_literals;
+
+template <typename F>
+static void TestChatCommand(char const* c, F f, Optional<bool> expected = true)
+{
+ bool r = ChatCommand("", 0, false, +f, "")(nullptr, c);
+ if (expected)
+ ASSERT(r == *expected);
+}
+
+TEST_CASE("Command return pass-through", "[ChatCommand]")
+{
+ TestChatCommand("", [](ChatHandler*) { return true; }, true);
+ TestChatCommand("", [](ChatHandler*) { return false; }, false);
+}
+
+TEST_CASE("Command argument parsing", "[ChatCommand]")
+{
+ TestChatCommand("42", [](ChatHandler*, uint32 u)
+ {
+ REQUIRE(u == 42);
+ return true;
+ });
+
+ TestChatCommand("true", [](ChatHandler*, uint32) { return true; }, false);
+
+ TestChatCommand("1 2 3 4 5 6 7 8 9 10", [](ChatHandler*, std::vector<uint8> v)
+ {
+ REQUIRE(v.size() == 10);
+ for (size_t i = 0; i < 10; ++i)
+ REQUIRE(v[i] == (i + 1));
+ return true;
+ });
+
+ TestChatCommand("|cffff0000|Hplayer:Test|h[Test]|h|r",
+ [](ChatHandler*, Hyperlink<player> player)
+ {
+ REQUIRE("Test"sv == *player);
+ return true;
+ }
+ );
+}