annotate tests/command/main.cpp @ 305:e1e596a75355

Tests: add test for server-info, #559
author David Demelier <markand@malikania.fr>
date Tue, 18 Oct 2016 18:30:45 +0200
parents 79d9840811a1
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
204
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * main.cpp -- test Command class
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 * Copyright (c) 2013-2016 David Demelier <markand@malikania.fr>
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #include <gtest/gtest.h>
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
20
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 #include <irccd/command.hpp>
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
22
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 using namespace irccd;
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
24
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 class MyCommand : public Command {
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 public:
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
27 MyCommand()
250
79d9840811a1 Irccd: fix tests
David Demelier <markand@malikania.fr>
parents: 221
diff changeset
28 : Command("test", "Test", "This is a super command")
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
29 {
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
30 }
204
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
31
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
32 std::vector<Property> properties() const
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
33 {
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
34 return {
250
79d9840811a1 Irccd: fix tests
David Demelier <markand@malikania.fr>
parents: 221
diff changeset
35 { "b", { nlohmann::json::value_t::boolean }},
79d9840811a1 Irccd: fix tests
David Demelier <markand@malikania.fr>
parents: 221
diff changeset
36 { "i", { nlohmann::json::value_t::number_integer }},
79d9840811a1 Irccd: fix tests
David Demelier <markand@malikania.fr>
parents: 221
diff changeset
37 { "m", {
79d9840811a1 Irccd: fix tests
David Demelier <markand@malikania.fr>
parents: 221
diff changeset
38 nlohmann::json::value_t::boolean,
79d9840811a1 Irccd: fix tests
David Demelier <markand@malikania.fr>
parents: 221
diff changeset
39 nlohmann::json::value_t::number_integer,
79d9840811a1 Irccd: fix tests
David Demelier <markand@malikania.fr>
parents: 221
diff changeset
40 nlohmann::json::value_t::string
79d9840811a1 Irccd: fix tests
David Demelier <markand@malikania.fr>
parents: 221
diff changeset
41 }
79d9840811a1 Irccd: fix tests
David Demelier <markand@malikania.fr>
parents: 221
diff changeset
42 }
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
43 };
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
44 }
204
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 };
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
46
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 TEST(Properties, valid)
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
49 Irccd *irccd = nullptr;
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
50 MyCommand cmd;
204
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
51
221
5ff2bac1c7d8 Irccd: switch to nlohmann json, #515
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
52 ASSERT_NO_THROW(cmd.exec(*irccd, nlohmann::json::object({
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
53 { "b", true },
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
54 { "i", 123 },
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
55 { "m", "abc" }
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
56 })));
204
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
57
221
5ff2bac1c7d8 Irccd: switch to nlohmann json, #515
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
58 ASSERT_NO_THROW(cmd.exec(*irccd, nlohmann::json::object({
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
59 { "b", true },
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
60 { "i", 123 },
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
61 { "m", 456 }
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
62 })));
204
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
63
221
5ff2bac1c7d8 Irccd: switch to nlohmann json, #515
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
64 ASSERT_NO_THROW(cmd.exec(*irccd, nlohmann::json::object({
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
65 { "b", true },
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
66 { "i", 123 },
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
67 { "m", "456" }
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
68 })));
204
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 }
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
70
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 TEST(Properties, missingB)
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
73 Irccd *irccd = nullptr;
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
74 MyCommand cmd;
204
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
75
221
5ff2bac1c7d8 Irccd: switch to nlohmann json, #515
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
76 ASSERT_THROW(cmd.exec(*irccd, nlohmann::json::object({
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
77 { "i", 123 },
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
78 { "m", "abc" }
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
79 })), std::invalid_argument);
204
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 }
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
81
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 TEST(Properties, missingI)
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
84 Irccd *irccd = nullptr;
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
85 MyCommand cmd;
204
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
86
221
5ff2bac1c7d8 Irccd: switch to nlohmann json, #515
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
87 ASSERT_THROW(cmd.exec(*irccd, nlohmann::json::object({
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
88 { "b", true },
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
89 { "m", "abc" }
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
90 })), std::invalid_argument);
204
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 }
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
92
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 TEST(Properties, missingM)
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
95 Irccd *irccd = nullptr;
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
96 MyCommand cmd;
204
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
97
221
5ff2bac1c7d8 Irccd: switch to nlohmann json, #515
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
98 ASSERT_THROW(cmd.exec(*irccd, nlohmann::json::object({
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
99 { "b", true },
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
100 { "i", 123 },
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
101 })), std::invalid_argument);
204
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
102 }
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
103
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 TEST(Properties, invalidB)
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
105 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
106 Irccd *irccd = nullptr;
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
107 MyCommand cmd;
204
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
108
221
5ff2bac1c7d8 Irccd: switch to nlohmann json, #515
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
109 ASSERT_THROW(cmd.exec(*irccd, nlohmann::json::object({
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
110 { "b", "fail" },
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
111 { "i", 123 },
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
112 { "m", "abc" }
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
113 })), std::invalid_argument);
204
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
114 }
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
115
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
116 TEST(Properties, invalidM)
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
117 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
118 Irccd *irccd = nullptr;
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
119 MyCommand cmd;
204
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
120
221
5ff2bac1c7d8 Irccd: switch to nlohmann json, #515
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
121 ASSERT_THROW(cmd.exec(*irccd, nlohmann::json::object({
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
122 { "b", "fail" },
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
123 { "i", 123 },
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
124 { "m", nullptr }
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
125 })), std::invalid_argument);
204
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
126 }
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
127
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
128 int main(int argc, char **argv)
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
129 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
130 testing::InitGoogleTest(&argc, argv);
204
751ac58d7747 Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff changeset
131
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
132 return RUN_ALL_TESTS();
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 204
diff changeset
133 }