/* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include #include "nested_type.h" #include "purchase_simple.h" #include "simple_complex_content.h" #include "predefined_types.h" #include "reference.h" #include "simple_type.h" #include "attr_group_simple.h" #include "group.h" using namespace std; class XmlTest : public ::testing::Test { public: virtual void SetUp() override { } virtual void TearDown() override { } }; TEST_F(XmlTest, Simpletype) { using namespace simple::type; string file_name = "resources/simple_type.xml"; SimpleTypes simple = *readSimpleTypes(file_name.c_str()); for (int i = 0; i < simple.getListInt().size(); ++i) { EXPECT_EQ(simple.getListInt()[i], i + 1); } EXPECT_EQ(*simple.getFirstUnionTest(), "100"); EXPECT_EQ(simple.getYesOrNo()[0], EnumType::YES); EXPECT_EQ(simple.getYesOrNo()[1], EnumType::EMPTY); ofstream out("old_simple_type.xml"); write(out, simple); SimpleTypes simple2 = *readSimpleTypes("old_simple_type.xml"); for (int i = 0; i < simple.getListInt().size(); ++i) { EXPECT_EQ(simple.getListInt()[i], simple2.getListInt()[i]); } EXPECT_EQ(*simple.getFirstUnionTest(), *simple2.getFirstUnionTest()); EXPECT_EQ(simple.getYesOrNo()[0], simple2.getYesOrNo()[0]); EXPECT_EQ(simple.getYesOrNo()[1], simple2.getYesOrNo()[1]); } TEST_F(XmlTest, Predefinedtypes) { using namespace predefined::types; Types type = *read("resources/predefined_types.xml"); StringTypes stringTypes = *type.getFirstStringTypes(); DateTypes dateTypes = *type.getFirstDateTypes(); NumericTypes numericTypes = *type.getFirstNumericTypes(); MiscTypes miscTypes = *type.getFirstMiscTypes(); ListPrimitiveTypes listPrimitiveTypes = *type.getFirstListPrimitiveTypes(); EXPECT_EQ(stringTypes.getString(), "abcd"); EXPECT_EQ(stringTypes.getToken(), "abcd"); EXPECT_EQ(stringTypes.getNormalizedString(), "abcd"); EXPECT_EQ(stringTypes.getLanguage(), "abcd"); EXPECT_EQ(stringTypes.getEntity(), "abcd"); EXPECT_EQ(stringTypes.getEntities()[0], "a"); EXPECT_EQ(stringTypes.getEntities()[1], "b"); EXPECT_EQ(stringTypes.getEntities()[2], "c"); EXPECT_EQ(stringTypes.getEntities()[3], "d"); EXPECT_EQ(stringTypes.getId(), "abcd"); EXPECT_EQ(stringTypes.getName(), "abcd"); EXPECT_EQ(stringTypes.getNcname(), "abcd"); EXPECT_EQ(stringTypes.getNmtoken(), "abcd"); EXPECT_EQ(stringTypes.getNmtokens()[0], "a"); EXPECT_EQ(stringTypes.getNmtokens()[1], "b"); EXPECT_EQ(stringTypes.getNmtokens()[2], "c"); EXPECT_EQ(stringTypes.getNmtokens()[3], "d"); EXPECT_EQ(dateTypes.getDate(), "2018-06-18"); EXPECT_EQ(dateTypes.getDateTime(), "2018-06-18T21:32:52"); EXPECT_EQ(dateTypes.getDuration(), "P3M"); EXPECT_EQ(dateTypes.getGDay(), "---18"); EXPECT_EQ(dateTypes.getGMonth(), "--06"); EXPECT_EQ(dateTypes.getGMonthDay(), "--06-18"); EXPECT_EQ(dateTypes.getGYear(), "2018"); EXPECT_EQ(dateTypes.getGYearMonth(), "2018-06"); EXPECT_EQ(dateTypes.getTime(), "21:32:52"); EXPECT_EQ(numericTypes.getDecimal(), 1234.57); EXPECT_EQ(numericTypes.getInteger(), 1234567890123456789); EXPECT_EQ(numericTypes.get_long(), 9223372036854775807); EXPECT_EQ(numericTypes.get_int(), 2147483647); EXPECT_EQ(numericTypes.get_short(), 32767); EXPECT_EQ((int)numericTypes.getByte(), 127); EXPECT_EQ(numericTypes.getNegativeInteger(), -1234); EXPECT_EQ(numericTypes.getNonNegativeInteger(), 1234); EXPECT_EQ(numericTypes.getPositiveInteger(), 1234); EXPECT_EQ(numericTypes.getNonPositiveInteger(), -1234); EXPECT_EQ(numericTypes.getUnsignedLong(), 1234); EXPECT_EQ(numericTypes.getUnsignedInt(), 1234); EXPECT_EQ(numericTypes.getUnsignedShort(), 1234); EXPECT_EQ((int)(numericTypes.getUnsignedByte()), 255); EXPECT_EQ(miscTypes.get_double(), 1234.57); EXPECT_EQ(miscTypes.getAnyURI(), "https://www.google.com"); EXPECT_EQ(miscTypes.getBase64Binary(), "Z29vZ2xl"); EXPECT_TRUE(miscTypes.getBoolean()); EXPECT_EQ(miscTypes.getHexBinary(), "516a75cb56d7e7"); EXPECT_EQ(miscTypes.getQName(), "abcd"); EXPECT_EQ(miscTypes.getIDREF(), "abcd"); EXPECT_EQ(miscTypes.getIDREFS()[0], "abcd"); EXPECT_EQ(miscTypes.getIDREFS()[1], "abcd"); EXPECT_EQ(miscTypes.getAnyType(), "abcd"); EXPECT_EQ(listPrimitiveTypes.getListInt()[0], -2147483648); EXPECT_EQ(listPrimitiveTypes.getListInt()[1], 2147483647); EXPECT_EQ(listPrimitiveTypes.getListShort()[0], -32768); EXPECT_EQ(listPrimitiveTypes.getListShort()[1], 32767); EXPECT_EQ((int)listPrimitiveTypes.getListByte()[0], -128); EXPECT_EQ((int)listPrimitiveTypes.getListByte()[1], 127); EXPECT_EQ(listPrimitiveTypes.getListDouble()[0], 1234.56); EXPECT_EQ(listPrimitiveTypes.getListDouble()[1], 5678.12); EXPECT_TRUE(listPrimitiveTypes.getListBoolean()[0]); EXPECT_FALSE(listPrimitiveTypes.getListBoolean()[1]); ofstream out("old_predefined_types.xml"); write(out, type); Types type2 = *read("old_predefined_types.xml"); NumericTypes numericTypes2 = *type.getFirstNumericTypes(); ListPrimitiveTypes listPrimitiveTypes2 = *type.getFirstListPrimitiveTypes(); EXPECT_EQ(numericTypes.getDecimal(), numericTypes2.getDecimal()); EXPECT_EQ(numericTypes.getInteger(), numericTypes2.getInteger()); EXPECT_EQ(numericTypes.get_long(), numericTypes2.get_long()); EXPECT_EQ(numericTypes.get_int(), numericTypes2.get_int()); EXPECT_EQ(numericTypes.get_short(), numericTypes2.get_short()); EXPECT_EQ(numericTypes.getByte(), numericTypes2.getByte()); EXPECT_EQ(numericTypes.getNegativeInteger(), numericTypes2.getNegativeInteger()); EXPECT_EQ(numericTypes.getNonNegativeInteger(), numericTypes2.getNonNegativeInteger()); EXPECT_EQ(numericTypes.getPositiveInteger(), numericTypes2.getPositiveInteger()); EXPECT_EQ(numericTypes.getNonPositiveInteger(), numericTypes2.getNonPositiveInteger()); EXPECT_EQ(numericTypes.getUnsignedLong(), numericTypes2.getUnsignedLong()); EXPECT_EQ(numericTypes.getUnsignedInt(), numericTypes2.getUnsignedInt()); EXPECT_EQ(numericTypes.getUnsignedShort(), numericTypes2.getUnsignedShort()); EXPECT_EQ((numericTypes.getUnsignedByte()), numericTypes2.getUnsignedByte()); EXPECT_EQ(listPrimitiveTypes.getListInt()[0], listPrimitiveTypes2.getListInt()[0]); EXPECT_EQ(listPrimitiveTypes.getListInt()[1], listPrimitiveTypes2.getListInt()[1]); EXPECT_EQ(listPrimitiveTypes.getListShort()[0], listPrimitiveTypes2.getListShort()[0]); EXPECT_EQ(listPrimitiveTypes.getListShort()[1], listPrimitiveTypes2.getListShort()[1]); EXPECT_EQ(listPrimitiveTypes.getListByte()[0], listPrimitiveTypes2.getListByte()[0]); EXPECT_EQ(listPrimitiveTypes.getListByte()[1], listPrimitiveTypes2.getListByte()[1]); EXPECT_EQ(listPrimitiveTypes.getListDouble()[0], listPrimitiveTypes2.getListDouble()[0]); EXPECT_EQ(listPrimitiveTypes.getListDouble()[1], listPrimitiveTypes2.getListDouble()[1]); EXPECT_EQ(listPrimitiveTypes.getListBoolean()[0], listPrimitiveTypes2.getListBoolean()[0]); EXPECT_EQ(listPrimitiveTypes.getListBoolean()[1], listPrimitiveTypes2.getListBoolean()[1]); } TEST_F(XmlTest, Nestedtype) { using namespace nested::type; Employee employee = *read("resources/nested_type.xml"); Employee::Address address = *employee.getFirstAddress(); Employee::Address::Extra extra = *address.getFirstExtra(); EXPECT_EQ((int)employee.getId(), 1); EXPECT_EQ(employee.getName(), "Peter"); EXPECT_EQ(address.getCountry(), "US"); EXPECT_EQ(address.getState(), "Mountain View"); EXPECT_EQ(address.getZip(), 3342); EXPECT_EQ(extra.getLine1(), "Donga 303-111"); EXPECT_EQ(extra.getLine2(), "Good Street"); ofstream out("old_nested_type.xml"); write(out, employee); } TEST_F(XmlTest, Purchasesimple) { using namespace purchase::simple; PurchaseOrderType orderType = *read("resources/purchase_simple.xml"); EXPECT_EQ(orderType.getOrderDate(), "1900-01-01"); EXPECT_EQ(orderType.getShipTo()[0].getName(), "name1"); EXPECT_EQ(orderType.getShipTo()[0].getStreet(), "street1"); EXPECT_EQ(orderType.getShipTo()[0].getCity(), "city1"); EXPECT_EQ(orderType.getShipTo()[0].getState(), "state1"); EXPECT_EQ(orderType.getShipTo()[0].getZip(), 1); EXPECT_EQ(orderType.getShipTo()[0].getCountry(), "US"); EXPECT_EQ(orderType.getShipTo()[1].getName(), "name2"); EXPECT_EQ(orderType.getShipTo()[1].getStreet(), "street2"); EXPECT_EQ(orderType.getShipTo()[1].getCity(), "city2"); EXPECT_EQ(orderType.getShipTo()[1].getState(), "state2"); EXPECT_EQ(orderType.getShipTo()[1].getZip(), -7922816251426433759); EXPECT_EQ(orderType.getShipTo()[1].getCountry(), "US"); EXPECT_EQ(orderType.getBillTo()[0].getName(), "billName"); EXPECT_EQ(orderType.getBillTo()[0].getStreet(), "billStreet"); EXPECT_EQ(orderType.getBillTo()[0].getCity(), "billCity"); EXPECT_EQ(orderType.getBillTo()[0].getState(), "billState"); EXPECT_EQ(orderType.getBillTo()[0].getZip(), 1); EXPECT_EQ(orderType.getBillTo()[0].getCountry(), "US"); ofstream out("old_purchase_simple.xml"); write(out, orderType); PurchaseOrderType orderType2 = *read("old_purchase_simple.xml"); EXPECT_EQ(orderType.getOrderDate(), orderType2.getOrderDate()); EXPECT_EQ(orderType.getShipTo()[0].getName(), orderType2.getShipTo()[0].getName()); EXPECT_EQ(orderType.getShipTo()[0].getStreet(), orderType2.getShipTo()[0].getStreet()); EXPECT_EQ(orderType.getShipTo()[0].getCity(), orderType2.getShipTo()[0].getCity()); EXPECT_EQ(orderType.getShipTo()[0].getState(), orderType2.getShipTo()[0].getState()); EXPECT_EQ(orderType.getShipTo()[0].getZip(), orderType2.getShipTo()[0].getZip()); EXPECT_EQ(orderType.getShipTo()[0].getCountry(), orderType2.getShipTo()[0].getCountry()); EXPECT_EQ(orderType.getShipTo()[1].getName(), orderType2.getShipTo()[1].getName()); EXPECT_EQ(orderType.getShipTo()[1].getStreet(), orderType2.getShipTo()[1].getStreet()); EXPECT_EQ(orderType.getShipTo()[1].getCity(), orderType2.getShipTo()[1].getCity()); EXPECT_EQ(orderType.getShipTo()[1].getState(), orderType2.getShipTo()[1].getState()); EXPECT_EQ(orderType.getShipTo()[1].getZip(), orderType2.getShipTo()[1].getZip()); EXPECT_EQ(orderType.getShipTo()[1].getCountry(), orderType2.getShipTo()[1].getCountry()); EXPECT_EQ(orderType.getBillTo()[0].getName(), orderType2.getBillTo()[0].getName()); EXPECT_EQ(orderType.getBillTo()[0].getStreet(), orderType2.getBillTo()[0].getStreet()); EXPECT_EQ(orderType.getBillTo()[0].getCity(), orderType2.getBillTo()[0].getCity()); EXPECT_EQ(orderType.getBillTo()[0].getState(), orderType2.getBillTo()[0].getState()); EXPECT_EQ(orderType.getBillTo()[0].getZip(), orderType2.getBillTo()[0].getZip()); EXPECT_EQ(orderType.getBillTo()[0].getCountry(), orderType2.getBillTo()[0].getCountry()); } TEST_F(XmlTest, Reference) { using namespace reference; Class _class = *read("resources/reference.xml"); EXPECT_EQ(_class.getStudent()[0], "Sam"); EXPECT_EQ(_class.getStudent()[1], "Paul"); EXPECT_EQ(_class.getStudent()[2], "Peter"); ofstream out("old_reference.xml"); write(out, _class); } TEST_F(XmlTest, Simplecomplexcontent) { using namespace simple::complex::content; Person person = *readPerson("resources/simple_complex_content.xml"); USAddressP uSAddressP = *person.getFirstUSAddressP(); KRAddress kRAddress = *person.getFirstKRAddress(); SubAddress subAddress = *person.getFirstSubAddress(); EXPECT_EQ(person.getName(), "Petr"); EXPECT_EQ(uSAddressP.getName(), "404"); EXPECT_EQ(uSAddressP.getStreet(), "street fighter"); EXPECT_EQ(uSAddressP.getCity(), "New York"); EXPECT_EQ(uSAddressP.getState(), "Washington"); EXPECT_EQ(uSAddressP.getZipcode(), 323232318329852); EXPECT_EQ(kRAddress.getName(), "Donga Studio"); EXPECT_EQ(kRAddress.getStreet(), "Nokdu Street"); EXPECT_EQ(kRAddress.getCity(), "Seoul"); EXPECT_EQ(subAddress.getChoice1_optional(), "Temp"); ofstream out("old_simple_complex_content.xml"); write(out, person); } TEST_F(XmlTest, Attrgroupsimple) { using namespace attr::group::simple; Student student = *read("resources/attr_group_simple.xml"); EXPECT_EQ(student.getName(), "Jun"); EXPECT_EQ(student.getCity(), "Mountain View"); EXPECT_EQ(student.getState(), "CA"); EXPECT_EQ(student.getRoad(), "Street 101"); ofstream out("old_attr_group_simple.xml"); write(out, student); } TEST_F(XmlTest, Group) { using namespace group; Student student = *read("resources/group.xml"); EXPECT_EQ(student.getCity(), "Mountain View"); EXPECT_EQ(student.getState(), "CA"); EXPECT_EQ(student.getRoad(), "Street 101"); ofstream out("old_group.xml"); write(out, student); } int main(int argc, char **argv) { ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }