Mercurial > irccd
annotate tests/command/main.cpp @ 207:6635b9187d71
Irccd: switch to 4 spaces indent, #518
author | David Demelier <markand@malikania.fr> |
---|---|
date | Tue, 21 Jun 2016 20:52:17 +0200 |
parents | 751ac58d7747 |
children | 5ff2bac1c7d8 |
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() |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
204
diff
changeset
|
28 : Command("test", "Test") |
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::string help() const override |
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 "This is a super command"; |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
204
diff
changeset
|
35 } |
204
751ac58d7747
Irccd: initial properties required in Command, #516
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
36 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
204
diff
changeset
|
37 std::vector<Property> properties() const |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
204
diff
changeset
|
38 { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
204
diff
changeset
|
39 return { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
204
diff
changeset
|
40 { "b", { json::Type::Boolean }}, |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
204
diff
changeset
|
41 { "i", { json::Type::Int }}, |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
204
diff
changeset
|
42 { "m", { json::Type::Boolean, json::Type::Int, json::Type::String }} |
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 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
204
diff
changeset
|
52 ASSERT_NO_THROW(cmd.exec(*irccd, json::object({ |
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 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
204
diff
changeset
|
58 ASSERT_NO_THROW(cmd.exec(*irccd, json::object({ |
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 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
204
diff
changeset
|
64 ASSERT_NO_THROW(cmd.exec(*irccd, json::object({ |
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 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
204
diff
changeset
|
76 ASSERT_THROW(cmd.exec(*irccd, json::object({ |
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 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
204
diff
changeset
|
87 ASSERT_THROW(cmd.exec(*irccd, json::object({ |
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 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
204
diff
changeset
|
98 ASSERT_THROW(cmd.exec(*irccd, json::object({ |
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 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
204
diff
changeset
|
109 ASSERT_THROW(cmd.exec(*irccd, json::object({ |
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 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
204
diff
changeset
|
121 ASSERT_THROW(cmd.exec(*irccd, json::object({ |
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 } |