Fix some bugs when testing opensds ansible
[stor4nfv.git] / src / 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, multiline)
29 {
30   std::stringstream sout;
31   TableFormatter formatter;
32   formatter.dump_int("integer", 10);
33   formatter.dump_float("float", 10.0);
34   formatter.dump_string("string", "string");
35   formatter.dump_int("integer", 20);
36   formatter.dump_float("float", 20.0);
37   formatter.dump_string("string", "string");
38
39   std::string cmp = ""
40     "+----------+--------+---------+\n"
41     "| integer  | float  | string  |\n"
42     "+----------+--------+---------+\n"
43     "| 10       | 10     | string  |\n"
44     "| 20       | 20     | string  |\n"
45     "+----------+--------+---------+\n";
46
47   formatter.flush(sout);
48   EXPECT_EQ(cmp, sout.str());
49 }
50
51 TEST(tableformatter, multiflush)
52 {
53   std::stringstream sout1;
54   std::stringstream sout2;
55   TableFormatter formatter;
56   formatter.dump_int("integer", 10);
57   formatter.dump_float("float", 10.0);
58   formatter.dump_string("string", "string");
59   formatter.flush(sout1);
60
61   std::string cmp = ""
62     "+----------+--------+---------+\n"
63     "| integer  | float  | string  |\n"
64     "+----------+--------+---------+\n"
65     "| 10       | 10     | string  |\n"
66     "+----------+--------+---------+\n";
67
68   EXPECT_EQ(cmp, sout1.str());
69
70   formatter.dump_int("integer", 20);
71   formatter.dump_float("float", 20.0);
72   formatter.dump_string("string", "string");
73   formatter.flush(sout2);
74
75   cmp = ""
76     "| 20       | 20     | string  |\n"
77     "+----------+--------+---------+\n";
78
79   EXPECT_EQ(cmp, sout2.str());
80
81 }
82
83 TEST(tableformatter, multireset)
84 {
85   std::stringstream sout;
86   TableFormatter formatter;
87   formatter.dump_int("integer", 10);
88   formatter.dump_float("float", 10.0);
89   formatter.dump_string("string", "string");
90   formatter.flush(sout);
91   formatter.reset();
92   formatter.dump_int("integer", 20);
93   formatter.dump_float("float", 20.0);
94   formatter.dump_string("string", "string");
95   formatter.flush(sout);
96
97   std::string cmp = ""
98     "+----------+--------+---------+\n"
99     "| integer  | float  | string  |\n"
100     "+----------+--------+---------+\n"
101     "| 10       | 10     | string  |\n"
102     "+----------+--------+---------+\n"
103     "+----------+--------+---------+\n"
104     "| integer  | float  | string  |\n"
105     "+----------+--------+---------+\n"
106     "| 20       | 20     | string  |\n"
107     "+----------+--------+---------+\n";
108
109   EXPECT_EQ(cmp, sout.str());
110 }
111
112 TEST(tableformatter, changingheaderlength)
113 {
114   std::stringstream sout;
115   TableFormatter formatter;
116   formatter.dump_int("integer", 10);
117   formatter.dump_float("float", 10.0);
118   formatter.dump_string("string", "string");
119   formatter.flush(sout);
120   formatter.dump_int("integer", 20);
121   formatter.dump_float("float", 20.0);
122   formatter.dump_string("string", "stringstring");
123   formatter.flush(sout);
124
125   std::string cmp = ""
126     "+----------+--------+---------+\n"
127     "| integer  | float  | string  |\n"
128     "+----------+--------+---------+\n"
129     "| 10       | 10     | string  |\n"
130     "+----------+--------+---------+\n"
131     "+----------+--------+---------------+\n"
132     "| integer  | float  | string        |\n"
133     "+----------+--------+---------------+\n"
134     "| 20       | 20     | stringstring  |\n"
135     "+----------+--------+---------------+\n";
136
137   EXPECT_EQ(cmp, sout.str());
138 }
139
140 TEST(tableformatter, changingheader)
141 {
142   std::stringstream sout;
143   TableFormatter formatter;
144   formatter.dump_int("integer", 10);
145   formatter.dump_float("float", 10.0);
146   formatter.dump_string("string", "string");
147   formatter.flush(sout);
148   formatter.dump_int("longinteger", 20);
149   formatter.dump_float("double", 20.0);
150   formatter.dump_string("char*", "stringstring");
151   formatter.flush(sout);
152
153   std::string cmp = ""
154     "+----------+--------+---------+\n"
155     "| integer  | float  | string  |\n"
156     "+----------+--------+---------+\n"
157     "| 10       | 10     | string  |\n"
158     "+----------+--------+---------+\n"
159     "+--------------+---------+---------------+\n"
160     "| longinteger  | double  | char*         |\n"
161     "+--------------+---------+---------------+\n"
162     "| 20           | 20      | stringstring  |\n"
163     "+--------------+---------+---------------+\n";
164
165   EXPECT_EQ(cmp, sout.str());
166 }
167
168 TEST(tableformatter, extendingheader)
169 {
170   std::stringstream sout;
171   TableFormatter formatter;
172   formatter.dump_int("integer", 10);
173   formatter.dump_float("float", 10.0);
174   formatter.dump_string("string", "string");
175   formatter.flush(sout);
176   formatter.dump_int("integer", 20);
177   formatter.dump_float("float", 20.0);
178   formatter.dump_string("string", "string");
179   formatter.dump_string("char*", "abcde");
180   formatter.flush(sout);
181
182   std::string cmp = ""
183     "+----------+--------+---------+\n"
184     "| integer  | float  | string  |\n"
185     "+----------+--------+---------+\n"
186     "| 10       | 10     | string  |\n"
187     "+----------+--------+---------+\n"
188     "+----------+--------+---------+--------+\n"
189     "| integer  | float  | string  | char*  |\n"
190     "+----------+--------+---------+--------+\n"
191     "| 20       | 20     | string  | abcde  |\n"
192     "+----------+--------+---------+--------+\n";
193
194   EXPECT_EQ(cmp, sout.str());
195 }
196
197 TEST(tableformatter, stream)
198 {
199   std::stringstream sout;
200   TableFormatter* formatter = (TableFormatter*) Formatter::create("table");
201   formatter->dump_stream("integer") << 10;
202   formatter->dump_stream("float") << 10.0;
203   formatter->dump_stream("string") << "string";
204   formatter->flush(sout);
205   delete formatter;
206
207   std::string cmp = ""
208     "+----------+--------+---------+\n"
209     "| integer  | float  | string  |\n"
210     "+----------+--------+---------+\n"
211     "| 10       | 10     | string  |\n"
212     "+----------+--------+---------+\n";
213
214   EXPECT_EQ(cmp, sout.str());
215 }
216
217 TEST(tableformatter, multiline_keyval)
218 {
219   std::stringstream sout;
220   TableFormatter* formatter = (TableFormatter*) Formatter::create("table-kv");
221   formatter->dump_int("integer", 10);
222   formatter->dump_float("float", 10.0);
223   formatter->dump_string("string", "string");
224   formatter->dump_int("integer", 20);
225   formatter->dump_float("float", 20.0);
226   formatter->dump_string("string", "string");
227   formatter->flush(sout);
228   delete formatter;
229
230   std::string cmp = ""
231     "key::integer=\"10\" key::float=\"10\" key::string=\"string\" \n"
232     "key::integer=\"20\" key::float=\"20\" key::string=\"string\" \n";
233
234   EXPECT_EQ(cmp, sout.str());
235 }
236
237 /*
238  * Local Variables:
239  * compile-command: "cd ../.. ; make -j4 &&
240  *   make unittest_tableformatter &&
241  *      ./unittest_tableformatter
242  *   '
243  * End:
244  */
245
246
247