[3.3.5] ChatCommands, the other half: chat command resolution refactor (PR #25463)

(cherry picked from commit 1eca51b417)
This commit is contained in:
Treeston
2020-09-20 02:50:38 +02:00
committed by Shauren
parent 7a2c3af988
commit 3fd2eb126c
57 changed files with 1360 additions and 1294 deletions

View File

@@ -31,10 +31,10 @@ struct DummyChatHandler : ChatHandler
};
template <typename F>
static void TestChatCommand(char const* c, F f, Optional<bool> expected = true)
static void TestChatCommand(std::string_view c, F f, Optional<bool> expected = true)
{
DummyChatHandler handler;
bool r = ChatCommand("", 0, false, +f, "")(&handler, c);
bool r = Trinity::Impl::ChatCommands::CommandInvoker(*+f)(&handler, c);
if (expected)
REQUIRE(r == *expected);
}
@@ -111,4 +111,26 @@ TEST_CASE("Command argument parsing", "[ChatCommand]")
return true;
});
}
SECTION("Variant<>")
{
TestChatCommand("0x1ffff", [](ChatHandler*, Variant<uint16, uint32> v)
{
REQUIRE(v.holds_alternative<uint32>());
REQUIRE(v.get<uint32>() == 0x1ffff);
return true;
});
TestChatCommand("0xffff", [](ChatHandler*, Variant<uint16, uint32> v)
{
REQUIRE(v.holds_alternative<uint16>());
REQUIRE(v.get<uint16>() == 0xffff);
return true;
});
TestChatCommand("0x1ffff", [](ChatHandler*, Variant<uint32, uint16> v)
{
REQUIRE(v.holds_alternative<uint32>());
REQUIRE(v.get<uint32>() == 0x1ffff);
return true;
});
}
}