]> git.proxmox.com Git - ceph.git/blob - ceph/src/test/common/test_tableformatter.cc
import 14.2.4 nautilus point release
[ceph.git] / ceph / src / test / common / test_tableformatter.cc
1 #include "gtest/gtest.h"
2
3 #include "common/Formatter.h"
4 #include <iostream>
5 #include <sstream>
6 #include <string>
7
8 using namespace ceph;
9
10 TEST(tableformatter, singleline)
11 {
12 std::stringstream sout;
13 TableFormatter formatter;
14 formatter.dump_int("integer", 10);
15 formatter.dump_float("float", 10.0);
16 formatter.dump_string("string", "string");
17 formatter.flush(sout);
18
19 std::string cmp = ""
20 "+----------+--------+---------+\n"
21 "| integer | float | string |\n"
22 "+----------+--------+---------+\n"
23 "| 10 | 10 | string |\n"
24 "+----------+--------+---------+\n";
25 EXPECT_EQ(cmp, sout.str());
26 }
27
28 TEST(tableformatter, longfloat)
29 {
30 std::stringstream sout;
31 TableFormatter formatter;
32 formatter.dump_float("float", 1.0 / 7);
33 formatter.flush(sout);
34
35 std::string cmp = ""
36 "+----------------------+\n"
37 "| float |\n"
38 "+----------------------+\n"
39 "| 0.14285714285714285 |\n"
40 "+----------------------+\n";
41 EXPECT_EQ(cmp, sout.str());
42 }
43
44 TEST(tableformatter, multiline)
45 {
46 std::stringstream sout;
47 TableFormatter formatter;
48 formatter.dump_int("integer", 10);
49 formatter.dump_float("float", 10.0);
50 formatter.dump_string("string", "string");
51 formatter.dump_int("integer", 20);
52 formatter.dump_float("float", 20.0);
53 formatter.dump_string("string", "string");
54
55 std::string cmp = ""
56 "+----------+--------+---------+\n"
57 "| integer | float | string |\n"
58 "+----------+--------+---------+\n"
59 "| 10 | 10 | string |\n"
60 "| 20 | 20 | string |\n"
61 "+----------+--------+---------+\n";
62
63 formatter.flush(sout);
64 EXPECT_EQ(cmp, sout.str());
65 }
66
67 TEST(tableformatter, multiflush)
68 {
69 std::stringstream sout1;
70 std::stringstream sout2;
71 TableFormatter formatter;
72 formatter.dump_int("integer", 10);
73 formatter.dump_float("float", 10.0);
74 formatter.dump_string("string", "string");
75 formatter.flush(sout1);
76
77 std::string cmp = ""
78 "+----------+--------+---------+\n"
79 "| integer | float | string |\n"
80 "+----------+--------+---------+\n"
81 "| 10 | 10 | string |\n"
82 "+----------+--------+---------+\n";
83
84 EXPECT_EQ(cmp, sout1.str());
85
86 formatter.dump_int("integer", 20);
87 formatter.dump_float("float", 20.0);
88 formatter.dump_string("string", "string");
89 formatter.flush(sout2);
90
91 cmp = ""
92 "| 20 | 20 | string |\n"
93 "+----------+--------+---------+\n";
94
95 EXPECT_EQ(cmp, sout2.str());
96
97 }
98
99 TEST(tableformatter, multireset)
100 {
101 std::stringstream sout;
102 TableFormatter formatter;
103 formatter.dump_int("integer", 10);
104 formatter.dump_float("float", 10.0);
105 formatter.dump_string("string", "string");
106 formatter.flush(sout);
107 formatter.reset();
108 formatter.dump_int("integer", 20);
109 formatter.dump_float("float", 20.0);
110 formatter.dump_string("string", "string");
111 formatter.flush(sout);
112
113 std::string cmp = ""
114 "+----------+--------+---------+\n"
115 "| integer | float | string |\n"
116 "+----------+--------+---------+\n"
117 "| 10 | 10 | string |\n"
118 "+----------+--------+---------+\n"
119 "+----------+--------+---------+\n"
120 "| integer | float | string |\n"
121 "+----------+--------+---------+\n"
122 "| 20 | 20 | string |\n"
123 "+----------+--------+---------+\n";
124
125 EXPECT_EQ(cmp, sout.str());
126 }
127
128 TEST(tableformatter, changingheaderlength)
129 {
130 std::stringstream sout;
131 TableFormatter formatter;
132 formatter.dump_int("integer", 10);
133 formatter.dump_float("float", 10.0);
134 formatter.dump_string("string", "string");
135 formatter.flush(sout);
136 formatter.dump_int("integer", 20);
137 formatter.dump_float("float", 20.0);
138 formatter.dump_string("string", "stringstring");
139 formatter.flush(sout);
140
141 std::string cmp = ""
142 "+----------+--------+---------+\n"
143 "| integer | float | string |\n"
144 "+----------+--------+---------+\n"
145 "| 10 | 10 | string |\n"
146 "+----------+--------+---------+\n"
147 "+----------+--------+---------------+\n"
148 "| integer | float | string |\n"
149 "+----------+--------+---------------+\n"
150 "| 20 | 20 | stringstring |\n"
151 "+----------+--------+---------------+\n";
152
153 EXPECT_EQ(cmp, sout.str());
154 }
155
156 TEST(tableformatter, changingheader)
157 {
158 std::stringstream sout;
159 TableFormatter formatter;
160 formatter.dump_int("integer", 10);
161 formatter.dump_float("float", 10.0);
162 formatter.dump_string("string", "string");
163 formatter.flush(sout);
164 formatter.dump_int("longinteger", 20);
165 formatter.dump_float("double", 20.0);
166 formatter.dump_string("char*", "stringstring");
167 formatter.flush(sout);
168
169 std::string cmp = ""
170 "+----------+--------+---------+\n"
171 "| integer | float | string |\n"
172 "+----------+--------+---------+\n"
173 "| 10 | 10 | string |\n"
174 "+----------+--------+---------+\n"
175 "+--------------+---------+---------------+\n"
176 "| longinteger | double | char* |\n"
177 "+--------------+---------+---------------+\n"
178 "| 20 | 20 | stringstring |\n"
179 "+--------------+---------+---------------+\n";
180
181 EXPECT_EQ(cmp, sout.str());
182 }
183
184 TEST(tableformatter, extendingheader)
185 {
186 std::stringstream sout;
187 TableFormatter formatter;
188 formatter.dump_int("integer", 10);
189 formatter.dump_float("float", 10.0);
190 formatter.dump_string("string", "string");
191 formatter.flush(sout);
192 formatter.dump_int("integer", 20);
193 formatter.dump_float("float", 20.0);
194 formatter.dump_string("string", "string");
195 formatter.dump_string("char*", "abcde");
196 formatter.flush(sout);
197
198 std::string cmp = ""
199 "+----------+--------+---------+\n"
200 "| integer | float | string |\n"
201 "+----------+--------+---------+\n"
202 "| 10 | 10 | string |\n"
203 "+----------+--------+---------+\n"
204 "+----------+--------+---------+--------+\n"
205 "| integer | float | string | char* |\n"
206 "+----------+--------+---------+--------+\n"
207 "| 20 | 20 | string | abcde |\n"
208 "+----------+--------+---------+--------+\n";
209
210 EXPECT_EQ(cmp, sout.str());
211 }
212
213 TEST(tableformatter, stream)
214 {
215 std::stringstream sout;
216 TableFormatter* formatter = (TableFormatter*) Formatter::create("table");
217 formatter->dump_stream("integer") << 10;
218 formatter->dump_stream("float") << 10.0;
219 formatter->dump_stream("string") << "string";
220 formatter->flush(sout);
221 delete formatter;
222
223 std::string cmp = ""
224 "+----------+--------+---------+\n"
225 "| integer | float | string |\n"
226 "+----------+--------+---------+\n"
227 "| 10 | 10 | string |\n"
228 "+----------+--------+---------+\n";
229
230 EXPECT_EQ(cmp, sout.str());
231 }
232
233 TEST(tableformatter, multiline_keyval)
234 {
235 std::stringstream sout;
236 TableFormatter* formatter = (TableFormatter*) Formatter::create("table-kv");
237 formatter->dump_int("integer", 10);
238 formatter->dump_float("float", 10.0);
239 formatter->dump_string("string", "string");
240 formatter->dump_int("integer", 20);
241 formatter->dump_float("float", 20.0);
242 formatter->dump_string("string", "string");
243 formatter->flush(sout);
244 delete formatter;
245
246 std::string cmp = ""
247 "key::integer=\"10\" key::float=\"10\" key::string=\"string\" \n"
248 "key::integer=\"20\" key::float=\"20\" key::string=\"string\" \n";
249
250 EXPECT_EQ(cmp, sout.str());
251 }
252
253 /*
254 * Local Variables:
255 * compile-command: "cd ../.. ; make -j4 &&
256 * make unittest_tableformatter &&
257 * ./unittest_tableformatter
258 * '
259 * End:
260 */
261
262
263