Browse Source

Fixed XMLNode class

- fixed "removeFirstChild" method
- fixed "removeLastChild" method
- added negative tests
Patrick 4 năm trước cách đây
mục cha
commit
5d3b53eb00
2 tập tin đã thay đổi với 26 bổ sung4 xóa
  1. 7 3
      source/io/xml/XMLNode.cpp
  2. 19 1
      test/cases/io/xml/XMLNodeTest.cpp

+ 7 - 3
source/io/xml/XMLNode.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-09-24
- * Changed:         2020-09-24
+ * Changed:         2020-09-26
  *
  * */
 
@@ -197,12 +197,16 @@ void ls_std::XMLNode::removeLastAttribute()
 
 void ls_std::XMLNode::removeFirstChild()
 {
-  this->children.pop_front();
+  if(!this->children.empty()) {
+    this->children.pop_front();
+  }
 }
 
 void ls_std::XMLNode::removeLastChild()
 {
-  this->children.pop_back();
+  if(!this->children.empty()) {
+    this->children.pop_back();
+  }
 }
 
 void ls_std::XMLNode::setName(std::string _name)

+ 19 - 1
test/cases/io/xml/XMLNodeTest.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-09-25
- * Changed:         2020-09-25
+ * Changed:         2020-09-26
  *
  * */
 
@@ -267,6 +267,15 @@ namespace {
     ASSERT_STREQ("event", currentNode->getName().c_str());
   }
 
+  TEST_F(XMLNodeTest, removeFirstChildNegative)
+  {
+    ls_std::XMLNode dialogsNode {"dialogs"};
+    ASSERT_TRUE(dialogsNode.getChildren().empty());
+
+    dialogsNode.removeFirstChild();
+    ASSERT_TRUE(dialogsNode.getChildren().empty());
+  }
+
   TEST_F(XMLNodeTest, removeLastChild)
   {
     ls_std::XMLNode dialogsNode {"dialogs"};
@@ -305,6 +314,15 @@ namespace {
     ASSERT_STREQ("additionalInfo", currentNode->getName().c_str());
   }
 
+  TEST_F(XMLNodeTest, removeLastChildNegative)
+  {
+    ls_std::XMLNode dialogsNode {"dialogs"};
+    ASSERT_TRUE(dialogsNode.getChildren().empty());
+
+    dialogsNode.removeLastChild();
+    ASSERT_TRUE(dialogsNode.getChildren().empty());
+  }
+
   TEST_F(XMLNodeTest, setName)
   {
     ls_std::XMLNode dialogNode {"dialog"};