1 #include "gtest/gtest.h"
3 #include "common/Formatter.h"
10 TEST(tableformatter, singleline)
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);
20 "+----------+--------+---------+\n"
21 "| integer | float | string |\n"
22 "+----------+--------+---------+\n"
23 "| 10 | 10 | string |\n"
24 "+----------+--------+---------+\n";
25 EXPECT_EQ(cmp, sout.str());
28 TEST(tableformatter, multiline)
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");
40 "+----------+--------+---------+\n"
41 "| integer | float | string |\n"
42 "+----------+--------+---------+\n"
43 "| 10 | 10 | string |\n"
44 "| 20 | 20 | string |\n"
45 "+----------+--------+---------+\n";
47 formatter.flush(sout);
48 EXPECT_EQ(cmp, sout.str());
51 TEST(tableformatter, multiflush)
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);
62 "+----------+--------+---------+\n"
63 "| integer | float | string |\n"
64 "+----------+--------+---------+\n"
65 "| 10 | 10 | string |\n"
66 "+----------+--------+---------+\n";
68 EXPECT_EQ(cmp, sout1.str());
70 formatter.dump_int("integer", 20);
71 formatter.dump_float("float", 20.0);
72 formatter.dump_string("string", "string");
73 formatter.flush(sout2);
76 "| 20 | 20 | string |\n"
77 "+----------+--------+---------+\n";
79 EXPECT_EQ(cmp, sout2.str());
83 TEST(tableformatter, multireset)
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);
92 formatter.dump_int("integer", 20);
93 formatter.dump_float("float", 20.0);
94 formatter.dump_string("string", "string");
95 formatter.flush(sout);
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";
109 EXPECT_EQ(cmp, sout.str());
112 TEST(tableformatter, changingheaderlength)
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);
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";
137 EXPECT_EQ(cmp, sout.str());
140 TEST(tableformatter, changingheader)
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);
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";
165 EXPECT_EQ(cmp, sout.str());
168 TEST(tableformatter, extendingheader)
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);
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";
194 EXPECT_EQ(cmp, sout.str());
197 TEST(tableformatter, stream)
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);
208 "+----------+--------+---------+\n"
209 "| integer | float | string |\n"
210 "+----------+--------+---------+\n"
211 "| 10 | 10 | string |\n"
212 "+----------+--------+---------+\n";
214 EXPECT_EQ(cmp, sout.str());
217 TEST(tableformatter, multiline_keyval)
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);
231 "key::integer=\"10\" key::float=\"10\" key::string=\"string\" \n"
232 "key::integer=\"20\" key::float=\"20\" key::string=\"string\" \n";
234 EXPECT_EQ(cmp, sout.str());
239 * compile-command: "cd ../.. ; make -j4 &&
240 * make unittest_tableformatter &&
241 * ./unittest_tableformatter