Mercurial > irccd
annotate tests/src/plugins/joke/main.cpp @ 824:06cc2f95f479
misc: happy new year!
author | David Demelier <markand@malikania.fr> |
---|---|
date | Tue, 08 Jan 2019 20:41:20 +0100 |
parents | 8460b4a34191 |
children | a23b7b574ed2 |
rev | line source |
---|---|
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 /* |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 * main.cpp -- test joke plugin |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 * |
824
06cc2f95f479
misc: happy new year!
David Demelier <markand@malikania.fr>
parents:
809
diff
changeset
|
4 * Copyright (c) 2013-2019 David Demelier <markand@malikania.fr> |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 * |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 * Permission to use, copy, modify, and/or distribute this software for any |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 * purpose with or without fee is hereby granted, provided that the above |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 * copyright notice and this permission notice appear in all copies. |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 * |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 */ |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
19 #define BOOST_TEST_MODULE "Joke plugin" |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
20 #include <boost/test/unit_test.hpp> |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 |
759
791d7591eca7
Tests: rename plugin_test to js_plugin_fixture
David Demelier <markand@malikania.fr>
parents:
741
diff
changeset
|
22 #include <irccd/test/js_plugin_fixture.hpp> |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
23 |
809
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
799
diff
changeset
|
24 using irccd::daemon::plugin; |
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
799
diff
changeset
|
25 |
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
799
diff
changeset
|
26 using irccd::test::js_plugin_fixture; |
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
799
diff
changeset
|
27 |
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
799
diff
changeset
|
28 namespace irccd { |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
29 |
723
e8c4ba5ed1c6
Tests: put code in anonymous namespaces, closes #889 @10m
David Demelier <markand@malikania.fr>
parents:
722
diff
changeset
|
30 namespace { |
e8c4ba5ed1c6
Tests: put code in anonymous namespaces, closes #889 @10m
David Demelier <markand@malikania.fr>
parents:
722
diff
changeset
|
31 |
759
791d7591eca7
Tests: rename plugin_test to js_plugin_fixture
David Demelier <markand@malikania.fr>
parents:
741
diff
changeset
|
32 class joke_test : public js_plugin_fixture { |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
33 public: |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
34 joke_test() |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
35 : js_plugin_fixture(PLUGIN_PATH) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
36 { |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
37 plugin_->set_formats({ |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
38 { "error", "error=#{server}:#{channel}:#{origin}:#{nickname}" } |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
39 }); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
40 } |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
41 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
42 void load(plugin::map config = {}) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
43 { |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
44 // Add file if not there. |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
45 if (config.count("file") == 0) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
46 config.emplace("file", CMAKE_CURRENT_SOURCE_DIR "/jokes.json"); |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
47 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
48 plugin_->set_options(config); |
809
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
799
diff
changeset
|
49 plugin_->handle_load(bot_); |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
50 } |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
51 }; |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
52 |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
53 BOOST_FIXTURE_TEST_SUITE(joke_test_suite, joke_test) |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
54 |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
55 BOOST_AUTO_TEST_CASE(simple) |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
56 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
57 /* |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
58 * Jokes.json have two jokes. |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
59 * |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
60 * aaa |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
61 * |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
62 * And |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
63 * |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
64 * bbbb |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
65 * bbbb |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
66 */ |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
67 std::unordered_map<std::string, int> said{ |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
68 { "aaa", 0 }, |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
69 { "bbbb", 0 } |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
70 }; |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
71 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
72 load(); |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
73 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
74 const auto call = [&] () { |
809
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
799
diff
changeset
|
75 plugin_->handle_command(bot_, { server_, "jean!jean@localhost", "#joke", "" }); |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
76 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
77 const auto cmd = server_->find("message").back(); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
78 const auto msg = std::any_cast<std::string>(cmd[1]); |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
79 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
80 // "bbbb" is two lines. |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
81 if (msg == "bbbb") { |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
82 const auto first = server_->find("message").front(); |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
83 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
84 BOOST_TEST(std::any_cast<std::string>(first[0]) == "#joke"); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
85 BOOST_TEST(std::any_cast<std::string>(first[1]) == "bbbb"); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
86 } else |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
87 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "aaa"); |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
88 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
89 said[msg] += 1; |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
90 server_->clear(); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
91 }; |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
92 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
93 call(); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
94 call(); |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
95 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
96 BOOST_TEST(said.size() == 2U); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
97 BOOST_TEST(said["aaa"] == 1U); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
98 BOOST_TEST(said["bbbb"] == 1U); |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
99 } |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
100 |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
101 BOOST_AUTO_TEST_CASE(toobig) |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
102 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
103 // xxx and yyy are both 3-lines which we disallow. only a must be said. |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
104 load({ |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
105 { "file", CMAKE_CURRENT_SOURCE_DIR "/error-toobig.json" }, |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
106 { "max-list-lines", "2" } |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
107 }); |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
108 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
109 std::unordered_map<std::string, int> said{ |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
110 { "a", 0 } |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
111 }; |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
112 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
113 const auto call = [&] () { |
809
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
799
diff
changeset
|
114 plugin_->handle_command(bot_, { server_, "jean!jean@localhost", "#joke", "" }); |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
115 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
116 const auto cmd = server_->find("message").back(); |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
117 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
118 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#joke"); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
119 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "a"); |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
120 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
121 said[std::any_cast<std::string>(cmd[1])] += 1; |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
122 server_->clear(); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
123 }; |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
124 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
125 call(); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
126 call(); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
127 call(); |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
128 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
129 BOOST_TEST(said.size() == 1U); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
130 BOOST_TEST(said["a"] == 3U); |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
131 } |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
132 |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
133 BOOST_AUTO_TEST_CASE(invalid) |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
134 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
135 // Only a is the valid joke in this file. |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
136 load({{ "file", CMAKE_CURRENT_SOURCE_DIR "/error-invalid.json" }}); |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
137 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
138 std::unordered_map<std::string, int> said{ |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
139 { "a", 0 } |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
140 }; |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
141 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
142 const auto call = [&] () { |
809
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
799
diff
changeset
|
143 plugin_->handle_command(bot_, { server_, "jean!jean@localhost", "#joke", "" }); |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
144 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
145 const auto cmd = server_->find("message").back(); |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
146 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
147 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#joke"); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
148 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "a"); |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
149 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
150 server_->clear(); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
151 said[std::any_cast<std::string>(cmd[1])] += 1; |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
152 }; |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
153 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
154 call(); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
155 call(); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
156 call(); |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
157 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
158 BOOST_TEST(said.size() == 1U); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
159 BOOST_TEST(said["a"] == 3U); |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
160 } |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
161 |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
162 BOOST_AUTO_TEST_SUITE(errors) |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
163 |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
164 BOOST_AUTO_TEST_CASE(not_found) |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
165 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
166 load({{"file", "doesnotexist.json"}}); |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
167 |
809
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
799
diff
changeset
|
168 plugin_->handle_command(bot_, { server_, "jean!jean@localhost", "#joke", "" }); |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
169 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
170 const auto cmd = server_->find("message").back(); |
735
64839725f346
Tests: replace journal_server with mock_server
David Demelier <markand@malikania.fr>
parents:
723
diff
changeset
|
171 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
172 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#joke"); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
173 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "error=test:#joke:jean!jean@localhost:jean"); |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
174 } |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
175 |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
176 BOOST_AUTO_TEST_CASE(not_array) |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
177 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
178 load({{"file", CMAKE_CURRENT_SOURCE_DIR "/error-not-array.json"}}); |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
179 |
809
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
799
diff
changeset
|
180 plugin_->handle_command(bot_, { server_, "jean!jean@localhost", "#joke", "" }); |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
181 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
182 const auto cmd = server_->find("message").back(); |
735
64839725f346
Tests: replace journal_server with mock_server
David Demelier <markand@malikania.fr>
parents:
723
diff
changeset
|
183 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
184 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#joke"); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
185 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "error=test:#joke:jean!jean@localhost:jean"); |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
186 } |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
187 |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
188 BOOST_AUTO_TEST_CASE(empty) |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
189 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
190 load({{"file", CMAKE_CURRENT_SOURCE_DIR "/error-empty.json"}}); |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
191 |
809
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
799
diff
changeset
|
192 plugin_->handle_command(bot_, {server_, "jean!jean@localhost", "#joke", ""}); |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
193 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
194 const auto cmd = server_->find("message").back(); |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
195 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
196 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#joke"); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
759
diff
changeset
|
197 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "error=test:#joke:jean!jean@localhost:jean"); |
618
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
198 } |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
199 |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
200 BOOST_AUTO_TEST_SUITE_END() |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
201 |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
202 BOOST_AUTO_TEST_SUITE_END() |
5afc0b3a9ad8
Plugin joke: brand new plugin, closes #609 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
203 |
723
e8c4ba5ed1c6
Tests: put code in anonymous namespaces, closes #889 @10m
David Demelier <markand@malikania.fr>
parents:
722
diff
changeset
|
204 } // !namespace |
e8c4ba5ed1c6
Tests: put code in anonymous namespaces, closes #889 @10m
David Demelier <markand@malikania.fr>
parents:
722
diff
changeset
|
205 |
809
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
799
diff
changeset
|
206 } // !irccd |