diff tests/plugin-hangman/main.cpp @ 525:d070d33bf4a0

Plugin hangman: finally switch to boost
author David Demelier <markand@malikania.fr>
date Tue, 14 Nov 2017 20:13:56 +0100
parents 683eb8ad79d1
children a5e1c91abb8e
line wrap: on
line diff
--- a/tests/plugin-hangman/main.cpp	Tue Nov 14 19:54:32 2017 +0100
+++ b/tests/plugin-hangman/main.cpp	Tue Nov 14 20:13:56 2017 +0100
@@ -19,52 +19,23 @@
 #include <unordered_map>
 #include <unordered_set>
 
-#include <gtest/gtest.h>
+#define BOOST_TEST_MODULE "Hangman plugin"
+#include <boost/test/unit_test.hpp>
 
 #include <irccd/irccd.hpp>
 #include <irccd/server.hpp>
 #include <irccd/service.hpp>
-#include <irccd/string_util.hpp>
-
-#include "plugin-tester.hpp"
-
-int main() { }
-
-#if 0
-
-using namespace irccd;
 
-class ServerTest : public server {
-private:
-    std::string m_last;
+#include "plugin_test.hpp"
 
-public:
-    inline ServerTest()
-        : server("test")
-    {
-    }
+namespace irccd {
 
-    inline const std::string &last() const noexcept
-    {
-        return m_last;
-    }
-
-    void message(std::string target, std::string message) override
+class hangman_test : public plugin_test {
+public:
+    hangman_test()
+        : plugin_test(PLUGIN_NAME, PLUGIN_PATH)
     {
-        m_last = string_util::join({target, message});
-    }
-};
-
-class HangmanTest : public PluginTester {
-protected:
-    std::shared_ptr<ServerTest> m_server;
-    std::shared_ptr<plugin> m_plugin;
-
-public:
-    HangmanTest()
-        : m_server(std::make_shared<ServerTest>())
-    {
-        m_irccd.plugins().set_formats("hangman", {
+        plugin_->set_formats({
             { "asked", "asked=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{letter}" },
             { "dead", "dead=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{word}" },
             { "found", "found=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{word}" },
@@ -81,170 +52,281 @@
     {
         // Add file if not there.
         if (config.count("file") == 0)
-            config.emplace("file", SOURCEDIR "/words.conf");
+            config.emplace("file", CMAKE_CURRENT_SOURCE_DIR "/words.conf");
 
-        m_irccd.plugins().set_config("hangman", config);
-        m_irccd.plugins().load("hangman", CMAKE_SOURCE_DIR "/plugins/hangman/hangman.js");
-        m_plugin = m_irccd.plugins().require("hangman");
+        plugin_->set_config(config);
+        plugin_->on_load(irccd_);
     }
 };
 
-TEST_F(HangmanTest, asked)
+BOOST_FIXTURE_TEST_SUITE(hangman_test_suite, hangman_test)
+
+BOOST_AUTO_TEST_CASE(asked)
 {
     load({{ "collaborative", "false" }});
 
-    m_plugin->on_command(m_irccd, {m_server, "jean!jean@localhost", "#hangman", ""});
-    m_plugin->on_message(m_irccd, {m_server, "jean!jean@localhost", "#hangman", "s"});
-    m_plugin->on_message(m_irccd, {m_server, "jean!jean@localhost", "#hangman", "s"});
+    plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""});
+
+    auto cmd = server_->cqueue().back();
+
+    BOOST_TEST(cmd["command"].get<std::string>() == "message");
+    BOOST_TEST(cmd["target"].get<std::string>() == "#hangman");
+    BOOST_TEST(cmd["message"].get<std::string>() == "start=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:_ _ _");
+
+    plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "s"});
+    cmd = server_->cqueue().back();
 
-    ASSERT_EQ("#hangman:asked=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s", m_server->last());
+    BOOST_TEST(cmd["command"].get<std::string>() == "message");
+    BOOST_TEST(cmd["target"].get<std::string>() == "#hangman");
+    BOOST_TEST(cmd["message"].get<std::string>() == "found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _");
+
+    plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "s"});
+    cmd = server_->cqueue().back();
+
+    BOOST_TEST(cmd["command"].get<std::string>() == "message");
+    BOOST_TEST(cmd["target"].get<std::string>() == "#hangman");
+    BOOST_TEST(cmd["message"].get<std::string>() == "asked=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s");
 }
 
-TEST_F(HangmanTest, dead)
+BOOST_AUTO_TEST_CASE(dead)
 {
     load({{ "collaborative", "false" }});
 
-    m_plugin->on_command(m_irccd, {m_server, "jean!jean@localhost", "#hangman", ""});
-    m_plugin->on_message(m_irccd, {m_server, "jean!jean@localhost", "#hangman", "a"});
-    m_plugin->on_message(m_irccd, {m_server, "jean!jean@localhost", "#hangman", "b"});
-    m_plugin->on_message(m_irccd, {m_server, "jean!jean@localhost", "#hangman", "c"});
-    m_plugin->on_message(m_irccd, {m_server, "jean!jean@localhost", "#hangman", "d"});
-    m_plugin->on_message(m_irccd, {m_server, "jean!jean@localhost", "#hangman", "e"});
-    m_plugin->on_message(m_irccd, {m_server, "jean!jean@localhost", "#hangman", "f"});
-    m_plugin->on_message(m_irccd, {m_server, "jean!jean@localhost", "#hangman", "g"});
-    m_plugin->on_message(m_irccd, {m_server, "jean!jean@localhost", "#hangman", "h"});
-    m_plugin->on_message(m_irccd, {m_server, "jean!jean@localhost", "#hangman", "i"});
-    m_plugin->on_message(m_irccd, {m_server, "jean!jean@localhost", "#hangman", "j"});
+    plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""});
+    plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "a"});
+    plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "b"});
+    plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "c"});
+    plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "d"});
+    plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "e"});
+    plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "f"});
+    plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "g"});
+    plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "h"});
+    plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "i"});
+    plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "j"});
 
