Fix some bugs when testing opensds ansible
[stor4nfv.git] / src / ceph / src / test / common / test_xmlformatter.cc
1 #include "gtest/gtest.h"
2
3 #include "common/Formatter.h"
4 #include <sstream>
5 #include <string>
6
7 using namespace ceph;
8
9
10 TEST(xmlformatter, oneline)
11 {
12
13   std::stringstream sout;
14   XMLFormatter formatter;
15   formatter.dump_int("integer", 10);
16   formatter.dump_float("float", 10.0);
17   formatter.dump_string("string", "string");
18   formatter.flush(sout);
19   std::string cmp = "<integer>10</integer><float>10</float><string>string</string>";
20   EXPECT_EQ(cmp, sout.str());
21 }
22
23 TEST(xmlformatter, multiline)
24 {
25   std::stringstream sout;
26   XMLFormatter formatter;
27   formatter.dump_int("integer", 10);
28   formatter.dump_float("float", 10.0);
29   formatter.dump_string("string", "string");
30   formatter.dump_int("integer", 20);
31   formatter.dump_float("float", 20.0);
32   formatter.dump_string("string", "string");
33
34   std::string cmp = ""
35     "<integer>10</integer><float>10</float><string>string</string>"
36     "<integer>20</integer><float>20</float><string>string</string>";
37
38   formatter.flush(sout);
39   EXPECT_EQ(cmp, sout.str());
40 }
41
42 TEST(xmlformatter, multiflush)
43 {
44   std::stringstream sout1;
45   std::stringstream sout2;
46   XMLFormatter formatter;
47   formatter.dump_int("integer", 10);
48   formatter.dump_float("float", 10.0);
49   formatter.dump_string("string", "string");
50   formatter.flush(sout1);
51
52   std::string cmp = ""
53     "<integer>10</integer>"
54     "<float>10</float>"
55     "<string>string</string>";
56
57   EXPECT_EQ(cmp, sout1.str());
58
59   formatter.dump_int("integer", 20);
60   formatter.dump_float("float", 20.0);
61   formatter.dump_string("string", "string");
62   formatter.flush(sout2);
63
64   cmp = ""
65     "<integer>20</integer>"
66     "<float>20</float>"
67     "<string>string</string>";
68
69   EXPECT_EQ(cmp, sout2.str());
70 }
71
72 TEST(xmlformatter, pretty)
73 {
74   std::stringstream sout;
75   XMLFormatter formatter(
76       true,   // pretty
77       false,   // lowercased
78       false); // underscored
79   formatter.open_object_section("xml");
80   formatter.dump_int("Integer", 10);
81   formatter.dump_float("Float", 10.0);
82   formatter.dump_string("String", "String");
83   formatter.close_section();
84   formatter.flush(sout);
85   std::string cmp = ""
86     "<xml>\n"
87     " <Integer>10</Integer>\n"
88     " <Float>10</Float>\n"
89     " <String>String</String>\n"
90     "</xml>\n\n";
91   EXPECT_EQ(cmp, sout.str());
92 }
93
94 TEST(xmlformatter, lowercased)
95 {
96   std::stringstream sout;
97   XMLFormatter formatter(
98       false,  // pretty
99       true,   // lowercased
100       false); // underscored
101   formatter.dump_int("Integer", 10);
102   formatter.dump_float("Float", 10.0);
103   formatter.dump_string("String", "String");
104   formatter.flush(sout);
105   std::string cmp = ""
106     "<integer>10</integer>"
107     "<float>10</float>"
108     "<string>String</string>";
109   EXPECT_EQ(cmp, sout.str());
110 }
111
112 TEST(xmlformatter, underscored)
113 {
114   std::stringstream sout;
115   XMLFormatter formatter(
116       false,  // pretty
117       false,   // lowercased
118       true); // underscored
119   formatter.dump_int("Integer Item", 10);
120   formatter.dump_float("Float Item", 10.0);
121   formatter.dump_string("String Item", "String");
122   formatter.flush(sout);
123   std::string cmp = ""
124     "<Integer_Item>10</Integer_Item>"
125     "<Float_Item>10</Float_Item>"
126     "<String_Item>String</String_Item>";
127
128   EXPECT_EQ(cmp, sout.str());
129 }
130
131 TEST(xmlformatter, lowercased_underscored)
132 {
133   std::stringstream sout;
134   XMLFormatter formatter(
135       false,  // pretty
136       true,   // lowercased
137       true); // underscored
138   formatter.dump_int("Integer Item", 10);
139   formatter.dump_float("Float Item", 10.0);
140   formatter.dump_string("String Item", "String");
141   formatter.flush(sout);
142   std::string cmp = ""
143     "<integer_item>10</integer_item>"
144     "<float_item>10</float_item>"
145     "<string_item>String</string_item>";
146   EXPECT_EQ(cmp, sout.str());
147 }
148
149 TEST(xmlformatter, pretty_lowercased_underscored)
150 {
151   std::stringstream sout;
152   XMLFormatter formatter(
153       true,  // pretty
154       true,   // lowercased
155       true); // underscored
156   formatter.dump_int("Integer Item", 10);
157   formatter.dump_float("Float Item", 10.0);
158   formatter.dump_string("String Item", "String");
159   formatter.flush(sout);
160   std::string cmp = ""
161     "<integer_item>10</integer_item>\n"
162     "<float_item>10</float_item>\n"
163     "<string_item>String</string_item>\n\n";
164   EXPECT_EQ(cmp, sout.str());
165 }