123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239 |
- /*
- * Author: Patrick-Christopher Mattulat
- * Company: Lynar Studios
- * E-Mail: webmaster@lynarstudios.com
- * Created: 2020-09-25
- * Changed: 2020-09-25
- *
- * */
- #include <gtest/gtest.h>
- #include "../../../../source/io/xml/XMLNode.hpp"
- namespace {
- class XMLNodeTest : public ::testing::Test {
- protected:
- XMLNodeTest() = default;
- ~XMLNodeTest() override = default;
- void SetUp() override {}
- void TearDown() override {}
- };
- TEST_F(XMLNodeTest, addChildAfter)
- {
- ls_std::XMLNode dialogsNode {"dialogs"};
- std::shared_ptr<ls_std::XMLNode> currentNode {};
- std::shared_ptr<ls_std::XMLNode> dialogNodeA = std::make_shared<ls_std::XMLNode>("dialogNodeA");
- std::shared_ptr<ls_std::XMLNode> dialogNodeB = std::make_shared<ls_std::XMLNode>("dialogNodeB");
- std::shared_ptr<ls_std::XMLNode> dialogNodeC = std::make_shared<ls_std::XMLNode>("dialogNodeC");
- std::shared_ptr<ls_std::XMLNode> dialogNodeD = std::make_shared<ls_std::XMLNode>("dialogNodeD");
- ASSERT_TRUE(dialogsNode.addChildToEnd(dialogNodeB));
- ASSERT_TRUE(dialogsNode.addChildToEnd(dialogNodeC));
- ASSERT_EQ(2, dialogsNode.getChildren().size());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 0);
- ASSERT_STREQ("dialogNodeB", currentNode->getName().c_str());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 1);
- ASSERT_STREQ("dialogNodeC", currentNode->getName().c_str());
- // add A after B
- ASSERT_TRUE(dialogsNode.addChildAfter(dialogNodeA, dialogNodeB));
- currentNode = *std::next(dialogsNode.getChildren().begin(), 0);
- ASSERT_STREQ("dialogNodeB", currentNode->getName().c_str());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 1);
- ASSERT_STREQ("dialogNodeA", currentNode->getName().c_str());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 2);
- ASSERT_STREQ("dialogNodeC", currentNode->getName().c_str());
- // add D after C
- ASSERT_TRUE(dialogsNode.addChildAfter(dialogNodeD, dialogNodeC));
- currentNode = *std::next(dialogsNode.getChildren().begin(), 0);
- ASSERT_STREQ("dialogNodeB", currentNode->getName().c_str());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 1);
- ASSERT_STREQ("dialogNodeA", currentNode->getName().c_str());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 2);
- ASSERT_STREQ("dialogNodeC", currentNode->getName().c_str());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 3);
- ASSERT_STREQ("dialogNodeD", currentNode->getName().c_str());
- }
- TEST_F(XMLNodeTest, addChildBefore)
- {
- ls_std::XMLNode dialogsNode {"dialogs"};
- std::shared_ptr<ls_std::XMLNode> currentNode {};
- std::shared_ptr<ls_std::XMLNode> dialogNodeA = std::make_shared<ls_std::XMLNode>("dialogNodeA");
- std::shared_ptr<ls_std::XMLNode> dialogNodeB = std::make_shared<ls_std::XMLNode>("dialogNodeB");
- std::shared_ptr<ls_std::XMLNode> dialogNodeC = std::make_shared<ls_std::XMLNode>("dialogNodeC");
- std::shared_ptr<ls_std::XMLNode> dialogNodeD = std::make_shared<ls_std::XMLNode>("dialogNodeD");
- ASSERT_TRUE(dialogsNode.addChildToEnd(dialogNodeB));
- ASSERT_TRUE(dialogsNode.addChildToEnd(dialogNodeC));
- ASSERT_EQ(2, dialogsNode.getChildren().size());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 0);
- ASSERT_STREQ("dialogNodeB", currentNode->getName().c_str());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 1);
- ASSERT_STREQ("dialogNodeC", currentNode->getName().c_str());
- // add A before C
- ASSERT_TRUE(dialogsNode.addChildBefore(dialogNodeA, dialogNodeC));
- currentNode = *std::next(dialogsNode.getChildren().begin(), 0);
- ASSERT_STREQ("dialogNodeB", currentNode->getName().c_str());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 1);
- ASSERT_STREQ("dialogNodeA", currentNode->getName().c_str());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 2);
- ASSERT_STREQ("dialogNodeC", currentNode->getName().c_str());
- // add D before B
- ASSERT_TRUE(dialogsNode.addChildBefore(dialogNodeD, dialogNodeB));
- currentNode = *std::next(dialogsNode.getChildren().begin(), 0);
- ASSERT_STREQ("dialogNodeD", currentNode->getName().c_str());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 1);
- ASSERT_STREQ("dialogNodeB", currentNode->getName().c_str());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 2);
- ASSERT_STREQ("dialogNodeA", currentNode->getName().c_str());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 3);
- ASSERT_STREQ("dialogNodeC", currentNode->getName().c_str());
- }
- TEST_F(XMLNodeTest, addChildToBeginning)
- {
- ls_std::XMLNode dialogsNode {"dialogs"};
- std::shared_ptr<ls_std::XMLNode> currentNode {};
- ls_std::XMLNode dialogNodeA {"dialogNodeA"};
- ls_std::XMLNode dialogNodeB {"dialogNodeB"};
- ls_std::XMLNode dialogNodeC {"dialogNodeC"};
- ASSERT_TRUE(dialogsNode.getChildren().empty());
- ASSERT_EQ(0, dialogsNode.getChildren().size());
- // adding C
- ASSERT_TRUE(dialogsNode.addChildToBeginning(std::make_shared<ls_std::XMLNode>(dialogNodeC)));
- ASSERT_TRUE(!dialogsNode.getChildren().empty());
- ASSERT_EQ(1, dialogsNode.getChildren().size());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 0);
- ASSERT_STREQ("dialogNodeC", currentNode->getName().c_str());
- // adding B
- ASSERT_TRUE(dialogsNode.addChildToBeginning(std::make_shared<ls_std::XMLNode>(dialogNodeB)));
- ASSERT_EQ(2, dialogsNode.getChildren().size());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 0);
- ASSERT_STREQ("dialogNodeB", currentNode->getName().c_str());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 1);
- ASSERT_STREQ("dialogNodeC", currentNode->getName().c_str());
- // adding A
- ASSERT_TRUE(dialogsNode.addChildToBeginning(std::make_shared<ls_std::XMLNode>(dialogNodeA)));
- ASSERT_EQ(3, dialogsNode.getChildren().size());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 0);
- ASSERT_STREQ("dialogNodeA", currentNode->getName().c_str());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 1);
- ASSERT_STREQ("dialogNodeB", currentNode->getName().c_str());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 2);
- ASSERT_STREQ("dialogNodeC", currentNode->getName().c_str());
- }
- TEST_F(XMLNodeTest, addChildToEnd)
- {
- ls_std::XMLNode dialogsNode {"dialogs"};
- std::shared_ptr<ls_std::XMLNode> currentNode {};
- ls_std::XMLNode dialogNodeA {"dialogNodeA"};
- ls_std::XMLNode dialogNodeB {"dialogNodeB"};
- ls_std::XMLNode dialogNodeC {"dialogNodeC"};
- ASSERT_TRUE(dialogsNode.getChildren().empty());
- ASSERT_EQ(0, dialogsNode.getChildren().size());
- // adding C
- ASSERT_TRUE(dialogsNode.addChildToEnd(std::make_shared<ls_std::XMLNode>(dialogNodeC)));
- ASSERT_TRUE(!dialogsNode.getChildren().empty());
- ASSERT_EQ(1, dialogsNode.getChildren().size());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 0);
- ASSERT_STREQ("dialogNodeC", currentNode->getName().c_str());
- // adding B
- ASSERT_TRUE(dialogsNode.addChildToEnd(std::make_shared<ls_std::XMLNode>(dialogNodeB)));
- ASSERT_EQ(2, dialogsNode.getChildren().size());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 0);
- ASSERT_STREQ("dialogNodeC", currentNode->getName().c_str());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 1);
- ASSERT_STREQ("dialogNodeB", currentNode->getName().c_str());
- // adding A
- ASSERT_TRUE(dialogsNode.addChildToEnd(std::make_shared<ls_std::XMLNode>(dialogNodeA)));
- ASSERT_EQ(3, dialogsNode.getChildren().size());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 0);
- ASSERT_STREQ("dialogNodeC", currentNode->getName().c_str());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 1);
- ASSERT_STREQ("dialogNodeB", currentNode->getName().c_str());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 2);
- ASSERT_STREQ("dialogNodeA", currentNode->getName().c_str());
- }
- TEST_F(XMLNodeTest, getAttributes)
- {
- ls_std::XMLNode dialogNode {"dialog"};
- ASSERT_TRUE(dialogNode.getAttributes().empty());
- }
- TEST_F(XMLNodeTest, getChildren)
- {
- ls_std::XMLNode dialogNode {"dialog"};
- ASSERT_TRUE(dialogNode.getChildren().empty());
- }
- TEST_F(XMLNodeTest, getChildrenV2)
- {
- ls_std::XMLNode dialogsNode {"dialogs"};
- ls_std::XMLNode dialogNode {"dialog"};
- ls_std::XMLNode otherNode {"something"};
- // preparation
- ASSERT_TRUE(dialogsNode.addChildToEnd(std::make_shared<ls_std::XMLNode>(dialogNode)));
- ASSERT_TRUE(dialogsNode.addChildToEnd(std::make_shared<ls_std::XMLNode>(otherNode)));
- ASSERT_TRUE(dialogsNode.addChildToEnd(std::make_shared<ls_std::XMLNode>(otherNode)));
- ASSERT_TRUE(dialogsNode.addChildToEnd(std::make_shared<ls_std::XMLNode>(dialogNode)));
- ASSERT_TRUE(dialogsNode.addChildToEnd(std::make_shared<ls_std::XMLNode>(otherNode)));
- // check
- ASSERT_TRUE(!dialogsNode.getChildren().empty());
- ASSERT_EQ(5, dialogsNode.getChildren().size());
- ASSERT_EQ(2, dialogsNode.getChildren("dialog").size());
- ASSERT_EQ(3, dialogsNode.getChildren("something").size());
- }
- TEST_F(XMLNodeTest, getName)
- {
- ls_std::XMLNode dialogNode {"dialog"};
- ASSERT_STREQ("dialog", dialogNode.getName().c_str());
- }
- TEST_F(XMLNodeTest, setName)
- {
- ls_std::XMLNode dialogNode {"dialog"};
- dialogNode.setName("dialog2");
- ASSERT_STREQ("dialog2", dialogNode.getName().c_str());
- }
- }
|