-    ASSERT_EQ("#hangman:dead=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:sky", m_server->last());
+    auto cmd = server_->cqueue().back();
+
+    BOOST_TEST(cmd["command"].get<std::string>() == "message");
+    BOOST_TEST(cmd["target"].get<std::string>() == "#hangman");
+    BOOST_TEST(cmd["message"].get<std::string>() == "dead=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:sky");
 }
 
-TEST_F(HangmanTest, found)
+
+BOOST_AUTO_TEST_CASE(found)
 {
     load({{ "collaborative", "false" }});
 
-    m_plugin->on_command(m_irccd, {m_server, "jean!jean@localhost", "#hangman", ""});
-    m_plugin->on_message(m_irccd, {m_server, "jean!jean@localhost", "#hangman", "s"});
+    plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""});
+    plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "s"});
 
-    ASSERT_EQ("#hangman:found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _", m_server->last());
+    auto cmd = server_->cqueue().back();
+
+    BOOST_TEST(cmd["command"].get<std::string>() == "message");
+    BOOST_TEST(cmd["target"].get<std::string>() == "#hangman");
+    BOOST_TEST(cmd["message"].get<std::string>() == "found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _");
 }
 
-TEST_F(HangmanTest, start)
+BOOST_AUTO_TEST_CASE(start)
 {
     load();
 
-    m_plugin->on_command(m_irccd, {m_server, "jean!jean@localhost", "#hangman", ""});
+    plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""});
+
+    auto cmd = server_->cqueue().back();
 
-    ASSERT_EQ("#hangman:start=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:_ _ _", m_server->last());
+    BOOST_TEST(cmd["command"].get<std::string>() == "message");
+    BOOST_TEST(cmd["target"].get<std::string>() == "#hangman");
+    BOOST_TEST(cmd["message"].get<std::string>() == "start=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:_ _ _");
 }
 
