Mercurial > irccd
annotate tests/command/main.cpp @ 262:4c191ecfb94a
Docs: add more indexes
author | David Demelier <markand@malikania.fr> |
---|---|
date | Thu, 15 Sep 2016 07:03:50 +0200 |
parents | 79d9840811a1 |
children |
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 | 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 | 35 { "b", { nlohmann::json::value_t::boolean }}, |
36 { "i", { nlohmann::json::value_t::number_integer }}, | |
37 { "m", { | |
38 nlohmann::json::value_t::boolean, | |
39 nlohmann::json::value_t::number_integer, | |
40 nlohmann::json::value_t::string | |
41 } | |
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 } |