1 /*
2  * Copyright (c) 2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "dash_xml_unit_test.h"
17 
18 namespace OHOS {
19 namespace Media {
20 namespace Plugins {
21 namespace HttpPlugin {
22 using namespace testing::ext;
23 
SetUpTestCase(void)24 void DashXmlUnitTest::SetUpTestCase(void) {}
25 
TearDownTestCase(void)26 void DashXmlUnitTest::TearDownTestCase(void)
27 {
28     if (xmlParser_ != nullptr) {
29         xmlParser_->DestroyDoc();
30     }
31 }
32 
SetUp(void)33 void DashXmlUnitTest::SetUp(void) {}
34 
TearDown(void)35 void DashXmlUnitTest::TearDown(void) {}
36 
37 HWTEST_F(DashXmlUnitTest, Test_ParseFromString_Failed_001, TestSize.Level1)
38 {
39     double ret = xmlParser_->ParseFromString("");
40     EXPECT_GE(ret, -1);
41 }
42 
43 HWTEST_F(DashXmlUnitTest, Test_ParseFromString_Failed_002, TestSize.Level1)
44 {
45     double ret = xmlParser_->ParseFromString("<test><11111>");
46     EXPECT_GE(ret, -1);
47 }
48 
49 HWTEST_F(DashXmlUnitTest, Test_ParseFromString_Success_001, TestSize.Level1)
50 {
51     double ret = xmlParser_->ParseFromString("<test>123</test>");
52     EXPECT_GE(ret, 0);
53 }
54 
55 HWTEST_F(DashXmlUnitTest, Test_ParseFromBuffer_Failed_001, TestSize.Level1)
56 {
57     double ret = xmlParser_->ParseFromBuffer(nullptr, 1);
58     EXPECT_GE(ret, -1);
59 }
60 
61 HWTEST_F(DashXmlUnitTest, Test_ParseFromBuffer_Failed_002, TestSize.Level1)
62 {
63     std::string xml = "";
64     double ret = xmlParser_->ParseFromBuffer(xml.c_str(), xml.length());
65     EXPECT_GE(ret, -1);
66 }
67 
68 HWTEST_F(DashXmlUnitTest, Test_ParseFromBuffer_Failed_003, TestSize.Level1)
69 {
70     std::string xml = "<test><11111>";
71     double ret = xmlParser_->ParseFromBuffer(xml.c_str(), xml.length());
72     EXPECT_GE(ret, -1);
73 }
74 
75 HWTEST_F(DashXmlUnitTest, Test_ParseFromBuffer_Success_001, TestSize.Level1)
76 {
77     std::string xml = "<test>123</test>";
78     double ret = xmlParser_->ParseFromBuffer(xml.c_str(), xml.length());
79     EXPECT_GE(ret, 0);
80 }
81 
82 HWTEST_F(DashXmlUnitTest, Test_ParseFromBuffer_Success_002, TestSize.Level1)
83 {
84     std::string xml = "<root id=\"1\"><test1>123</test1><test2></test2></root>";
85     double ret = xmlParser_->ParseFromBuffer(xml.c_str(), xml.length());
86     EXPECT_GE(ret, 0);
87     std::shared_ptr<XmlElement> root = xmlParser_->GetRootElement();
88     root->GetXmlNode();
89     std::string attr = root->GetAttribute("test");
90     EXPECT_TRUE(attr.empty());
91     std::string id = root->GetAttribute("id");
92     EXPECT_EQ(id, "1");
93     std::shared_ptr<XmlElement> child = root->GetChild();
94     std::shared_ptr<XmlElement> parent = child->GetParent();
95     std::shared_ptr<XmlElement> last = root->GetLast();
96     std::shared_ptr<XmlElement> prev = last->GetSiblingPrev();
97     EXPECT_NE(parent, nullptr);
98 }
99 
100 HWTEST_F(DashXmlUnitTest, Test_ParseFromBuffer_Success_003, TestSize.Level1)
101 {
102     std::shared_ptr<XmlElement> root = std::make_shared<XmlElement>(nullptr);
103     std::string name = root->GetName();
104     EXPECT_TRUE(name.empty());
105     std::string text = root->GetText();
106     EXPECT_TRUE(text.empty());
107     std::string attr = root->GetAttribute("test");
108     EXPECT_TRUE(attr.empty());
109     std::shared_ptr<XmlElement> parent = root->GetParent();
110     EXPECT_EQ(parent, nullptr);
111     std::shared_ptr<XmlElement> child = root->GetChild();
112     EXPECT_EQ(child, nullptr);
113     std::shared_ptr<XmlElement> prev = root->GetSiblingPrev();
114     EXPECT_EQ(prev, nullptr);
115     std::shared_ptr<XmlElement> next = root->GetSiblingNext();
116     EXPECT_EQ(next, nullptr);
117     std::shared_ptr<XmlElement> last = root->GetLast();
118     EXPECT_EQ(last, nullptr);
119 }
120 
121 HWTEST_F(DashXmlUnitTest, Test_ParseFromBuffer_Success_004, TestSize.Level1)
122 {
123     xmlNodePtr node = xmlNewNode(nullptr, BAD_CAST "root");
124     std::shared_ptr<XmlElement> root = std::make_shared<XmlElement>(node);
125     std::string name = root->GetName();
126     EXPECT_FALSE(name.empty());
127     std::string text = root->GetText();
128     EXPECT_TRUE(text.empty());
129     std::string attr = root->GetAttribute("test");
130     EXPECT_TRUE(attr.empty());
131     std::shared_ptr<XmlElement> parent = root->GetParent();
132     EXPECT_EQ(parent, nullptr);
133     std::shared_ptr<XmlElement> child = root->GetChild();
134     EXPECT_EQ(child, nullptr);
135     std::shared_ptr<XmlElement> prev = root->GetSiblingPrev();
136     EXPECT_EQ(prev, nullptr);
137     std::shared_ptr<XmlElement> next = root->GetSiblingNext();
138     EXPECT_EQ(next, nullptr);
139     std::shared_ptr<XmlElement> last = root->GetLast();
140     EXPECT_EQ(last, nullptr);
141 }
142 
143 HWTEST_F(DashXmlUnitTest, Test_ParseFromFile_Success_001, TestSize.Level1)
144 {
145     std::string xml = "/data/test/media/test_dash/segment_base/index.mpd";
146     double ret = xmlParser_->ParseFromFile(xml);
147     EXPECT_GE(ret, -1);
148 }
149 }
150 }
151 }
152 }