-TEST_F(HangmanTest, win1)
+BOOST_AUTO_TEST_CASE(win1)
 {
     load({{ "collaborative", "false" }});
 
-    m_plugin->on_command(m_irccd, {m_server, "jean!jean@localhost", "#hangman", ""});
-    m_plugin->on_message(m_irccd, {m_server, "jean!jean@localhost", "#hangman", "s"});
-    m_plugin->on_message(m_irccd, {m_server, "jean!jean@localhost", "#hangman", "k"});
-    m_plugin->on_message(m_irccd, {m_server, "jean!jean@localhost", "#hangman", "y"});
+    plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""});
+    plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "s"});
+    plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "k"});
+    plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "y"});
 
-    ASSERT_EQ("#hangman:win=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:sky", m_server->last());
+    auto cmd = server_->cqueue().back();
+
+    BOOST_TEST(cmd["command"].get<std::string>() == "message");
+    BOOST_TEST(cmd["target"].get<std::string>() == "#hangman");
+    BOOST_TEST(cmd["message"].get<std::string>() == "win=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:sky");
 }
 
-TEST_F(HangmanTest, win2)
+BOOST_AUTO_TEST_CASE(win2)
 {
     load({{ "collaborative", "false" }});
 
-    m_plugin->on_command(m_irccd, {m_server, "jean!jean@localhost", "#hangman", ""});
-    m_plugin->on_command(m_irccd, {m_server, "jean!jean@localhost", "#hangman", "sky"});
+    plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""});
+    plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", "sky"});
 
-    ASSERT_EQ("#hangman:win=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:sky", m_server->last());
+    auto cmd = server_->cqueue().back();
+
+    BOOST_TEST(cmd["command"].get<std::string>() == "message");
+    BOOST_TEST(cmd["target"].get<std::string>() == "#hangman");
+    BOOST_TEST(cmd["message"].get<std::string>() == "win=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:sky");
 }
 
-TEST_F(HangmanTest, wrongLetter)
+BOOST_AUTO_TEST_CASE(wrong_letter)
 {
     load();
 
-    m_plugin->on_command(m_irccd, {m_server, "jean!jean@localhost", "#hangman", ""});
-    m_plugin->on_message(m_irccd, {m_server, "jean!jean@localhost", "#hangman", "x"});
+    plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""});
+    plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "x"});
 
-    ASSERT_EQ("#hangman:wrong-letter=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:x", m_server->last());
+    auto cmd = server_->cqueue().back();
+
+    BOOST_TEST(cmd["command"].get<std::string>() == "message");
+    BOOST_TEST(cmd["target"].get<std::string>() == "#hangman");
+    BOOST_TEST(cmd["message"].get<std::string>() == "wrong-letter=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:x");
 }
 
-TEST_F(HangmanTest, wrongWord)
+BOOST_AUTO_TEST_CASE(wrongWord)
 {
     load();
 
-    m_plugin->on_command(m_irccd, {m_server, "jean!jean@localhost", "#hangman", ""});
-    m_plugin->on_command(m_irccd, {m_server, "jean!jean@localhost", "#hangman", "cheese"});
+    plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""});
+    plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", "cheese"});
 
-    ASSERT_EQ("#hangman:wrong-word=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:cheese", m_server->last());
+    auto cmd = server_->cqueue().back();
+
+    BOOST_TEST(cmd["command"].get<std::string>() == "message");
+    BOOST_TEST(cmd["target"].get<std::string>() == "#hangman");
+    BOOST_TEST(cmd["message"].get<std::string>() == "wrong-word=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:cheese");
 }
 
