]>
git.proxmox.com Git - ceph.git/blob - ceph/src/test/formatter.cc
1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
4 * Ceph - scalable distributed file system
6 * Copyright (C) 2011 New Dream Network
8 * This is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License version 2.1, as published by the Free Software
11 * Foundation. See file COPYING.
15 #include "gtest/gtest.h"
16 #include "common/Formatter.h"
17 #include "common/HTMLFormatter.h"
23 using std::ostringstream
;
25 TEST(JsonFormatter
, Simple1
) {
27 JSONFormatter
fmt(false);
28 fmt
.open_object_section("foo");
34 ASSERT_EQ(oss
.str(), "{\"a\":1,\"b\":2,\"c\":3}");
37 TEST(JsonFormatter
, Simple2
) {
39 JSONFormatter
fmt(false);
40 fmt
.open_object_section("foo");
41 fmt
.open_object_section("bar");
42 fmt
.dump_int("int", 0xf00000000000ll
);
43 fmt
.dump_unsigned("unsigned", 0x8000000000000001llu
);
44 fmt
.dump_float("float", 1.234);
46 fmt
.dump_string("string", "str");
49 ASSERT_EQ(oss
.str(), "{\"bar\":{\"int\":263882790666240,\
50 \"unsigned\":9223372036854775809,\"float\":1.234000},\
51 \"string\":\"str\"}");
54 TEST(JsonFormatter
, Empty
) {
56 JSONFormatter
fmt(false);
58 ASSERT_EQ(oss
.str(), "");
61 TEST(XmlFormatter
, Simple1
) {
63 XMLFormatter
fmt(false);
64 fmt
.open_object_section("foo");
70 ASSERT_EQ(oss
.str(), "<foo><a>1</a><b>2</b><c>3</c></foo>");
73 TEST(XmlFormatter
, Simple2
) {
75 XMLFormatter
fmt(false);
76 fmt
.open_object_section("foo");
77 fmt
.open_object_section("bar");
78 fmt
.dump_int("int", 0xf00000000000ll
);
79 fmt
.dump_unsigned("unsigned", 0x8000000000000001llu
);
80 fmt
.dump_float("float", 1.234);
82 fmt
.dump_string("string", "str");
85 ASSERT_EQ(oss
.str(), "<foo><bar>\
86 <int>263882790666240</int>\
87 <unsigned>9223372036854775809</unsigned>\
89 </bar><string>str</string>\
93 TEST(XmlFormatter
, Empty
) {
95 XMLFormatter
fmt(false);
97 ASSERT_EQ(oss
.str(), "");
100 TEST(XmlFormatter
, DumpStream1
) {
102 XMLFormatter
fmt(false);
103 fmt
.dump_stream("blah") << "hithere";
105 ASSERT_EQ(oss
.str(), "<blah>hithere</blah>");
108 TEST(XmlFormatter
, DumpStream2
) {
110 XMLFormatter
fmt(false);
112 fmt
.open_array_section("foo");
113 fmt
.dump_stream("blah") << "hithere";
116 ASSERT_EQ(oss
.str(), "<foo><blah>hithere</blah></foo>");
119 TEST(XmlFormatter
, DumpStream3
) {
121 XMLFormatter
fmt(false);
123 fmt
.open_array_section("foo");
124 fmt
.dump_stream("blah") << "hithere";
125 fmt
.dump_float("pi", 3.14);
128 ASSERT_EQ(oss
.str(), "<foo><blah>hithere</blah><pi>3.14</pi></foo>");
131 TEST(XmlFormatter
, DTD
) {
133 XMLFormatter
fmt(false);
136 fmt
.open_array_section("foo");
137 fmt
.dump_stream("blah") << "hithere";
138 fmt
.dump_float("pi", 3.14);
141 ASSERT_EQ(oss
.str(), "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
142 "<foo><blah>hithere</blah><pi>3.14</pi></foo>");
145 TEST(XmlFormatter
, Clear
) {
147 XMLFormatter
fmt(false);
150 fmt
.open_array_section("foo");
151 fmt
.dump_stream("blah") << "hithere";
152 fmt
.dump_float("pi", 3.14);
155 ASSERT_EQ(oss
.str(), "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
156 "<foo><blah>hithere</blah><pi>3.14</pi></foo>");
160 ASSERT_EQ(oss2
.str(), "");
165 ASSERT_EQ(oss3
.str(), "");
168 TEST(XmlFormatter
, NamespaceTest
) {
170 XMLFormatter
fmt(false);
173 fmt
.open_array_section_in_ns("foo",
174 "http://s3.amazonaws.com/doc/2006-03-01/");
175 fmt
.dump_stream("blah") << "hithere";
176 fmt
.dump_float("pi", 3.14);
179 ASSERT_EQ(oss
.str(), "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
180 "<foo xmlns=\"http://s3.amazonaws.com/doc/2006-03-01/\">"
181 "<blah>hithere</blah><pi>3.14</pi></foo>");
184 TEST(XmlFormatter
, DumpFormatNameSpaceTest
) {
186 XMLFormatter
fmt(false);
188 fmt
.dump_format_ns("foo",
189 "http://s3.amazonaws.com/doc/2006-03-01/",
192 ASSERT_EQ(oss1
.str(),
193 "<foo xmlns=\"http://s3.amazonaws.com/doc/2006-03-01/\">bar</foo>");
195 // Testing with a null ns..should be same as dump format
198 fmt
.dump_format_ns("foo",NULL
,"%s","bar");
200 ASSERT_EQ(oss2
.str(),"<foo>bar</foo>");
203 TEST(HtmlFormatter
, Simple1
) {
205 HTMLFormatter
fmt(false);
206 fmt
.open_object_section("foo");
207 fmt
.dump_int("a", 1);
208 fmt
.dump_int("b", 2);
209 fmt
.dump_int("c", 3);
212 ASSERT_EQ(oss
.str(), "<foo><li>a: 1</li><li>b: 2</li><li>c: 3</li></foo>");
215 TEST(HtmlFormatter
, Simple2
) {
217 HTMLFormatter
fmt(false);
218 fmt
.open_object_section("foo");
219 fmt
.open_object_section("bar");
220 fmt
.dump_int("int", 0xf00000000000ll
);
221 fmt
.dump_unsigned("unsigned", 0x8000000000000001llu
);
222 fmt
.dump_float("float", 1.234);
224 fmt
.dump_string("string", "str");
227 ASSERT_EQ(oss
.str(), "<foo><bar>\
228 <li>int: 263882790666240</li>\
229 <li>unsigned: 9223372036854775809</li>\
230 <li>float: 1.234</li>\
231 </bar><li>string: str</li>\
235 TEST(HtmlFormatter
, Empty
) {
237 HTMLFormatter
fmt(false);
239 ASSERT_EQ(oss
.str(), "");
242 TEST(HtmlFormatter
, DumpStream1
) {
244 HTMLFormatter
fmt(false);
245 fmt
.dump_stream("blah") << "hithere";
247 ASSERT_EQ(oss
.str(), "<li>blah: hithere</li>");
250 TEST(HtmlFormatter
, DumpStream2
) {
252 HTMLFormatter
fmt(false);
254 fmt
.open_array_section("foo");
255 fmt
.dump_stream("blah") << "hithere";
258 ASSERT_EQ(oss
.str(), "<foo><li>blah: hithere</li></foo>");
261 TEST(HtmlFormatter
, DumpStream3
) {
263 HTMLFormatter
fmt(false);
265 fmt
.open_array_section("foo");
266 fmt
.dump_stream("blah") << "hithere";
267 fmt
.dump_float("pi", 3.14);
270 ASSERT_EQ(oss
.str(), "<foo><li>blah: hithere</li><li>pi: 3.14</li></foo>");
273 TEST(HtmlFormatter
, DTD
) {
275 HTMLFormatter
fmt(false);
277 fmt
.write_raw_data(HTMLFormatter::XML_1_DTD
);
278 fmt
.open_array_section("foo");
279 fmt
.dump_stream("blah") << "hithere";
280 fmt
.dump_float("pi", 3.14);
283 ASSERT_EQ(oss
.str(), "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
284 "<foo><li>blah: hithere</li><li>pi: 3.14</li></foo>");
287 TEST(HtmlFormatter
, Clear
) {
289 HTMLFormatter
fmt(false);
291 fmt
.write_raw_data(HTMLFormatter::XML_1_DTD
);
292 fmt
.open_array_section("foo");
293 fmt
.dump_stream("blah") << "hithere";
294 fmt
.dump_float("pi", 3.14);
297 ASSERT_EQ(oss
.str(), "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
298 "<foo><li>blah: hithere</li><li>pi: 3.14</li></foo>");
302 ASSERT_EQ(oss2
.str(), "");
307 ASSERT_EQ(oss3
.str(), "");
310 TEST(HtmlFormatter
, NamespaceTest
) {
312 HTMLFormatter
fmt(false);
314 fmt
.write_raw_data(HTMLFormatter::XML_1_DTD
);
315 fmt
.open_array_section_in_ns("foo",
316 "http://s3.amazonaws.com/doc/2006-03-01/");
317 fmt
.dump_stream("blah") << "hithere";
318 fmt
.dump_float("pi", 3.14);
321 ASSERT_EQ(oss
.str(), "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
322 "<foo xmlns=\"http://s3.amazonaws.com/doc/2006-03-01/\">"
323 "<li>blah: hithere</li><li>pi: 3.14</li></foo>");
326 TEST(HtmlFormatter
, DumpFormatNameSpaceTest
) {
328 HTMLFormatter
fmt(false);
330 fmt
.dump_format_ns("foo",
331 "http://s3.amazonaws.com/doc/2006-03-01/",
334 ASSERT_EQ(oss1
.str(),
335 "<li xmlns=\"http://s3.amazonaws.com/doc/2006-03-01/\">foo: bar</li>");
337 // Testing with a null ns..should be same as dump format
340 fmt
.dump_format_ns("foo",NULL
,"%s","bar");
342 ASSERT_EQ(oss2
.str(),"<li>foo: bar</li>");