changeset 595:029667d16d12

Tests: add multiple commands in command_test
author David Demelier <markand@malikania.fr>
date Wed, 06 Dec 2017 09:32:57 +0100
parents 0a5cb2b65621
children 35832b7f4f9d
files libirccd-test/irccd/command_test.hpp tests/src/rule-add-command/main.cpp tests/src/rule-edit-command/main.cpp tests/src/rule-move-command/main.cpp tests/src/rule-remove-command/main.cpp
diffstat 5 files changed, 22 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/libirccd-test/irccd/command_test.hpp	Tue Dec 05 16:31:35 2017 +0100
+++ b/libirccd-test/irccd/command_test.hpp	Wed Dec 06 09:32:57 2017 +0100
@@ -33,8 +33,22 @@
 
 namespace irccd {
 
-template <typename Command>
+template <typename... Commands>
 class command_test {
+private:
+    template <typename Command>
+    inline void add()
+    {
+        daemon_->commands().add(std::make_unique<Command>());
+    }
+
+    template <typename C1, typename C2, typename... Tail>
+    inline void add()
+    {
+        add<C1>();
+        add<C2, Tail...>();
+    }
+
 protected:
     boost::asio::io_service service_;
     boost::asio::deadline_timer timer_;
@@ -58,8 +72,8 @@
     }
 };
 
-template <typename Command>
-command_test<Command>::command_test()
+template <typename... Commands>
+command_test<Commands...>::command_test()
     : timer_(service_)
     , daemon_(std::make_unique<irccd>(service_))
 {
@@ -76,7 +90,7 @@
     ctl_ = std::make_unique<ctl::controller>(*conn_);
 
     // Add the server and the command.
-    daemon_->commands().add(std::make_unique<Command>());
+    add<Commands...>();
     daemon_->transports().add(std::make_unique<ip_transport_server>(std::move(acc)));
 
     timer_.expires_from_now(boost::posix_time::seconds(10));
--- a/tests/src/rule-add-command/main.cpp	Tue Dec 05 16:31:35 2017 +0100
+++ b/tests/src/rule-add-command/main.cpp	Wed Dec 06 09:32:57 2017 +0100
@@ -30,13 +30,7 @@
 
 namespace {
 
-class rule_add_test : public command_test<rule_add_command> {
-public:
-    rule_add_test()
-    {
-        daemon_->commands().add(std::make_unique<rule_list_command>());
-    }
-};
+using rule_add_test = command_test<rule_add_command, rule_list_command>;
 
 } // !namespace
 
--- a/tests/src/rule-edit-command/main.cpp	Tue Dec 05 16:31:35 2017 +0100
+++ b/tests/src/rule-edit-command/main.cpp	Wed Dec 06 09:32:57 2017 +0100
@@ -30,11 +30,10 @@
 
 namespace {
 
-class rule_edit_test : public command_test<rule_edit_command> {
+class rule_edit_test : public command_test<rule_edit_command, rule_info_command> {
 public:
     rule_edit_test()
     {
-        daemon_->commands().add(std::make_unique<rule_info_command>());
         daemon_->rules().add(rule(
             { "s1", "s2" },
             { "c1", "c2" },
--- a/tests/src/rule-move-command/main.cpp	Tue Dec 05 16:31:35 2017 +0100
+++ b/tests/src/rule-move-command/main.cpp	Wed Dec 06 09:32:57 2017 +0100
@@ -30,11 +30,10 @@
 
 namespace {
 
-class rule_move_test : public command_test<rule_move_command> {
+class rule_move_test : public command_test<rule_move_command, rule_list_command> {
 public:
     rule_move_test()
     {
-        daemon_->commands().add(std::make_unique<rule_list_command>());
         daemon_->rules().add(rule(
             { "s0" },
             { "c0" },
--- a/tests/src/rule-remove-command/main.cpp	Tue Dec 05 16:31:35 2017 +0100
+++ b/tests/src/rule-remove-command/main.cpp	Wed Dec 06 09:32:57 2017 +0100
@@ -30,11 +30,10 @@
 
 namespace {
 
-class rule_remove_test : public command_test<rule_remove_command> {
+class rule_remove_test : public command_test<rule_remove_command, rule_list_command> {
 public:
     rule_remove_test()
     {
-        daemon_->commands().add(std::make_unique<rule_list_command>());
         daemon_->rules().add(rule(
             { "s1", "s2" },
             { "c1", "c2" },