1 /*
2 * Copyright (C) 2021 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17 #include <iostream>
18 #include <fstream>
19 #include <string>
20 #include <optional>
21
22 #include <android-base/macros.h>
23 #include <gtest/gtest.h>
24 #include "cross_libxml.h"
25 #include "cross_tinyxml.h"
26
27 #include "xmltest.h"
28
29 using namespace std;
30 namespace libxml = cross::libxml;
31 namespace tinyxml = cross::tinyxml;
32
TEST_F(XmlTest,LibXmlGenerateTinyXmlParse)33 TEST_F(XmlTest, LibXmlGenerateTinyXmlParse) {
34 std::vector<libxml::USAddress> shipTo;
35 shipTo.emplace_back("name1", "street1", "city1", "state1", 1, "US");
36 shipTo.emplace_back("name2", "street2", "city2", "state2", 7922816251426433759, "US");
37
38 std::vector<libxml::USAddress> billTo;
39 billTo.emplace_back("billName", "billStree", "billCity", "billState", 1, "US");
40 billTo.emplace_back("billName2", std::nullopt, std::nullopt,
41 std::nullopt, std::nullopt, std::nullopt);
42
43 libxml::PurchaseOrderType libXmlDoc(std::move(shipTo), std::move(billTo), "1900-01-01");
44
45 ofstream out("libxml_generated.xml");
46 write(out, libXmlDoc);
47
48 tinyxml::PurchaseOrderType tinyXmlDoc = *tinyxml::read("libxml_generated.xml");
49
50 EXPECT_EQ(libXmlDoc.getOrderDate(), tinyXmlDoc.getOrderDate());
51
52 EXPECT_EQ(libXmlDoc.getShipTo().size(), tinyXmlDoc.getShipTo().size());
53 EXPECT_EQ(libXmlDoc.getShipTo()[0].getName(), tinyXmlDoc.getShipTo()[0].getName());
54 EXPECT_EQ(libXmlDoc.getShipTo()[0].getStreet(), tinyXmlDoc.getShipTo()[0].getStreet());
55 EXPECT_EQ(libXmlDoc.getShipTo()[0].getCity(), tinyXmlDoc.getShipTo()[0].getCity());
56 EXPECT_EQ(libXmlDoc.getShipTo()[0].getState(), tinyXmlDoc.getShipTo()[0].getState());
57 EXPECT_EQ(libXmlDoc.getShipTo()[0].getZip(), tinyXmlDoc.getShipTo()[0].getZip());
58 EXPECT_EQ(libXmlDoc.getShipTo()[0].getCountry(), tinyXmlDoc.getShipTo()[0].getCountry());
59 EXPECT_EQ(libXmlDoc.getShipTo()[1].getName(), tinyXmlDoc.getShipTo()[1].getName());
60 EXPECT_EQ(libXmlDoc.getShipTo()[1].getStreet(), tinyXmlDoc.getShipTo()[1].getStreet());
61 EXPECT_EQ(libXmlDoc.getShipTo()[1].getCity(), tinyXmlDoc.getShipTo()[1].getCity());
62 EXPECT_EQ(libXmlDoc.getShipTo()[1].getState(), tinyXmlDoc.getShipTo()[1].getState());
63 EXPECT_EQ(libXmlDoc.getShipTo()[1].getZip(), tinyXmlDoc.getShipTo()[1].getZip());
64 EXPECT_EQ(libXmlDoc.getShipTo()[1].getCountry(), tinyXmlDoc.getShipTo()[1].getCountry());
65
66 EXPECT_EQ(libXmlDoc.getBillTo().size(), tinyXmlDoc.getBillTo().size());
67 EXPECT_EQ(libXmlDoc.getBillTo()[0].getName(), tinyXmlDoc.getBillTo()[0].getName());
68 EXPECT_EQ(libXmlDoc.getBillTo()[0].getStreet(), tinyXmlDoc.getBillTo()[0].getStreet());
69 EXPECT_EQ(libXmlDoc.getBillTo()[0].getCity(), tinyXmlDoc.getBillTo()[0].getCity());
70 EXPECT_EQ(libXmlDoc.getBillTo()[0].getState(), tinyXmlDoc.getBillTo()[0].getState());
71 EXPECT_EQ(libXmlDoc.getBillTo()[0].getZip(), tinyXmlDoc.getBillTo()[0].getZip());
72 EXPECT_EQ(libXmlDoc.getBillTo()[0].getCountry(), tinyXmlDoc.getBillTo()[0].getCountry());
73 EXPECT_EQ(libXmlDoc.getBillTo()[1].getName(), tinyXmlDoc.getBillTo()[1].getName());
74 EXPECT_EQ(libXmlDoc.getBillTo()[1].hasStreet(), tinyXmlDoc.getBillTo()[1].hasStreet());
75 EXPECT_EQ(libXmlDoc.getBillTo()[1].hasCity(), tinyXmlDoc.getBillTo()[1].hasCity());
76 EXPECT_EQ(libXmlDoc.getBillTo()[1].hasState(), tinyXmlDoc.getBillTo()[1].hasState());
77 EXPECT_EQ(libXmlDoc.getBillTo()[1].hasZip(), tinyXmlDoc.getBillTo()[1].hasZip());
78 EXPECT_EQ(libXmlDoc.getBillTo()[1].hasCountry(), tinyXmlDoc.getBillTo()[1].hasCountry());
79 }
80
TEST_F(XmlTest,TinyXmlGenerateLibXmlParse)81 TEST_F(XmlTest, TinyXmlGenerateLibXmlParse) {
82 std::vector<tinyxml::USAddress> shipTo;
83 shipTo.emplace_back("name1", "street1", "city1", "state1", 1, "US");
84 shipTo.emplace_back("name2", "street2", "city2", "state2", 7922816251426433759, "US");
85
86 std::vector<tinyxml::USAddress> billTo;
87 billTo.emplace_back("billName", "billStree", "billCity", "billState", 1, "US");
88 billTo.emplace_back("billName2", std::nullopt, std::nullopt,
89 std::nullopt, std::nullopt, std::nullopt);
90
91 tinyxml::PurchaseOrderType tinyXmlDoc(std::move(shipTo), std::move(billTo), "1900-01-01");
92
93 ofstream out("tinyxml_generated.xml");
94 write(out, tinyXmlDoc);
95
96 libxml::PurchaseOrderType libXmlDoc = *libxml::read("tinyxml_generated.xml");
97
98 EXPECT_EQ(tinyXmlDoc.getOrderDate(), libXmlDoc.getOrderDate());
99
100 EXPECT_EQ(tinyXmlDoc.getShipTo().size(), libXmlDoc.getShipTo().size());
101 EXPECT_EQ(tinyXmlDoc.getShipTo()[0].getName(), libXmlDoc.getShipTo()[0].getName());
102 EXPECT_EQ(tinyXmlDoc.getShipTo()[0].getStreet(), libXmlDoc.getShipTo()[0].getStreet());
103 EXPECT_EQ(tinyXmlDoc.getShipTo()[0].getCity(), libXmlDoc.getShipTo()[0].getCity());
104 EXPECT_EQ(tinyXmlDoc.getShipTo()[0].getState(), libXmlDoc.getShipTo()[0].getState());
105 EXPECT_EQ(tinyXmlDoc.getShipTo()[0].getZip(), libXmlDoc.getShipTo()[0].getZip());
106 EXPECT_EQ(tinyXmlDoc.getShipTo()[0].getCountry(), libXmlDoc.getShipTo()[0].getCountry());
107 EXPECT_EQ(tinyXmlDoc.getShipTo()[1].getName(), libXmlDoc.getShipTo()[1].getName());
108 EXPECT_EQ(tinyXmlDoc.getShipTo()[1].getStreet(), libXmlDoc.getShipTo()[1].getStreet());
109 EXPECT_EQ(tinyXmlDoc.getShipTo()[1].getCity(), libXmlDoc.getShipTo()[1].getCity());
110 EXPECT_EQ(tinyXmlDoc.getShipTo()[1].getState(), libXmlDoc.getShipTo()[1].getState());
111 EXPECT_EQ(tinyXmlDoc.getShipTo()[1].getZip(), libXmlDoc.getShipTo()[1].getZip());
112 EXPECT_EQ(tinyXmlDoc.getShipTo()[1].getCountry(), libXmlDoc.getShipTo()[1].getCountry());
113
114 EXPECT_EQ(tinyXmlDoc.getBillTo().size(), libXmlDoc.getBillTo().size());
115 EXPECT_EQ(tinyXmlDoc.getBillTo()[0].getName(), libXmlDoc.getBillTo()[0].getName());
116 EXPECT_EQ(tinyXmlDoc.getBillTo()[0].getStreet(), libXmlDoc.getBillTo()[0].getStreet());
117 EXPECT_EQ(tinyXmlDoc.getBillTo()[0].getCity(), libXmlDoc.getBillTo()[0].getCity());
118 EXPECT_EQ(tinyXmlDoc.getBillTo()[0].getState(), libXmlDoc.getBillTo()[0].getState());
119 EXPECT_EQ(tinyXmlDoc.getBillTo()[0].getZip(), libXmlDoc.getBillTo()[0].getZip());
120 EXPECT_EQ(tinyXmlDoc.getBillTo()[0].getCountry(), libXmlDoc.getBillTo()[0].getCountry());
121 EXPECT_EQ(tinyXmlDoc.getBillTo()[1].getName(), libXmlDoc.getBillTo()[1].getName());
122 EXPECT_EQ(tinyXmlDoc.getBillTo()[1].hasStreet(), libXmlDoc.getBillTo()[1].hasStreet());
123 EXPECT_EQ(tinyXmlDoc.getBillTo()[1].hasCity(), libXmlDoc.getBillTo()[1].hasCity());
124 EXPECT_EQ(tinyXmlDoc.getBillTo()[1].hasState(), libXmlDoc.getBillTo()[1].hasState());
125 EXPECT_EQ(tinyXmlDoc.getBillTo()[1].hasZip(), libXmlDoc.getBillTo()[1].hasZip());
126 EXPECT_EQ(tinyXmlDoc.getBillTo()[1].hasCountry(), libXmlDoc.getBillTo()[1].hasCountry());
127 }
128