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