-TEST_F(HangmanTest, collaborativeDisabled)
+BOOST_AUTO_TEST_CASE(collaborative_disabled)
 {
     // Disable collaborative mode.
     load({{ "collaborative", "false" }});
 
-    m_plugin->on_command(m_irccd, {m_server, "jean!jean@localhost", "#hangman", ""});
-    m_plugin->on_message(m_irccd, {m_server, "jean!jean@localhost", "#hangman", "s"});
-    ASSERT_EQ("#hangman:found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _", m_server->last());
-    m_plugin->on_message(m_irccd, {m_server, "jean!jean@localhost", "#hangman", "k"});
-    ASSERT_EQ("#hangman:found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s k _", m_server->last());
+    plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""});
+    plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "s"});
+
+    auto cmd = server_->cqueue().back();
+
+    BOOST_TEST(cmd["command"].get<std::string>() == "message");
+    BOOST_TEST(cmd["target"].get<std::string>() == "#hangman");
+    BOOST_TEST(cmd["message"].get<std::string>() == "found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _");
+
+    plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "k"});
+    cmd = server_->cqueue().back();
+
+    BOOST_TEST(cmd["command"].get<std::string>() == "message");
+    BOOST_TEST(cmd["target"].get<std::string>() == "#hangman");
+    BOOST_TEST(cmd["message"].get<std::string>() == "found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s k _");
 }
 
-TEST_F(HangmanTest, collaborativeEnabled)
+BOOST_AUTO_TEST_CASE(collaborative_enabled)
 {
     // Enable collaborative mode.
     load({{ "collaborative", "true" }});
 
-    m_plugin->on_command(m_irccd, {m_server, "jean!jean@localhost", "#hangman", ""});
-    m_plugin->on_message(m_irccd, {m_server, "jean!jean@localhost", "#hangman", "s"});
-    ASSERT_EQ("#hangman:found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _", m_server->last());
-    m_plugin->on_message(m_irccd, {m_server, "jean!jean@localhost", "#hangman", "k"});
-    ASSERT_EQ("#hangman:wrong-player=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:k", m_server->last());
-    m_plugin->on_message(m_irccd, {m_server, "francis!francis@localhost", "#hangman", "k"});
-    ASSERT_EQ("#hangman:found=hangman:!hangman:test:#hangman:francis!francis@localhost:francis:s k _", m_server->last());
+    plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""});
+    plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "s"});
+
+    auto cmd = server_->cqueue().back();
+
+    BOOST_TEST(cmd["command"].get<std::string>() == "message");
+    BOOST_TEST(cmd["target"].get<std::string>() == "#hangman");
+    BOOST_TEST(cmd["message"].get<std::string>() == "found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _");
+
+    plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "k"});
+    cmd = server_->cqueue().back();
+
+    BOOST_TEST(cmd["command"].get<std::string>() == "message");
+    BOOST_TEST(cmd["target"].get<std::string>() == "#hangman");
+    BOOST_TEST(cmd["message"].get<std::string>() == "wrong-player=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:k");
+
+    plugin_->on_message(irccd_, {server_, "francis!francis@localhost", "#hangman", "k"});
+    cmd = server_->cqueue().back();
+
+    BOOST_TEST(cmd["command"].get<std::string>() == "message");
+    BOOST_TEST(cmd["target"].get<std::string>() == "#hangman");
+    BOOST_TEST(cmd["message"].get<std::string>() == "found=hangman:!hangman:test:#hangman:francis!francis@localhost:francis:s k _");
 }
 
