14d6c458bSopenharmony_ci/* 24d6c458bSopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 34d6c458bSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 44d6c458bSopenharmony_ci * you may not use this file except in compliance with the License. 54d6c458bSopenharmony_ci * You may obtain a copy of the License at 64d6c458bSopenharmony_ci * 74d6c458bSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 84d6c458bSopenharmony_ci * 94d6c458bSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 104d6c458bSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 114d6c458bSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 124d6c458bSopenharmony_ci * See the License for the specific language governing permissions and 134d6c458bSopenharmony_ci * limitations under the License. 144d6c458bSopenharmony_ci */ 154d6c458bSopenharmony_ci 164d6c458bSopenharmony_ci#include "test_convertxml.h" 174d6c458bSopenharmony_ci#include "test.h" 184d6c458bSopenharmony_ci 194d6c458bSopenharmony_ci#include "napi/native_api.h" 204d6c458bSopenharmony_ci#include "napi/native_node_api.h" 214d6c458bSopenharmony_ci 224d6c458bSopenharmony_ci#include "js_convertxml.h" 234d6c458bSopenharmony_ci#include "js_xml.h" 244d6c458bSopenharmony_ci#include "native_module_convertxml.h" 254d6c458bSopenharmony_ci#include "tools/log.h" 264d6c458bSopenharmony_ci 274d6c458bSopenharmony_ciusing namespace OHOS::Xml; 284d6c458bSopenharmony_ci 294d6c458bSopenharmony_cinapi_value setProperty(napi_env env, napi_value obj, std::vector<std::string> proVec) 304d6c458bSopenharmony_ci{ 314d6c458bSopenharmony_ci const size_t boolNum = 8; // 8 : the counts of the bool value 324d6c458bSopenharmony_ci napi_value val = nullptr; 334d6c458bSopenharmony_ci for (size_t i = 0; i < proVec.size();) { 344d6c458bSopenharmony_ci if (i < boolNum) { 354d6c458bSopenharmony_ci napi_get_boolean(env, false, &val); 364d6c458bSopenharmony_ci napi_set_named_property(env, obj, proVec[i].c_str(), val); 374d6c458bSopenharmony_ci i++; 384d6c458bSopenharmony_ci } else { 394d6c458bSopenharmony_ci napi_create_string_utf8(env, proVec[i + 1].c_str(), proVec[i + 1].size(), &val); 404d6c458bSopenharmony_ci napi_set_named_property(env, obj, proVec[i].c_str(), val); 414d6c458bSopenharmony_ci i += 2; // 2 : the length of the value and property 424d6c458bSopenharmony_ci } 434d6c458bSopenharmony_ci } 444d6c458bSopenharmony_ci return obj; 454d6c458bSopenharmony_ci} 464d6c458bSopenharmony_ci 474d6c458bSopenharmony_cinapi_value setPropertyForTrim(napi_env env, napi_value obj, std::vector<std::string> proVec) 484d6c458bSopenharmony_ci{ 494d6c458bSopenharmony_ci const size_t boolNum = 8; // 8 : the counts of the bool value 504d6c458bSopenharmony_ci const size_t firstNum = 0; 514d6c458bSopenharmony_ci const size_t secondNum = 1; 524d6c458bSopenharmony_ci const size_t thirdNum = 2; 534d6c458bSopenharmony_ci napi_value val = nullptr; 544d6c458bSopenharmony_ci for (size_t i = 0; i < proVec.size();) { 554d6c458bSopenharmony_ci if (i == firstNum) { 564d6c458bSopenharmony_ci napi_get_boolean(env, true, &val); 574d6c458bSopenharmony_ci napi_set_named_property(env, obj, proVec[i].c_str(), val); 584d6c458bSopenharmony_ci i++; 594d6c458bSopenharmony_ci continue; 604d6c458bSopenharmony_ci } 614d6c458bSopenharmony_ci if (i == secondNum) { 624d6c458bSopenharmony_ci const char* str = "abc"; 634d6c458bSopenharmony_ci napi_create_string_utf8(env, str, NAPI_AUTO_LENGTH, &val); 644d6c458bSopenharmony_ci napi_set_named_property(env, obj, proVec[i].c_str(), val); 654d6c458bSopenharmony_ci i++; 664d6c458bSopenharmony_ci continue; 674d6c458bSopenharmony_ci } 684d6c458bSopenharmony_ci if (i == thirdNum) { 694d6c458bSopenharmony_ci int32_t number = 12345; 704d6c458bSopenharmony_ci napi_create_int32(env, number, &val); 714d6c458bSopenharmony_ci napi_set_named_property(env, obj, proVec[i].c_str(), val); 724d6c458bSopenharmony_ci i++; 734d6c458bSopenharmony_ci continue; 744d6c458bSopenharmony_ci } 754d6c458bSopenharmony_ci if (i < boolNum) { 764d6c458bSopenharmony_ci napi_get_boolean(env, false, &val); 774d6c458bSopenharmony_ci napi_set_named_property(env, obj, proVec[i].c_str(), val); 784d6c458bSopenharmony_ci i++; 794d6c458bSopenharmony_ci } else { 804d6c458bSopenharmony_ci napi_create_string_utf8(env, proVec[i + 1].c_str(), proVec[i + 1].size(), &val); 814d6c458bSopenharmony_ci napi_set_named_property(env, obj, proVec[i].c_str(), val); 824d6c458bSopenharmony_ci i += 2; // 2 : the length of the value and property 834d6c458bSopenharmony_ci } 844d6c458bSopenharmony_ci } 854d6c458bSopenharmony_ci return obj; 864d6c458bSopenharmony_ci} 874d6c458bSopenharmony_ci 884d6c458bSopenharmony_ci/* @tc.name: ConvertXmlTest001 894d6c458bSopenharmony_ci * @tc.desc: Convert the xml object containing only declaration items to a js object. 904d6c458bSopenharmony_ci * @tc.type: FUNC 914d6c458bSopenharmony_ci */ 924d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConvertXmlTest001, testing::ext::TestSize.Level0) 934d6c458bSopenharmony_ci{ 944d6c458bSopenharmony_ci size_t size = 1024; // 1024 : the size is 1024 byte 954d6c458bSopenharmony_ci void* pBuffer = nullptr; 964d6c458bSopenharmony_ci napi_value arrayBuffer = nullptr; 974d6c458bSopenharmony_ci napi_env env = (napi_env)engine_; 984d6c458bSopenharmony_ci napi_create_arraybuffer(env, size, &pBuffer, &arrayBuffer); 994d6c458bSopenharmony_ci OHOS::xml::XmlSerializer xmlSerializer(reinterpret_cast<char*>(pBuffer), size, "utf-8"); 1004d6c458bSopenharmony_ci xmlSerializer.SetDeclaration(); 1014d6c458bSopenharmony_ci 1024d6c458bSopenharmony_ci Options op; 1034d6c458bSopenharmony_ci ConvertXml *convertXml = new ConvertXml(env); 1044d6c458bSopenharmony_ci std::string xmlStr(reinterpret_cast<char*>(pBuffer)); 1054d6c458bSopenharmony_ci napi_value jsObj = convertXml->Convert(env, xmlStr); 1064d6c458bSopenharmony_ci 1074d6c458bSopenharmony_ci // Do not set start tag '<' 1084d6c458bSopenharmony_ci napi_value declarationObj = nullptr; 1094d6c458bSopenharmony_ci napi_value declarationProp = nullptr; 1104d6c458bSopenharmony_ci napi_value versionVal = nullptr; 1114d6c458bSopenharmony_ci napi_value encodingVal = nullptr; 1124d6c458bSopenharmony_ci napi_get_named_property(env, jsObj, op.declaration.c_str(), &declarationObj); 1134d6c458bSopenharmony_ci napi_get_named_property(env, declarationObj, op.attributes.c_str(), &declarationProp); 1144d6c458bSopenharmony_ci napi_get_named_property(env, declarationProp, "version", &versionVal); 1154d6c458bSopenharmony_ci napi_get_named_property(env, declarationProp, "encoding", &encodingVal); 1164d6c458bSopenharmony_ci 1174d6c458bSopenharmony_ci std::string verisonStr; 1184d6c458bSopenharmony_ci std::string encodingStr; 1194d6c458bSopenharmony_ci convertXml->DealNapiStrValue(env, versionVal, verisonStr); 1204d6c458bSopenharmony_ci convertXml->DealNapiStrValue(env, encodingVal, encodingStr); 1214d6c458bSopenharmony_ci EXPECT_STREQ(verisonStr.c_str(), "1.0"); 1224d6c458bSopenharmony_ci EXPECT_STREQ(encodingStr.c_str(), "utf-8"); 1234d6c458bSopenharmony_ci delete convertXml; 1244d6c458bSopenharmony_ci} 1254d6c458bSopenharmony_ci 1264d6c458bSopenharmony_ci/* @tc.name: ConvertXmlTest002 1274d6c458bSopenharmony_ci * @tc.desc: Convert the xml object containing an empty element to a js object. 1284d6c458bSopenharmony_ci * @tc.type: FUNC 1294d6c458bSopenharmony_ci */ 1304d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConvertXmlTest002, testing::ext::TestSize.Level0) 1314d6c458bSopenharmony_ci{ 1324d6c458bSopenharmony_ci size_t size = 1024; // 1024 : the size is 1024 byte 1334d6c458bSopenharmony_ci void* pBuffer = nullptr; 1344d6c458bSopenharmony_ci napi_value arrayBuffer = nullptr; 1354d6c458bSopenharmony_ci napi_env env = (napi_env)engine_; 1364d6c458bSopenharmony_ci napi_create_arraybuffer(env, size, &pBuffer, &arrayBuffer); 1374d6c458bSopenharmony_ci OHOS::xml::XmlSerializer xmlSerializer(reinterpret_cast<char*>(pBuffer), size, "utf-8"); 1384d6c458bSopenharmony_ci xmlSerializer.StartElement("note1"); 1394d6c458bSopenharmony_ci xmlSerializer.EndElement(); 1404d6c458bSopenharmony_ci 1414d6c458bSopenharmony_ci Options op; 1424d6c458bSopenharmony_ci ConvertXml *convertXml = new ConvertXml(env); 1434d6c458bSopenharmony_ci std::string xmlStr(reinterpret_cast<char*>(pBuffer)); 1444d6c458bSopenharmony_ci napi_value jsObj = convertXml->Convert(env, xmlStr); 1454d6c458bSopenharmony_ci 1464d6c458bSopenharmony_ci napi_value element = nullptr; 1474d6c458bSopenharmony_ci napi_value elements = nullptr; 1484d6c458bSopenharmony_ci napi_value nameVal = nullptr; 1494d6c458bSopenharmony_ci napi_value typeVal = nullptr; 1504d6c458bSopenharmony_ci napi_get_named_property(env, jsObj, op.elements.c_str(), &elements); 1514d6c458bSopenharmony_ci napi_get_element(env, elements, 0, &element); 1524d6c458bSopenharmony_ci napi_get_named_property(env, element, op.name.c_str(), &nameVal); 1534d6c458bSopenharmony_ci napi_get_named_property(env, element, op.type.c_str(), &typeVal); 1544d6c458bSopenharmony_ci 1554d6c458bSopenharmony_ci std::string nameStr; 1564d6c458bSopenharmony_ci std::string typeStr; 1574d6c458bSopenharmony_ci convertXml->DealNapiStrValue(env, nameVal, nameStr); 1584d6c458bSopenharmony_ci convertXml->DealNapiStrValue(env, typeVal, typeStr); 1594d6c458bSopenharmony_ci EXPECT_STREQ(nameStr.c_str(), "note1"); 1604d6c458bSopenharmony_ci EXPECT_STREQ(typeStr.c_str(), "element"); 1614d6c458bSopenharmony_ci} 1624d6c458bSopenharmony_ci 1634d6c458bSopenharmony_ci/* @tc.name: ConvertXmlTest003 1644d6c458bSopenharmony_ci * @tc.desc: Convert the xml object containing attributes to a js object. 1654d6c458bSopenharmony_ci * @tc.type: FUNC 1664d6c458bSopenharmony_ci */ 1674d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConvertXmlTest003, testing::ext::TestSize.Level0) 1684d6c458bSopenharmony_ci{ 1694d6c458bSopenharmony_ci size_t size = 1024; // 1024 : the size is 1024 byte 1704d6c458bSopenharmony_ci void* pBuffer = nullptr; 1714d6c458bSopenharmony_ci napi_value arrayBuffer = nullptr; 1724d6c458bSopenharmony_ci napi_env env = (napi_env)engine_; 1734d6c458bSopenharmony_ci napi_create_arraybuffer(env, size, &pBuffer, &arrayBuffer); 1744d6c458bSopenharmony_ci OHOS::xml::XmlSerializer xmlSerializer(reinterpret_cast<char*>(pBuffer), size, "utf-8"); 1754d6c458bSopenharmony_ci xmlSerializer.StartElement("note1"); 1764d6c458bSopenharmony_ci xmlSerializer.SetAttributes("colour", "red"); 1774d6c458bSopenharmony_ci xmlSerializer.SetAttributes("shape", "circle"); 1784d6c458bSopenharmony_ci xmlSerializer.EndElement(); 1794d6c458bSopenharmony_ci 1804d6c458bSopenharmony_ci Options op; 1814d6c458bSopenharmony_ci ConvertXml *convertXml = new ConvertXml(env); 1824d6c458bSopenharmony_ci std::string xmlStr(reinterpret_cast<char*>(pBuffer)); 1834d6c458bSopenharmony_ci napi_value jsObj = convertXml->Convert(env, xmlStr); 1844d6c458bSopenharmony_ci 1854d6c458bSopenharmony_ci napi_value elements = nullptr; 1864d6c458bSopenharmony_ci napi_value element = nullptr; 1874d6c458bSopenharmony_ci napi_value attributes = nullptr; 1884d6c458bSopenharmony_ci napi_value colour = nullptr; 1894d6c458bSopenharmony_ci napi_value shape = nullptr; 1904d6c458bSopenharmony_ci napi_get_named_property(env, jsObj, op.elements.c_str(), &elements); 1914d6c458bSopenharmony_ci napi_get_element(env, elements, 0, &element); 1924d6c458bSopenharmony_ci napi_get_named_property(env, element, op.attributes.c_str(), &attributes); 1934d6c458bSopenharmony_ci napi_get_named_property(env, attributes, "colour", &colour); 1944d6c458bSopenharmony_ci napi_get_named_property(env, attributes, "shape", &shape); 1954d6c458bSopenharmony_ci 1964d6c458bSopenharmony_ci std::string colourStr; 1974d6c458bSopenharmony_ci std::string shapeStr; 1984d6c458bSopenharmony_ci convertXml->DealNapiStrValue(env, colour, colourStr); 1994d6c458bSopenharmony_ci convertXml->DealNapiStrValue(env, shape, shapeStr); 2004d6c458bSopenharmony_ci EXPECT_STREQ(colourStr.c_str(), "red"); 2014d6c458bSopenharmony_ci EXPECT_STREQ(shapeStr.c_str(), "circle"); 2024d6c458bSopenharmony_ci} 2034d6c458bSopenharmony_ci 2044d6c458bSopenharmony_ci/* @tc.name: ConvertXmlTest004 2054d6c458bSopenharmony_ci * @tc.desc: Convert the xml object containing comment to a js object. 2064d6c458bSopenharmony_ci * @tc.type: FUNC 2074d6c458bSopenharmony_ci */ 2084d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConvertXmlTest004, testing::ext::TestSize.Level0) 2094d6c458bSopenharmony_ci{ 2104d6c458bSopenharmony_ci size_t size = 1024; // 1024 : the size is 1024 byte 2114d6c458bSopenharmony_ci void* pBuffer = nullptr; 2124d6c458bSopenharmony_ci napi_value arrayBuffer = nullptr; 2134d6c458bSopenharmony_ci napi_env env = (napi_env)engine_; 2144d6c458bSopenharmony_ci napi_create_arraybuffer(env, size, &pBuffer, &arrayBuffer); 2154d6c458bSopenharmony_ci OHOS::xml::XmlSerializer xmlSerializer(reinterpret_cast<char*>(pBuffer), size, "utf-8"); 2164d6c458bSopenharmony_ci xmlSerializer.SetComment("This is a comment"); 2174d6c458bSopenharmony_ci xmlSerializer.StartElement("note1"); 2184d6c458bSopenharmony_ci xmlSerializer.EndElement(); 2194d6c458bSopenharmony_ci 2204d6c458bSopenharmony_ci Options op; 2214d6c458bSopenharmony_ci ConvertXml *convertXml = new ConvertXml(env); 2224d6c458bSopenharmony_ci std::string xmlStr(reinterpret_cast<char*>(pBuffer)); 2234d6c458bSopenharmony_ci napi_value jsObj = convertXml->Convert(env, xmlStr); 2244d6c458bSopenharmony_ci 2254d6c458bSopenharmony_ci napi_value elements = nullptr; 2264d6c458bSopenharmony_ci napi_value element = nullptr; 2274d6c458bSopenharmony_ci napi_value commentType = nullptr; 2284d6c458bSopenharmony_ci napi_value commentText = nullptr; 2294d6c458bSopenharmony_ci EXPECT_EQ(napi_get_named_property(env, jsObj, op.elements.c_str(), &elements), napi_status::napi_ok); 2304d6c458bSopenharmony_ci EXPECT_EQ(napi_get_element(env, elements, 0, &element), napi_status::napi_ok); 2314d6c458bSopenharmony_ci EXPECT_EQ(napi_get_named_property(env, element, op.type.c_str(), &commentType), napi_status::napi_ok); 2324d6c458bSopenharmony_ci EXPECT_EQ(napi_get_named_property(env, element, op.comment.c_str(), &commentText), napi_status::napi_ok); 2334d6c458bSopenharmony_ci 2344d6c458bSopenharmony_ci std::string commentTypeStr; 2354d6c458bSopenharmony_ci std::string commentTextStr; 2364d6c458bSopenharmony_ci convertXml->DealNapiStrValue(env, commentType, commentTypeStr); 2374d6c458bSopenharmony_ci convertXml->DealNapiStrValue(env, commentText, commentTextStr); 2384d6c458bSopenharmony_ci EXPECT_STREQ(commentTypeStr.c_str(), "comment"); 2394d6c458bSopenharmony_ci EXPECT_STREQ(commentTextStr.c_str(), "This is a comment"); 2404d6c458bSopenharmony_ci} 2414d6c458bSopenharmony_ci 2424d6c458bSopenharmony_ci/* @tc.name: ConvertXmlTest005 2434d6c458bSopenharmony_ci * @tc.desc: Convert the xml object containing cdata to a js object. 2444d6c458bSopenharmony_ci * @tc.type: FUNC 2454d6c458bSopenharmony_ci */ 2464d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConvertXmlTest005, testing::ext::TestSize.Level0) 2474d6c458bSopenharmony_ci{ 2484d6c458bSopenharmony_ci size_t size = 1024; // 1024 : the size is 1024 byte 2494d6c458bSopenharmony_ci void* pBuffer = nullptr; 2504d6c458bSopenharmony_ci napi_value arrayBuffer = nullptr; 2514d6c458bSopenharmony_ci napi_env env = (napi_env)engine_; 2524d6c458bSopenharmony_ci napi_create_arraybuffer(env, size, &pBuffer, &arrayBuffer); 2534d6c458bSopenharmony_ci OHOS::xml::XmlSerializer xmlSerializer(reinterpret_cast<char*>(pBuffer), size, "utf-8"); 2544d6c458bSopenharmony_ci xmlSerializer.SetCData("function foo() {}"); 2554d6c458bSopenharmony_ci xmlSerializer.StartElement("note1"); 2564d6c458bSopenharmony_ci xmlSerializer.EndElement(); 2574d6c458bSopenharmony_ci 2584d6c458bSopenharmony_ci Options op; 2594d6c458bSopenharmony_ci ConvertXml *convertXml = new ConvertXml(env); 2604d6c458bSopenharmony_ci std::string xmlStr(reinterpret_cast<char*>(pBuffer)); 2614d6c458bSopenharmony_ci napi_value jsObj = convertXml->Convert(env, xmlStr); 2624d6c458bSopenharmony_ci 2634d6c458bSopenharmony_ci napi_value elements = nullptr; 2644d6c458bSopenharmony_ci napi_value element = nullptr; 2654d6c458bSopenharmony_ci napi_value cdataType = nullptr; 2664d6c458bSopenharmony_ci napi_value cdataText = nullptr; 2674d6c458bSopenharmony_ci EXPECT_EQ(napi_get_named_property(env, jsObj, op.elements.c_str(), &elements), napi_status::napi_ok); 2684d6c458bSopenharmony_ci EXPECT_EQ(napi_get_element(env, elements, 0, &element), napi_status::napi_ok); 2694d6c458bSopenharmony_ci EXPECT_EQ(napi_get_named_property(env, element, op.type.c_str(), &cdataType), napi_status::napi_ok); 2704d6c458bSopenharmony_ci EXPECT_EQ(napi_get_named_property(env, element, op.cdata.c_str(), &cdataText), napi_status::napi_ok); 2714d6c458bSopenharmony_ci 2724d6c458bSopenharmony_ci std::string cdataTypeStr; 2734d6c458bSopenharmony_ci std::string cdataTextStr; 2744d6c458bSopenharmony_ci convertXml->DealNapiStrValue(env, cdataType, cdataTypeStr); 2754d6c458bSopenharmony_ci convertXml->DealNapiStrValue(env, cdataText, cdataTextStr); 2764d6c458bSopenharmony_ci EXPECT_STREQ(cdataTypeStr.c_str(), "cdata"); 2774d6c458bSopenharmony_ci EXPECT_STREQ(cdataTextStr.c_str(), "function foo() {}"); 2784d6c458bSopenharmony_ci} 2794d6c458bSopenharmony_ci 2804d6c458bSopenharmony_ci/* @tc.name: ConvertXmlTest006 2814d6c458bSopenharmony_ci * @tc.desc: Convert the xml object containing doctype to a js object. 2824d6c458bSopenharmony_ci * @tc.type: FUNC 2834d6c458bSopenharmony_ci */ 2844d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConvertXmlTest006, testing::ext::TestSize.Level0) 2854d6c458bSopenharmony_ci{ 2864d6c458bSopenharmony_ci size_t size = 1024; // 1024 : the size is 1024 byte 2874d6c458bSopenharmony_ci void* pBuffer = nullptr; 2884d6c458bSopenharmony_ci napi_value arrayBuffer = nullptr; 2894d6c458bSopenharmony_ci napi_env env = (napi_env)engine_; 2904d6c458bSopenharmony_ci napi_create_arraybuffer(env, size, &pBuffer, &arrayBuffer); 2914d6c458bSopenharmony_ci OHOS::xml::XmlSerializer xmlSerializer(reinterpret_cast<char*>(pBuffer), size, "utf-8"); 2924d6c458bSopenharmony_ci xmlSerializer.SetDocType("root SYSTEM \"http://www.test.org/test.dtd\""); 2934d6c458bSopenharmony_ci xmlSerializer.StartElement("note1"); 2944d6c458bSopenharmony_ci xmlSerializer.EndElement(); 2954d6c458bSopenharmony_ci 2964d6c458bSopenharmony_ci Options op; 2974d6c458bSopenharmony_ci ConvertXml *convertXml = new ConvertXml(env); 2984d6c458bSopenharmony_ci std::string xmlStr(reinterpret_cast<char*>(pBuffer)); 2994d6c458bSopenharmony_ci napi_value jsObj = convertXml->Convert(env, xmlStr); 3004d6c458bSopenharmony_ci 3014d6c458bSopenharmony_ci napi_value elements = nullptr; 3024d6c458bSopenharmony_ci napi_value element = nullptr; 3034d6c458bSopenharmony_ci napi_value docType = nullptr; 3044d6c458bSopenharmony_ci napi_value docText = nullptr; 3054d6c458bSopenharmony_ci EXPECT_EQ(napi_get_named_property(env, jsObj, op.elements.c_str(), &elements), napi_status::napi_ok); 3064d6c458bSopenharmony_ci EXPECT_EQ(napi_get_element(env, elements, 0, &element), napi_status::napi_ok); 3074d6c458bSopenharmony_ci EXPECT_EQ(napi_get_named_property(env, element, op.type.c_str(), &docType), napi_status::napi_ok); 3084d6c458bSopenharmony_ci EXPECT_EQ(napi_get_named_property(env, element, op.doctype.c_str(), &docText), napi_status::napi_ok); 3094d6c458bSopenharmony_ci 3104d6c458bSopenharmony_ci std::string docTypeStr; 3114d6c458bSopenharmony_ci std::string docStr; 3124d6c458bSopenharmony_ci convertXml->DealNapiStrValue(env, docType, docTypeStr); 3134d6c458bSopenharmony_ci convertXml->DealNapiStrValue(env, docText, docStr); 3144d6c458bSopenharmony_ci EXPECT_STREQ(docTypeStr.c_str(), "doctype"); 3154d6c458bSopenharmony_ci EXPECT_STREQ(docStr.c_str(), "root"); 3164d6c458bSopenharmony_ci} 3174d6c458bSopenharmony_ci 3184d6c458bSopenharmony_ci/* @tc.name: ConstructorTest001 3194d6c458bSopenharmony_ci * @tc.desc: Convert the xml object containing doctype to a js object. 3204d6c458bSopenharmony_ci * @tc.type: FUNC 3214d6c458bSopenharmony_ci */ 3224d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest001, testing::ext::TestSize.Level0) 3234d6c458bSopenharmony_ci{ 3244d6c458bSopenharmony_ci napi_env env = (napi_env)engine_; 3254d6c458bSopenharmony_ci OHOS::Xml::ConvertXml convertXml = OHOS::Xml::ConvertXml(env); 3264d6c458bSopenharmony_ci std::string str1 = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"; 3274d6c458bSopenharmony_ci std::string str2 = "<note importance=\"high\" logged=\"true\"><todo>Play</todo></note>"; 3284d6c458bSopenharmony_ci std::string strXml = str1 + str2; 3294d6c458bSopenharmony_ci napi_valuetype valuetype = napi_undefined; 3304d6c458bSopenharmony_ci 3314d6c458bSopenharmony_ci napi_typeof(env, convertXml.Convert(env, strXml), &valuetype); 3324d6c458bSopenharmony_ci bool isObj = valuetype == napi_valuetype::napi_object; 3334d6c458bSopenharmony_ci ASSERT_TRUE(isObj); 3344d6c458bSopenharmony_ci} 3354d6c458bSopenharmony_ci 3364d6c458bSopenharmony_ci/* @tc.name: ConstructorTest002 3374d6c458bSopenharmony_ci * @tc.desc: Convert the xml object containing doctype to a js object. 3384d6c458bSopenharmony_ci * @tc.type: FUNC 3394d6c458bSopenharmony_ci */ 3404d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest002, testing::ext::TestSize.Level0) 3414d6c458bSopenharmony_ci{ 3424d6c458bSopenharmony_ci napi_env env = (napi_env)engine_; 3434d6c458bSopenharmony_ci std::string str1 = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"; 3444d6c458bSopenharmony_ci std::string str2 = "<note importance=\"high\" logged=\"true\"><todo>Play</todo></note>"; 3454d6c458bSopenharmony_ci std::string strXml = str1 + str2; 3464d6c458bSopenharmony_ci napi_value object = nullptr; 3474d6c458bSopenharmony_ci const char* utf8Name = "_declaration"; 3484d6c458bSopenharmony_ci napi_create_object(env, &object); 3494d6c458bSopenharmony_ci bool isHas = false; 3504d6c458bSopenharmony_ci OHOS::Xml::ConvertXml convertXml = OHOS::Xml::ConvertXml(env); 3514d6c458bSopenharmony_ci 3524d6c458bSopenharmony_ci object = convertXml.Convert(env, strXml); 3534d6c458bSopenharmony_ci napi_has_named_property(env, object, utf8Name, &isHas); 3544d6c458bSopenharmony_ci ASSERT_TRUE(isHas); 3554d6c458bSopenharmony_ci} 3564d6c458bSopenharmony_ci 3574d6c458bSopenharmony_ci/* @tc.name: ConstructorTest003 3584d6c458bSopenharmony_ci * @tc.desc: Convert the xml object containing doctype to a js object. 3594d6c458bSopenharmony_ci * @tc.type: FUNC 3604d6c458bSopenharmony_ci */ 3614d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest003, testing::ext::TestSize.Level0) 3624d6c458bSopenharmony_ci{ 3634d6c458bSopenharmony_ci napi_env env = (napi_env)engine_; 3644d6c458bSopenharmony_ci std::string str1 = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"; 3654d6c458bSopenharmony_ci std::string str2 = "<note importance=\"high\" logged=\"true\"><todo>Play</todo></note>"; 3664d6c458bSopenharmony_ci std::string strXml = str1 + str2; 3674d6c458bSopenharmony_ci napi_value object = nullptr; 3684d6c458bSopenharmony_ci const char* utf8Name = "_declaration"; 3694d6c458bSopenharmony_ci napi_create_object(env, &object); 3704d6c458bSopenharmony_ci bool isHas = false; 3714d6c458bSopenharmony_ci OHOS::Xml::ConvertXml convertXml = OHOS::Xml::ConvertXml(env); 3724d6c458bSopenharmony_ci 3734d6c458bSopenharmony_ci object = convertXml.Convert(env, strXml); 3744d6c458bSopenharmony_ci napi_has_named_property(env, object, utf8Name, &isHas); 3754d6c458bSopenharmony_ci ASSERT_TRUE(isHas); 3764d6c458bSopenharmony_ci} 3774d6c458bSopenharmony_ci 3784d6c458bSopenharmony_ci/* @tc.name: ConvertTest001 3794d6c458bSopenharmony_ci * @tc.desc: Convert the xml object containing doctype to a js object. 3804d6c458bSopenharmony_ci * @tc.type: FUNC 3814d6c458bSopenharmony_ci */ 3824d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConvertTest001, testing::ext::TestSize.Level0) 3834d6c458bSopenharmony_ci{ 3844d6c458bSopenharmony_ci napi_env env = (napi_env)engine_; 3854d6c458bSopenharmony_ci OHOS::Xml::ConvertXml convertXml = OHOS::Xml::ConvertXml(env); 3864d6c458bSopenharmony_ci std::string str1 = "<?xml version=\"1.0\" encoding=\"utf-8\"?><note importance=\"high\" logged=\"true\"> "; 3874d6c458bSopenharmony_ci std::string str2 = "<title>Happy</title> <todo>Work</todo> <todo>Play</todo></note>"; 3884d6c458bSopenharmony_ci std::string strXml = str1 + str2; 3894d6c458bSopenharmony_ci napi_valuetype valuetype = napi_undefined; 3904d6c458bSopenharmony_ci 3914d6c458bSopenharmony_ci napi_typeof(env, convertXml.Convert(env, strXml), &valuetype); 3924d6c458bSopenharmony_ci bool isObj = valuetype == napi_valuetype::napi_object; 3934d6c458bSopenharmony_ci ASSERT_TRUE(isObj); 3944d6c458bSopenharmony_ci} 3954d6c458bSopenharmony_ci 3964d6c458bSopenharmony_ci/* @tc.name: ConvertTest002 3974d6c458bSopenharmony_ci * @tc.desc: Convert the xml object containing doctype to a js object. 3984d6c458bSopenharmony_ci * @tc.type: FUNC 3994d6c458bSopenharmony_ci */ 4004d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConvertTest002, testing::ext::TestSize.Level0) 4014d6c458bSopenharmony_ci{ 4024d6c458bSopenharmony_ci napi_env env = (napi_env)engine_; 4034d6c458bSopenharmony_ci std::string str1 = "<?xml version=\"1.0\" encoding=\"utf-8\"?><note importance=\"high\" logged=\"true\"> "; 4044d6c458bSopenharmony_ci std::string str2 = "<title>Happy</title> <todo>Work</todo> <todo>Play</todo></note>"; 4054d6c458bSopenharmony_ci std::string strXml = str1 + str2; 4064d6c458bSopenharmony_ci napi_value object = nullptr; 4074d6c458bSopenharmony_ci const char* utf8Name = "_declaration"; 4084d6c458bSopenharmony_ci napi_create_object(env, &object); 4094d6c458bSopenharmony_ci bool isHas = false; 4104d6c458bSopenharmony_ci OHOS::Xml::ConvertXml convertXml = OHOS::Xml::ConvertXml(env); 4114d6c458bSopenharmony_ci 4124d6c458bSopenharmony_ci object = convertXml.Convert(env, strXml); 4134d6c458bSopenharmony_ci napi_has_named_property(env, object, utf8Name, &isHas); 4144d6c458bSopenharmony_ci ASSERT_TRUE(isHas); 4154d6c458bSopenharmony_ci} 4164d6c458bSopenharmony_ci 4174d6c458bSopenharmony_ci/* @tc.name: ConvertTest003 4184d6c458bSopenharmony_ci * @tc.desc: Convert the xml object containing doctype to a js object. 4194d6c458bSopenharmony_ci * @tc.type: FUNC 4204d6c458bSopenharmony_ci */ 4214d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConvertTest003, testing::ext::TestSize.Level0) 4224d6c458bSopenharmony_ci{ 4234d6c458bSopenharmony_ci napi_env env = (napi_env)engine_; 4244d6c458bSopenharmony_ci std::string str1 = "<?xml version=\"1.0\" encoding=\"utf-8\"?><note importance=\"high\" logged=\"true\"> "; 4254d6c458bSopenharmony_ci std::string str2 = "<title>Happy</title> <todo>Work</todo> <todo>Play</todo></note>"; 4264d6c458bSopenharmony_ci std::string strXml = str1 + str2; 4274d6c458bSopenharmony_ci napi_value object = nullptr; 4284d6c458bSopenharmony_ci const char* utf8Name = "_elements"; 4294d6c458bSopenharmony_ci napi_create_object(env, &object); 4304d6c458bSopenharmony_ci bool isHas = false; 4314d6c458bSopenharmony_ci OHOS::Xml::ConvertXml convertXml = OHOS::Xml::ConvertXml(env); 4324d6c458bSopenharmony_ci 4334d6c458bSopenharmony_ci object = convertXml.Convert(env, strXml); 4344d6c458bSopenharmony_ci napi_has_named_property(env, object, utf8Name, &isHas); 4354d6c458bSopenharmony_ci ASSERT_TRUE(isHas); 4364d6c458bSopenharmony_ci} 4374d6c458bSopenharmony_ci 4384d6c458bSopenharmony_ci/* @tc.name: ConvertTest004 4394d6c458bSopenharmony_ci * @tc.desc: Convert the xml object containing doctype to a js object. 4404d6c458bSopenharmony_ci * @tc.type: FUNC 4414d6c458bSopenharmony_ci */ 4424d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConvertTest004, testing::ext::TestSize.Level0) 4434d6c458bSopenharmony_ci{ 4444d6c458bSopenharmony_ci napi_env env = (napi_env)engine_; 4454d6c458bSopenharmony_ci napi_value obj = nullptr; 4464d6c458bSopenharmony_ci napi_create_object(env, &obj); 4474d6c458bSopenharmony_ci 4484d6c458bSopenharmony_ci std::vector<std::string> proVec = {"trim", "ignoreDeclaration", "ignoreInstruction", "ignoreAttributes", 4494d6c458bSopenharmony_ci "ignoreComment", "ignoreCDATA", "ignoreDoctype", "ignoreText", "declarationKey", "_declaration", 4504d6c458bSopenharmony_ci "instructionKey", "_instruction", "attributesKey", "_attributes", "textKey", "_text", "cdataKey", "_cdata", 4514d6c458bSopenharmony_ci "doctypeKey", "_doctype", "commentKey", "_comment", "parentKey", "_parent", "typeKey", "_type", 4524d6c458bSopenharmony_ci "nameKey", "_name", "elementsKey", "_elements"}; 4534d6c458bSopenharmony_ci obj = setPropertyForTrim(env, obj, proVec); 4544d6c458bSopenharmony_ci OHOS::Xml::ConvertXml convertXml = OHOS::Xml::ConvertXml(env); 4554d6c458bSopenharmony_ci convertXml.DealOptions(env, obj); 4564d6c458bSopenharmony_ci bool isHas = false; 4574d6c458bSopenharmony_ci napi_has_named_property(env, obj, "textKey", &isHas); 4584d6c458bSopenharmony_ci ASSERT_TRUE(isHas); 4594d6c458bSopenharmony_ci 4604d6c458bSopenharmony_ci std::string str1 = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"; 4614d6c458bSopenharmony_ci std::string str2 = "<note importance=\"high\" logged=\"true\"><todo>Play</todo></note>"; 4624d6c458bSopenharmony_ci std::string strXml = str1 + str2; 4634d6c458bSopenharmony_ci napi_valuetype valuetype = napi_undefined; 4644d6c458bSopenharmony_ci 4654d6c458bSopenharmony_ci napi_typeof(env, convertXml.Convert(env, strXml), &valuetype); 4664d6c458bSopenharmony_ci bool isObj = valuetype == napi_valuetype::napi_object; 4674d6c458bSopenharmony_ci ASSERT_TRUE(isObj); 4684d6c458bSopenharmony_ci} 4694d6c458bSopenharmony_ci 4704d6c458bSopenharmony_ci/* @tc.name: ConvertTest005 4714d6c458bSopenharmony_ci * @tc.desc: Convert the xml object and set spaces info. 4724d6c458bSopenharmony_ci * @tc.type: FUNC 4734d6c458bSopenharmony_ci */ 4744d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConvertTest005, testing::ext::TestSize.Level0) 4754d6c458bSopenharmony_ci{ 4764d6c458bSopenharmony_ci napi_env env = (napi_env)engine_; 4774d6c458bSopenharmony_ci napi_value obj = nullptr; 4784d6c458bSopenharmony_ci napi_create_object(env, &obj); 4794d6c458bSopenharmony_ci 4804d6c458bSopenharmony_ci std::vector<std::string> proVec = {"trim", "spaces", "ignoreInstruction", "ignoreAttributes", 4814d6c458bSopenharmony_ci "ignoreComment", "ignoreCDATA", "ignoreDoctype", "ignoreText", "declarationKey", "_declaration", 4824d6c458bSopenharmony_ci "instructionKey", "_instruction", "attributesKey", "_attributes", "textKey", "_text", "cdataKey", "_cdata", 4834d6c458bSopenharmony_ci "doctypeKey", "_doctype", "commentKey", "_comment", "parentKey", "_parent", "typeKey", "_type", 4844d6c458bSopenharmony_ci "nameKey", "_name", "elementsKey", "_elements"}; 4854d6c458bSopenharmony_ci obj = setPropertyForTrim(env, obj, proVec); 4864d6c458bSopenharmony_ci OHOS::Xml::ConvertXml convertXml = OHOS::Xml::ConvertXml(env); 4874d6c458bSopenharmony_ci convertXml.DealOptions(env, obj); 4884d6c458bSopenharmony_ci bool isHas = false; 4894d6c458bSopenharmony_ci napi_has_named_property(env, obj, "textKey", &isHas); 4904d6c458bSopenharmony_ci ASSERT_TRUE(isHas); 4914d6c458bSopenharmony_ci 4924d6c458bSopenharmony_ci std::string str1 = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"; 4934d6c458bSopenharmony_ci std::string str2 = "<note importance=\"high\" logged=\"true\"><todo>Play</todo></note>"; 4944d6c458bSopenharmony_ci std::string strXml = str1 + str2; 4954d6c458bSopenharmony_ci napi_valuetype valuetype = napi_undefined; 4964d6c458bSopenharmony_ci 4974d6c458bSopenharmony_ci napi_typeof(env, convertXml.Convert(env, strXml), &valuetype); 4984d6c458bSopenharmony_ci bool isObj = valuetype == napi_valuetype::napi_object; 4994d6c458bSopenharmony_ci ASSERT_TRUE(isObj); 5004d6c458bSopenharmony_ci} 5014d6c458bSopenharmony_ci 5024d6c458bSopenharmony_ci/* @tc.name: ConvertTest006 5034d6c458bSopenharmony_ci * @tc.desc: Convert the xml object and set spaces info. 5044d6c458bSopenharmony_ci * @tc.type: FUNC 5054d6c458bSopenharmony_ci */ 5064d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConvertTest006, testing::ext::TestSize.Level0) 5074d6c458bSopenharmony_ci{ 5084d6c458bSopenharmony_ci napi_env env = (napi_env)engine_; 5094d6c458bSopenharmony_ci napi_value obj = nullptr; 5104d6c458bSopenharmony_ci napi_create_object(env, &obj); 5114d6c458bSopenharmony_ci 5124d6c458bSopenharmony_ci std::vector<std::string> proVec = {"trim", "ignoreDeclaration", "spaces", "compact", 5134d6c458bSopenharmony_ci "ignoreComment", "ignoreCDATA", "ignoreDoctype", "ignoreText", "declarationKey", "_declaration", 5144d6c458bSopenharmony_ci "instructionKey", "_instruction", "attributesKey", "_attributes", "textKey", "_text", "cdataKey", "_cdata", 5154d6c458bSopenharmony_ci "doctypeKey", "_doctype", "commentKey", "_comment", "parentKey", "_parent", "typeKey", "_type", 5164d6c458bSopenharmony_ci "nameKey", "_name", "elementsKey", "_elements"}; 5174d6c458bSopenharmony_ci obj = setPropertyForTrim(env, obj, proVec); 5184d6c458bSopenharmony_ci OHOS::Xml::ConvertXml convertXml = OHOS::Xml::ConvertXml(env); 5194d6c458bSopenharmony_ci convertXml.DealOptions(env, obj); 5204d6c458bSopenharmony_ci bool isHas = false; 5214d6c458bSopenharmony_ci napi_has_named_property(env, obj, "textKey", &isHas); 5224d6c458bSopenharmony_ci ASSERT_TRUE(isHas); 5234d6c458bSopenharmony_ci 5244d6c458bSopenharmony_ci std::string str1 = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"; 5254d6c458bSopenharmony_ci std::string str2 = "<note importance=\"high\" logged=\"true\"><todo>Play</todo></note>"; 5264d6c458bSopenharmony_ci std::string strXml = str1 + str2; 5274d6c458bSopenharmony_ci napi_valuetype valuetype = napi_undefined; 5284d6c458bSopenharmony_ci 5294d6c458bSopenharmony_ci napi_typeof(env, convertXml.Convert(env, strXml), &valuetype); 5304d6c458bSopenharmony_ci bool isObj = valuetype == napi_valuetype::napi_object; 5314d6c458bSopenharmony_ci ASSERT_TRUE(isObj); 5324d6c458bSopenharmony_ci} 5334d6c458bSopenharmony_ci 5344d6c458bSopenharmony_ci/* @tc.name: DealNapiStrValueTest001 5354d6c458bSopenharmony_ci * @tc.desc: Deal napi string value. 5364d6c458bSopenharmony_ci * @tc.type: FUNC 5374d6c458bSopenharmony_ci */ 5384d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, DealNapiStrValueTest001, testing::ext::TestSize.Level0) 5394d6c458bSopenharmony_ci{ 5404d6c458bSopenharmony_ci napi_env env = (napi_env)engine_; 5414d6c458bSopenharmony_ci napi_value obj = nullptr; 5424d6c458bSopenharmony_ci napi_create_object(env, &obj); 5434d6c458bSopenharmony_ci std::string str = ""; 5444d6c458bSopenharmony_ci 5454d6c458bSopenharmony_ci OHOS::Xml::ConvertXml convertXml = OHOS::Xml::ConvertXml(env); 5464d6c458bSopenharmony_ci napi_status rel = convertXml.DealNapiStrValue(env, nullptr, str); 5474d6c458bSopenharmony_ci 5484d6c458bSopenharmony_ci ASSERT_FALSE(rel == napi_ok); 5494d6c458bSopenharmony_ci} 5504d6c458bSopenharmony_ci 5514d6c458bSopenharmony_ci/* @tc.name: DealIgnoreTest001 5524d6c458bSopenharmony_ci * @tc.desc: Deal napi string value. 5534d6c458bSopenharmony_ci * @tc.type: FUNC 5544d6c458bSopenharmony_ci */ 5554d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, DealIgnoreTest001, testing::ext::TestSize.Level0) 5564d6c458bSopenharmony_ci{ 5574d6c458bSopenharmony_ci napi_env env = (napi_env)engine_; 5584d6c458bSopenharmony_ci napi_value obj = nullptr; 5594d6c458bSopenharmony_ci napi_create_object(env, &obj); 5604d6c458bSopenharmony_ci std::string str = ""; 5614d6c458bSopenharmony_ci 5624d6c458bSopenharmony_ci OHOS::Xml::ConvertXml convertXml = OHOS::Xml::ConvertXml(env); 5634d6c458bSopenharmony_ci napi_status rel = convertXml.DealNapiStrValue(env, nullptr, str); 5644d6c458bSopenharmony_ci 5654d6c458bSopenharmony_ci ASSERT_FALSE(rel == napi_ok); 5664d6c458bSopenharmony_ci} 5674d6c458bSopenharmony_ci 5684d6c458bSopenharmony_ci/* @tc.name: DealOptionsTest001 5694d6c458bSopenharmony_ci * @tc.desc: Convert the xml object containing doctype to a js object. 5704d6c458bSopenharmony_ci * @tc.type: FUNC 5714d6c458bSopenharmony_ci */ 5724d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, DealOptionsTest001, testing::ext::TestSize.Level0) 5734d6c458bSopenharmony_ci{ 5744d6c458bSopenharmony_ci napi_env env = (napi_env)engine_; 5754d6c458bSopenharmony_ci napi_value obj = nullptr; 5764d6c458bSopenharmony_ci napi_create_object(env, &obj); 5774d6c458bSopenharmony_ci 5784d6c458bSopenharmony_ci std::vector<std::string> proVec = {"trim", "ignoreDeclaration", "ignoreInstruction", "ignoreAttributes", 5794d6c458bSopenharmony_ci "ignoreComment", "ignoreCDATA", "ignoreDoctype", "ignoreText", "declarationKey", "_declaration", 5804d6c458bSopenharmony_ci "instructionKey", "_instruction", "attributesKey", "_attributes", "textKey", "_text", "cdataKey", "_cdata", 5814d6c458bSopenharmony_ci "doctypeKey", "_doctype", "commentKey", "_comment", "parentKey", "_parent", "typeKey", "_type", 5824d6c458bSopenharmony_ci "nameKey", "_name", "elementsKey", "_elements"}; 5834d6c458bSopenharmony_ci 5844d6c458bSopenharmony_ci obj = setProperty(env, obj, proVec); 5854d6c458bSopenharmony_ci OHOS::Xml::ConvertXml convertXml = OHOS::Xml::ConvertXml(env); 5864d6c458bSopenharmony_ci convertXml.DealOptions(env, obj); 5874d6c458bSopenharmony_ci bool isHas = false; 5884d6c458bSopenharmony_ci napi_has_named_property(env, obj, "textKey", &isHas); 5894d6c458bSopenharmony_ci ASSERT_TRUE(isHas); 5904d6c458bSopenharmony_ci} 5914d6c458bSopenharmony_ci 5924d6c458bSopenharmony_ci/* @tc.name: NativeModuleConvertXmlTest001 5934d6c458bSopenharmony_ci * @tc.desc: Convert the xml object containing doctype to a js object. 5944d6c458bSopenharmony_ci * @tc.type: FUNC 5954d6c458bSopenharmony_ci */ 5964d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, NativeModuleConvertXmlTest001, testing::ext::TestSize.Level1) 5974d6c458bSopenharmony_ci{ 5984d6c458bSopenharmony_ci napi_env env = (napi_env)engine_; 5994d6c458bSopenharmony_ci napi_value exports = nullptr; 6004d6c458bSopenharmony_ci napi_create_object(env, &exports); 6014d6c458bSopenharmony_ci OHOS::Xml::ConvertXmlInit(env, exports); 6024d6c458bSopenharmony_ci napi_value convertXmlClass = nullptr; 6034d6c458bSopenharmony_ci napi_get_named_property(env, exports, "ConvertXml", &convertXmlClass); 6044d6c458bSopenharmony_ci 6054d6c458bSopenharmony_ci napi_value instance = nullptr; 6064d6c458bSopenharmony_ci napi_new_instance(env, convertXmlClass, 0, nullptr, &instance); 6074d6c458bSopenharmony_ci 6084d6c458bSopenharmony_ci napi_value args[2]; // 2: number of arguments 6094d6c458bSopenharmony_ci std::string firXml = "<?xml version=\"1.0\" encoding=\"utf-8\"?><note importance=\"high\" logged=\"true\">"; 6104d6c458bSopenharmony_ci std::string secXml = "<title>Happy</title></note>"; 6114d6c458bSopenharmony_ci std::string strXml = firXml + secXml; 6124d6c458bSopenharmony_ci napi_create_string_utf8(env, strXml.c_str(), strXml.size(), &args[0]); 6134d6c458bSopenharmony_ci 6144d6c458bSopenharmony_ci napi_value obj = nullptr; 6154d6c458bSopenharmony_ci napi_create_object(env, &obj); 6164d6c458bSopenharmony_ci std::vector<std::string> proVec = {"trim", "ignoreDeclaration", "ignoreInstruction", "ignoreAttributes", 6174d6c458bSopenharmony_ci "ignoreComment", "ignoreCDATA", "ignoreDoctype", "ignoreText", "declarationKey", "_declaration", 6184d6c458bSopenharmony_ci "instructionKey", "_instruction", "attributesKey", "_attributes", "textKey", "_text", "cdataKey", "_cdata", 6194d6c458bSopenharmony_ci "doctypeKey", "_doctype", "commentKey", "_comment", "parentKey", "_parent", "typeKey", "_type", 6204d6c458bSopenharmony_ci "nameKey", "_name", "elementsKey", "_elements"}; 6214d6c458bSopenharmony_ci args[1] = setProperty(env, obj, proVec); 6224d6c458bSopenharmony_ci 6234d6c458bSopenharmony_ci napi_value funcResultValue = nullptr; 6244d6c458bSopenharmony_ci napi_value testFunc = nullptr; 6254d6c458bSopenharmony_ci napi_get_named_property(env, instance, "convert", &testFunc); 6264d6c458bSopenharmony_ci napi_call_function(env, instance, testFunc, 2, args, &funcResultValue); // 2: number of arguments 6274d6c458bSopenharmony_ci ASSERT_NE(funcResultValue, nullptr); 6284d6c458bSopenharmony_ci} 6294d6c458bSopenharmony_ci 6304d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, TrimTest001, testing::ext::TestSize.Level1) 6314d6c458bSopenharmony_ci{ 6324d6c458bSopenharmony_ci napi_env env = (napi_env)engine_; 6334d6c458bSopenharmony_ci CxmlTest::Trim(env, ""); 6344d6c458bSopenharmony_ci std::string res = CxmlTest::Trim(env, " #e "); 6354d6c458bSopenharmony_ci ASSERT_STREQ(res.c_str(), "#e"); 6364d6c458bSopenharmony_ci} 6374d6c458bSopenharmony_ci 6384d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, GetNodeTypeTest001, testing::ext::TestSize.Level1) 6394d6c458bSopenharmony_ci{ 6404d6c458bSopenharmony_ci napi_env env = (napi_env)engine_; 6414d6c458bSopenharmony_ci xmlElementType enumType = XML_ATTRIBUTE_NODE; 6424d6c458bSopenharmony_ci std::string res = CxmlTest::GetNodeType(env, enumType); 6434d6c458bSopenharmony_ci ASSERT_STREQ(res.c_str(), "attribute"); 6444d6c458bSopenharmony_ci enumType = XML_ENTITY_REF_NODE; 6454d6c458bSopenharmony_ci CxmlTest::GetNodeType(env, enumType); 6464d6c458bSopenharmony_ci enumType = XML_ENTITY_NODE; 6474d6c458bSopenharmony_ci CxmlTest::GetNodeType(env, enumType); 6484d6c458bSopenharmony_ci enumType = XML_PI_NODE; 6494d6c458bSopenharmony_ci CxmlTest::GetNodeType(env, enumType); 6504d6c458bSopenharmony_ci enumType = XML_DOCUMENT_NODE; 6514d6c458bSopenharmony_ci CxmlTest::GetNodeType(env, enumType); 6524d6c458bSopenharmony_ci enumType = XML_DOCUMENT_TYPE_NODE; 6534d6c458bSopenharmony_ci CxmlTest::GetNodeType(env, enumType); 6544d6c458bSopenharmony_ci enumType = XML_DOCUMENT_FRAG_NODE; 6554d6c458bSopenharmony_ci CxmlTest::GetNodeType(env, enumType); 6564d6c458bSopenharmony_ci enumType = XML_DOCB_DOCUMENT_NODE; 6574d6c458bSopenharmony_ci CxmlTest::GetNodeType(env, enumType); 6584d6c458bSopenharmony_ci enumType = XML_XINCLUDE_END; 6594d6c458bSopenharmony_ci res = CxmlTest::GetNodeType(env, enumType); 6604d6c458bSopenharmony_ci ASSERT_STREQ(res.c_str(), ""); 6614d6c458bSopenharmony_ci} 6624d6c458bSopenharmony_ci 6634d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, GetPrevNodeListTest001, testing::ext::TestSize.Level1) 6644d6c458bSopenharmony_ci{ 6654d6c458bSopenharmony_ci napi_env env = (napi_env)engine_; 6664d6c458bSopenharmony_ci xmlNodePtr curNode = new xmlNode; 6674d6c458bSopenharmony_ci xmlNodePtr curNode1 = new xmlNode; 6684d6c458bSopenharmony_ci curNode->prev = curNode1; 6694d6c458bSopenharmony_ci curNode1->prev = nullptr; 6704d6c458bSopenharmony_ci curNode1->type = XML_PI_NODE; 6714d6c458bSopenharmony_ci curNode1->name = reinterpret_cast<const xmlChar *>("Hello world!"); 6724d6c458bSopenharmony_ci curNode1->content = const_cast<xmlChar *>(reinterpret_cast<const xmlChar *>("Hello world!")); 6734d6c458bSopenharmony_ci CxmlTest::GetPrevNodeList(env, curNode); 6744d6c458bSopenharmony_ci ASSERT_TRUE(curNode != nullptr); 6754d6c458bSopenharmony_ci delete curNode; 6764d6c458bSopenharmony_ci delete curNode1; 6774d6c458bSopenharmony_ci} 6784d6c458bSopenharmony_ci 6794d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, SetPrevInfoTest001, testing::ext::TestSize.Level1) 6804d6c458bSopenharmony_ci{ 6814d6c458bSopenharmony_ci napi_env env = (napi_env)engine_; 6824d6c458bSopenharmony_ci xmlNodePtr curNode = new xmlNode; 6834d6c458bSopenharmony_ci xmlNodePtr curNode1 = new xmlNode; 6844d6c458bSopenharmony_ci curNode->prev = curNode1; 6854d6c458bSopenharmony_ci curNode1->prev = nullptr; 6864d6c458bSopenharmony_ci curNode1->type = XML_PI_NODE; 6874d6c458bSopenharmony_ci curNode1->name = reinterpret_cast<const xmlChar *>("Hello world!"); 6884d6c458bSopenharmony_ci curNode1->content = const_cast<xmlChar *>(reinterpret_cast<const xmlChar *>("Hello world!")); 6894d6c458bSopenharmony_ci CxmlTest::GetAnDSetPrevNodeList(env, curNode); 6904d6c458bSopenharmony_ci ASSERT_TRUE(curNode != nullptr); 6914d6c458bSopenharmony_ci delete curNode; 6924d6c458bSopenharmony_ci delete curNode1; 6934d6c458bSopenharmony_ci} 6944d6c458bSopenharmony_ci 6954d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, SetXmlElementTypeTest001, testing::ext::TestSize.Level1) 6964d6c458bSopenharmony_ci{ 6974d6c458bSopenharmony_ci napi_env env = (napi_env)engine_; 6984d6c458bSopenharmony_ci napi_value elementsObject = nullptr; 6994d6c458bSopenharmony_ci napi_create_object(env, &elementsObject); 7004d6c458bSopenharmony_ci xmlNodePtr curNode1 = new xmlNode; 7014d6c458bSopenharmony_ci curNode1->type = XML_PI_NODE; 7024d6c458bSopenharmony_ci curNode1->name = reinterpret_cast<const xmlChar *>("Hello world!"); 7034d6c458bSopenharmony_ci curNode1->content = const_cast<xmlChar *>(reinterpret_cast<const xmlChar *>("Hello world!")); 7044d6c458bSopenharmony_ci bool flag = false; 7054d6c458bSopenharmony_ci CxmlTest::SetXmlElementType(env, curNode1, elementsObject, flag); 7064d6c458bSopenharmony_ci flag = false; 7074d6c458bSopenharmony_ci curNode1->type = XML_COMMENT_NODE; 7084d6c458bSopenharmony_ci CxmlTest::SetXmlElementType(env, curNode1, elementsObject, flag); 7094d6c458bSopenharmony_ci delete curNode1; 7104d6c458bSopenharmony_ci ASSERT_TRUE(flag); 7114d6c458bSopenharmony_ci} 7124d6c458bSopenharmony_ci 7134d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, SetNodeInfoTest001, testing::ext::TestSize.Level1) 7144d6c458bSopenharmony_ci{ 7154d6c458bSopenharmony_ci napi_env env = (napi_env)engine_; 7164d6c458bSopenharmony_ci napi_value elementsObject = nullptr; 7174d6c458bSopenharmony_ci napi_create_object(env, &elementsObject); 7184d6c458bSopenharmony_ci xmlNodePtr curNode1 = new xmlNode; 7194d6c458bSopenharmony_ci curNode1->type = XML_PI_NODE; 7204d6c458bSopenharmony_ci curNode1->name = reinterpret_cast<const xmlChar *>("Hello world!"); 7214d6c458bSopenharmony_ci curNode1->content = const_cast<xmlChar *>(reinterpret_cast<const xmlChar *>("Hello world!")); 7224d6c458bSopenharmony_ci bool flag = true; 7234d6c458bSopenharmony_ci CxmlTest::SetNodeInfo(env, curNode1, elementsObject); 7244d6c458bSopenharmony_ci delete curNode1; 7254d6c458bSopenharmony_ci ASSERT_TRUE(flag); 7264d6c458bSopenharmony_ci} 7274d6c458bSopenharmony_ci 7284d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, DealSpacesTest001, testing::ext::TestSize.Level1) 7294d6c458bSopenharmony_ci{ 7304d6c458bSopenharmony_ci napi_env env = (napi_env)engine_; 7314d6c458bSopenharmony_ci napi_value napiObj = nullptr; 7324d6c458bSopenharmony_ci napi_create_object(env, &napiObj); 7334d6c458bSopenharmony_ci napi_value spacesValue; 7344d6c458bSopenharmony_ci napi_create_string_utf8(env, "hello world", NAPI_AUTO_LENGTH, &spacesValue); 7354d6c458bSopenharmony_ci napi_set_named_property(env, napiObj, "spaces", spacesValue); 7364d6c458bSopenharmony_ci bool flag = true; 7374d6c458bSopenharmony_ci CxmlTest::DealSpaces(env, napiObj); 7384d6c458bSopenharmony_ci ASSERT_TRUE(flag); 7394d6c458bSopenharmony_ci} 7404d6c458bSopenharmony_ci 7414d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, DealSpacesTest002, testing::ext::TestSize.Level1) 7424d6c458bSopenharmony_ci{ 7434d6c458bSopenharmony_ci napi_env env = (napi_env)engine_; 7444d6c458bSopenharmony_ci napi_value napiObj = nullptr; 7454d6c458bSopenharmony_ci napi_create_object(env, &napiObj); 7464d6c458bSopenharmony_ci napi_value spacesValue; 7474d6c458bSopenharmony_ci napi_create_int32(env, 123, &spacesValue); // 123: number of test number 7484d6c458bSopenharmony_ci napi_set_named_property(env, napiObj, "spaces", spacesValue); 7494d6c458bSopenharmony_ci bool flag = true; 7504d6c458bSopenharmony_ci CxmlTest::DealSpaces(env, napiObj); 7514d6c458bSopenharmony_ci ASSERT_TRUE(flag); 7524d6c458bSopenharmony_ci} 7534d6c458bSopenharmony_ci 7544d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, SetDefaultKeyTest001, testing::ext::TestSize.Level1) 7554d6c458bSopenharmony_ci{ 7564d6c458bSopenharmony_ci napi_env env = (napi_env)engine_; 7574d6c458bSopenharmony_ci size_t i = 15; // 15: number of default number 7584d6c458bSopenharmony_ci std::string key = "hello"; 7594d6c458bSopenharmony_ci CxmlTest::SetDefaultKey(env, i, key); 7604d6c458bSopenharmony_ci ASSERT_STREQ(key.c_str(), "hello"); 7614d6c458bSopenharmony_ci} 7624d6c458bSopenharmony_ci 7634d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, DealSingleLineTest001, testing::ext::TestSize.Level1) 7644d6c458bSopenharmony_ci{ 7654d6c458bSopenharmony_ci napi_env env = (napi_env)engine_; 7664d6c458bSopenharmony_ci std::string key = "xmlsss<zyyzyy>ssa"; 7674d6c458bSopenharmony_ci napi_value napiObj = nullptr; 7684d6c458bSopenharmony_ci napi_create_object(env, &napiObj); 7694d6c458bSopenharmony_ci CxmlTest::DealSingleLine(env, key, napiObj); 7704d6c458bSopenharmony_ci ASSERT_STREQ(key.c_str(), "<node>xmlsss<zyyzyy>ssassa</node>"); 7714d6c458bSopenharmony_ci} 7724d6c458bSopenharmony_ci 7734d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, DealSingleLineTest002, testing::ext::TestSize.Level1) 7744d6c458bSopenharmony_ci{ 7754d6c458bSopenharmony_ci napi_env env = (napi_env)engine_; 7764d6c458bSopenharmony_ci std::string key = " xmlsss<zyyzyy>ssa"; 7774d6c458bSopenharmony_ci napi_value napiObj = nullptr; 7784d6c458bSopenharmony_ci napi_create_object(env, &napiObj); 7794d6c458bSopenharmony_ci CxmlTest::DealSingleLine(env, key, napiObj); 7804d6c458bSopenharmony_ci ASSERT_STREQ(key.c_str(), "<node> xmlsss<zyyzyy>ssassa</node>"); 7814d6c458bSopenharmony_ci} 7824d6c458bSopenharmony_ci 7834d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, DealComplexTest001, testing::ext::TestSize.Level1) 7844d6c458bSopenharmony_ci{ 7854d6c458bSopenharmony_ci napi_env env = (napi_env)engine_; 7864d6c458bSopenharmony_ci std::string key = "xmlsss<!DOCTYPE>ssa"; 7874d6c458bSopenharmony_ci napi_value napiObj = nullptr; 7884d6c458bSopenharmony_ci napi_create_object(env, &napiObj); 7894d6c458bSopenharmony_ci CxmlTest::DealComplex(env, key, napiObj); 7904d6c458bSopenharmony_ci ASSERT_STREQ(key.c_str(), "xmlsss<!DOCTYPE>ssa<node></node>"); 7914d6c458bSopenharmony_ci} 7924d6c458bSopenharmony_ci 7934d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ReplaceTest001, testing::ext::TestSize.Level1) 7944d6c458bSopenharmony_ci{ 7954d6c458bSopenharmony_ci napi_env env = (napi_env)engine_; 7964d6c458bSopenharmony_ci std::string str = "xmlsss<!DOCTYPE>ssa"; 7974d6c458bSopenharmony_ci std::string src = "sss"; 7984d6c458bSopenharmony_ci std::string dst = "zyy"; 7994d6c458bSopenharmony_ci CxmlTest::Replace(env, str, src, dst); 8004d6c458bSopenharmony_ci ASSERT_STREQ(str.c_str(), "xmlzyy<!DOCTYPE>ssa"); 8014d6c458bSopenharmony_ci} 8024d6c458bSopenharmony_ci 8034d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, DealCDataInfo001, testing::ext::TestSize.Level1) 8044d6c458bSopenharmony_ci{ 8054d6c458bSopenharmony_ci napi_env env = (napi_env)engine_; 8064d6c458bSopenharmony_ci bool flag = true; 8074d6c458bSopenharmony_ci xmlNodePtr curNode = new xmlNode; 8084d6c458bSopenharmony_ci xmlNodePtr curNode1 = new xmlNode; 8094d6c458bSopenharmony_ci xmlNodePtr curNode2 = new xmlNode; 8104d6c458bSopenharmony_ci curNode->next = curNode1; 8114d6c458bSopenharmony_ci curNode->type = XML_CDATA_SECTION_NODE; 8124d6c458bSopenharmony_ci curNode1->type = XML_TEXT_NODE; 8134d6c458bSopenharmony_ci curNode1->next = curNode2; 8144d6c458bSopenharmony_ci curNode2->type = XML_CDATA_SECTION_NODE; 8154d6c458bSopenharmony_ci curNode1->name = reinterpret_cast<const xmlChar *>("Hello world!"); 8164d6c458bSopenharmony_ci curNode1->content = const_cast<xmlChar *>(reinterpret_cast<const xmlChar *>("Hello world!")); 8174d6c458bSopenharmony_ci CxmlTest::DealCDataInfo(env, flag, curNode); 8184d6c458bSopenharmony_ci delete curNode2; 8194d6c458bSopenharmony_ci delete curNode1; 8204d6c458bSopenharmony_ci delete curNode; 8214d6c458bSopenharmony_ci ASSERT_TRUE(flag); 8224d6c458bSopenharmony_ci} 8234d6c458bSopenharmony_ci 8244d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, DealCDataInfo002, testing::ext::TestSize.Level1) 8254d6c458bSopenharmony_ci{ 8264d6c458bSopenharmony_ci napi_env env = (napi_env)engine_; 8274d6c458bSopenharmony_ci bool flag = true; 8284d6c458bSopenharmony_ci xmlNodePtr curNode = new xmlNode; 8294d6c458bSopenharmony_ci xmlNodePtr curNode1 = new xmlNode; 8304d6c458bSopenharmony_ci xmlNodePtr curNode2 = new xmlNode; 8314d6c458bSopenharmony_ci curNode->next = curNode1; 8324d6c458bSopenharmony_ci curNode->type = XML_CDATA_SECTION_NODE; 8334d6c458bSopenharmony_ci curNode1->type = XML_TEXT_NODE; 8344d6c458bSopenharmony_ci curNode1->next = curNode2; 8354d6c458bSopenharmony_ci curNode2->type = XML_CDATA_SECTION_NODE; 8364d6c458bSopenharmony_ci 8374d6c458bSopenharmony_ci curNode1->name = reinterpret_cast<const xmlChar *>("Hello world!"); 8384d6c458bSopenharmony_ci curNode1->content = const_cast<xmlChar *>(reinterpret_cast<const xmlChar *>(" \t\t\t\t\t")); 8394d6c458bSopenharmony_ci CxmlTest::DealCDataInfo(env, flag, curNode); 8404d6c458bSopenharmony_ci ASSERT_TRUE(flag); 8414d6c458bSopenharmony_ci}