-TEST_F(HangmanTest, case_fix_642)
+BOOST_AUTO_TEST_CASE(case_fix_642)
 {
     load();
 
-    m_plugin->on_command(m_irccd, {m_server, "jean!jean@localhost", "#hangman", ""});
-    m_plugin->on_message(m_irccd, {m_server, "jean!jean@localhost", "#HANGMAN", "s"});
-    ASSERT_EQ("#hangman:found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _", m_server->last());
-    m_plugin->on_message(m_irccd, {m_server, "jean!jean@localhost", "#HaNGMaN", "k"});
-    ASSERT_EQ("#hangman:wrong-player=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:k", m_server->last());
-    m_plugin->on_message(m_irccd, {m_server, "francis!francis@localhost", "#hAngmAn", "k"});
-    ASSERT_EQ("#hangman:found=hangman:!hangman:test:#hangman:francis!francis@localhost:francis:s k _", m_server->last());
+    plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""});
+    plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#HANGMAN", "s"});
+
+    auto cmd = server_->cqueue().back();
+
+    BOOST_TEST(cmd["command"].get<std::string>() == "message");
+    BOOST_TEST(cmd["target"].get<std::string>() == "#hangman");
+    BOOST_TEST(cmd["message"].get<std::string>() == "found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _");
+
+    plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#HaNGMaN", "k"});
+    cmd = server_->cqueue().back();
+
+    BOOST_TEST(cmd["command"].get<std::string>() == "message");
+    BOOST_TEST(cmd["target"].get<std::string>() == "#hangman");
+    BOOST_TEST(cmd["message"].get<std::string>() == "wrong-player=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:k");
+
+    plugin_->on_message(irccd_, {server_, "francis!francis@localhost", "#hAngmAn", "k"});
+    cmd = server_->cqueue().back();
+
+    BOOST_TEST(cmd["command"].get<std::string>() == "message");
+    BOOST_TEST(cmd["target"].get<std::string>() == "#hangman");
+    BOOST_TEST(cmd["message"].get<std::string>() == "found=hangman:!hangman:test:#hangman:francis!francis@localhost:francis:s k _");
 }
 
-TEST_F(HangmanTest, query)
+BOOST_AUTO_TEST_CASE(query)
 {
     load();
 
     // Query mode is never collaborative.
-    m_plugin->on_query_command(m_irccd, {m_server, "jean!jean@localhost", ""});
-    ASSERT_EQ("jean:start=hangman:!hangman:test:jean:jean!jean@localhost:jean:_ _ _", m_server->last());
-    m_plugin->on_query(m_irccd, {m_server, "jean!jean@localhost", "s"});
-    ASSERT_EQ("jean:found=hangman:!hangman:test:jean:jean!jean@localhost:jean:s _ _", m_server->last());
-    m_plugin->on_query(m_irccd, {m_server, "jean!jean@localhost", "k"});
-    ASSERT_EQ("jean:found=hangman:!hangman:test:jean:jean!jean@localhost:jean:s k _", m_server->last());
-    m_plugin->on_query_command(m_irccd, {m_server, "jean!jean@localhost", "sky"});
-    ASSERT_EQ("jean:win=hangman:!hangman:test:jean:jean!jean@localhost:jean:sky", m_server->last());
+    plugin_->on_query_command(irccd_, {server_, "jean!jean@localhost", ""});
+
+    auto cmd = server_->cqueue().back();
+
+    BOOST_TEST(cmd["command"].get<std::string>() == "message");
+    BOOST_TEST(cmd["target"].get<std::string>() == "jean");
+    BOOST_TEST(cmd["message"].get<std::string>() == "start=hangman:!hangman:test:jean:jean!jean@localhost:jean:_ _ _");
+
+    plugin_->on_query(irccd_, {server_, "jean!jean@localhost", "s"});
+    cmd = server_->cqueue().back();
+
+    BOOST_TEST(cmd["command"].get<std::string>() == "message");
+    BOOST_TEST(cmd["target"].get<std::string>() == "jean");
+    BOOST_TEST(cmd["message"].get<std::string>() == "found=hangman:!hangman:test:jean:jean!jean@localhost:jean:s _ _");
+
+    plugin_->on_query(irccd_, {server_, "jean!jean@localhost", "k"});
+    cmd = server_->cqueue().back();
+
+    BOOST_TEST(cmd["command"].get<std::string>() == "message");
+    BOOST_TEST(cmd["target"].get<std::string>() == "jean");
+    BOOST_TEST(cmd["message"].get<std::string>() == "found=hangman:!hangman:test:jean:jean!jean@localhost:jean:s k _");
+
+    plugin_->on_query_command(irccd_, {server_, "jean!jean@localhost", "sky"});
+    cmd = server_->cqueue().back();
+
+    BOOST_TEST(cmd["command"].get<std::string>() == "message");
+    BOOST_TEST(cmd["target"].get<std::string>() == "jean");
+    BOOST_TEST(cmd["message"].get<std::string>() == "win=hangman:!hangman:test:jean:jean!jean@localhost:jean:sky");
 }
 
-TEST_F(HangmanTest, running)
+BOOST_AUTO_TEST_CASE(running)
 {
     load();
 
-    m_plugin->on_command(m_irccd, {m_server, "jean!jean@localhost", "#hangman", ""});
-    m_plugin->on_message(m_irccd, {m_server, "jean!jean@localhost", "#hangman", "y"});
-    m_plugin->on_command(m_irccd, {m_server, "jean!jean@localhost", "#hangman", ""});
-    ASSERT_EQ("#hangman:running=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:_ _ y", m_server->last());
+    plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""});
+    plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "y"});
+    plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""});
+
+    auto cmd = server_->cqueue().back();
+
+    BOOST_TEST(cmd["command"].get<std::string>() == "message");
+    BOOST_TEST(cmd["target"].get<std::string>() == "#hangman");
+    BOOST_TEST(cmd["message"].get<std::string>() == "running=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:_ _ y");
 }
 
-TEST_F(HangmanTest, wordlist_fix_644)
+BOOST_AUTO_TEST_CASE(wordlist_fix_644)
 {
     /*
      * To be sure that the selection use the same list, we create a list of
@@ -255,51 +337,46 @@
      *
      * This is not very accurate but it's better than nothing.
      */
-    load({{ "file", SOURCEDIR "/wordlist_fix_644.conf" }});
+    load({{ "file", CMAKE_CURRENT_SOURCE_DIR "/wordlist_fix_644.conf" }});
 
     std::unordered_map<unsigned, std::string> words{
-        { 14, "abc"     },
-        { 16, "abcd"    },
-        { 18, "abcde"   }
+        { 5, "abc"     },
+        { 7, "abcd"    },
+        { 9, "abcde"   }
     };
     std::unordered_set<unsigned> found;
 
-    m_plugin->set_formats({
+    plugin_->set_formats({
         { "start", "#{word}" }
     });
 
     unsigned last, current;
 
     // 1. Initial game + finish.
-    m_plugin->on_command(m_irccd, {m_server, "jean!jean@localhost", "#hangman", ""});
-    last = m_server->last().length();
+    plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""});
+    last = server_->cqueue().back()["message"].get<std::string>().length();
     found.insert(last);
-    m_plugin->on_command(m_irccd, {m_server, "jean!jean@localhost", "#hangman", words[last]});
+    plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", words[last]});
 
     // 2. Current must not be the last one.
-    m_plugin->on_command(m_irccd, {m_server, "jean!jean@localhost", "#hangman", ""});
-    current = m_server->last().length();
+    plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""});
+    current = server_->cqueue().back()["message"].get<std::string>().length();
 
-    ASSERT_NE(last, current);
-    ASSERT_EQ(0U, found.count(current));
+    BOOST_TEST(last != current);
+    BOOST_TEST(0U == found.count(current));
 
     found.insert(current);
     last = current;
-    m_plugin->on_command(m_irccd, {m_server, "jean!jean@localhost", "#hangman", words[current]});
+    plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", words[current]});
 
     // 3. Last word must be the one that is kept into the map.
-    m_plugin->on_command(m_irccd, {m_server, "jean!jean@localhost", "#hangman", ""});
-    current = m_server->last().length();
+    plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""});
+    current = server_->cqueue().back()["message"].get<std::string>().length();
 
-    ASSERT_NE(last, current);
-    ASSERT_EQ(0U, found.count(current));
+    BOOST_TEST(last != current);
+    BOOST_TEST(0U == found.count(current));
 }
 
-int main(int argc, char **argv)
-{
-    testing::InitGoogleTest(&argc, argv);
+BOOST_AUTO_TEST_SUITE_END()
 
-    return RUN_ALL_TESTS();
-}
-
-#endif
+} // !irccd