123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642 |
- /*
- * Author: Patrick-Christopher Mattulat
- * Company: Lynar Studios
- * E-Mail: webmaster@lynarstudios.com
- * Created: 2020-09-25
- * Changed: 2020-11-29
- *
- * */
- #include <gtest/gtest.h>
- #include <ls_std/ls_std.hpp>
- #include <TestDataFactory.hpp>
- namespace {
- class XMLNodeTest : public ::testing::Test {
- protected:
- XMLNodeTest() = default;
- ~XMLNodeTest() override = default;
- void SetUp() override {}
- void TearDown() override {}
- };
- TEST_F(XMLNodeTest, addAttributeAfter)
- {
- ls_std::XMLNode dialogNode {"dialog"};
- std::shared_ptr<ls_std::XMLAttribute> currentAttribute {};
- dialogNode.addAttributeToEnd(std::make_shared<ls_std::XMLAttribute>("events"));
- dialogNode.addAttributeToEnd(std::make_shared<ls_std::XMLAttribute>("assets"));
- currentAttribute = *std::next(dialogNode.getAttributes().begin(), 0);
- ASSERT_STREQ("events", currentAttribute->getName().c_str());
- currentAttribute = *std::next(dialogNode.getAttributes().begin(), 1);
- ASSERT_STREQ("assets", currentAttribute->getName().c_str());
- // add id after events
- ASSERT_TRUE(dialogNode.addAttributeAfter(std::make_shared<ls_std::XMLAttribute>("id"), "events"));
- currentAttribute = *std::next(dialogNode.getAttributes().begin(), 0);
- ASSERT_STREQ("events", currentAttribute->getName().c_str());
- currentAttribute = *std::next(dialogNode.getAttributes().begin(), 1);
- ASSERT_STREQ("id", currentAttribute->getName().c_str());
- currentAttribute = *std::next(dialogNode.getAttributes().begin(), 2);
- ASSERT_STREQ("assets", currentAttribute->getName().c_str());
- // add tasks after assets
- ASSERT_TRUE(dialogNode.addAttributeAfter(std::make_shared<ls_std::XMLAttribute>("tasks"), "assets"));
- currentAttribute = *std::next(dialogNode.getAttributes().begin(), 0);
- ASSERT_STREQ("events", currentAttribute->getName().c_str());
- currentAttribute = *std::next(dialogNode.getAttributes().begin(), 1);
- ASSERT_STREQ("id", currentAttribute->getName().c_str());
- currentAttribute = *std::next(dialogNode.getAttributes().begin(), 2);
- ASSERT_STREQ("assets", currentAttribute->getName().c_str());
- currentAttribute = *std::next(dialogNode.getAttributes().begin(), 3);
- ASSERT_STREQ("tasks", currentAttribute->getName().c_str());
- }
- TEST_F(XMLNodeTest, addAttributeAfterNegative)
- {
- ls_std::XMLNode dialogNode {"dialog"};
- dialogNode.addAttributeToEnd(std::make_shared<ls_std::XMLAttribute>("events"));
- ASSERT_FALSE(dialogNode.addAttributeAfter(std::make_shared<ls_std::XMLAttribute>("id"), "assets"));
- }
- TEST_F(XMLNodeTest, addAttributeBefore)
- {
- ls_std::XMLNode dialogNode {"dialog"};
- std::shared_ptr<ls_std::XMLAttribute> currentAttribute {};
- dialogNode.addAttributeToEnd(std::make_shared<ls_std::XMLAttribute>("events"));
- dialogNode.addAttributeToEnd(std::make_shared<ls_std::XMLAttribute>("assets"));
- currentAttribute = *std::next(dialogNode.getAttributes().begin(), 0);
- ASSERT_STREQ("events", currentAttribute->getName().c_str());
- currentAttribute = *std::next(dialogNode.getAttributes().begin(), 1);
- ASSERT_STREQ("assets", currentAttribute->getName().c_str());
- // add id before events
- ASSERT_TRUE(dialogNode.addAttributeBefore(std::make_shared<ls_std::XMLAttribute>("id"), "events"));
- currentAttribute = *std::next(dialogNode.getAttributes().begin(), 0);
- ASSERT_STREQ("id", currentAttribute->getName().c_str());
- currentAttribute = *std::next(dialogNode.getAttributes().begin(), 1);
- ASSERT_STREQ("events", currentAttribute->getName().c_str());
- currentAttribute = *std::next(dialogNode.getAttributes().begin(), 2);
- ASSERT_STREQ("assets", currentAttribute->getName().c_str());
- // add tasks before assets
- ASSERT_TRUE(dialogNode.addAttributeBefore(std::make_shared<ls_std::XMLAttribute>("tasks"), "assets"));
- currentAttribute = *std::next(dialogNode.getAttributes().begin(), 0);
- ASSERT_STREQ("id", currentAttribute->getName().c_str());
- currentAttribute = *std::next(dialogNode.getAttributes().begin(), 1);
- ASSERT_STREQ("events", currentAttribute->getName().c_str());
- currentAttribute = *std::next(dialogNode.getAttributes().begin(), 2);
- ASSERT_STREQ("tasks", currentAttribute->getName().c_str());
- currentAttribute = *std::next(dialogNode.getAttributes().begin(), 3);
- ASSERT_STREQ("assets", currentAttribute->getName().c_str());
- }
- TEST_F(XMLNodeTest, addAttributeBeforeNegative)
- {
- ls_std::XMLNode dialogNode {"dialog"};
- dialogNode.addAttributeToEnd(std::make_shared<ls_std::XMLAttribute>("events"));
- ASSERT_FALSE(dialogNode.addAttributeBefore(std::make_shared<ls_std::XMLAttribute>("id"), "assets"));
- }
- TEST_F(XMLNodeTest, addAttributeToBeginning)
- {
- ls_std::XMLNode dialogNode {"dialog"};
- std::shared_ptr<ls_std::XMLAttribute> currentAttribute {};
- dialogNode.addAttributeToBeginning(std::make_shared<ls_std::XMLAttribute>("id"));
- ASSERT_EQ(1, dialogNode.getAttributes().size());
- currentAttribute = *std::next(dialogNode.getAttributes().begin(), 0);
- ASSERT_STREQ("id", currentAttribute->getName().c_str());
- dialogNode.addAttributeToBeginning(std::make_shared<ls_std::XMLAttribute>("assets"));
- ASSERT_EQ(2, dialogNode.getAttributes().size());
- currentAttribute = *std::next(dialogNode.getAttributes().begin(), 0);
- ASSERT_STREQ("assets", currentAttribute->getName().c_str());
- currentAttribute = *std::next(dialogNode.getAttributes().begin(), 1);
- ASSERT_STREQ("id", currentAttribute->getName().c_str());
- dialogNode.addAttributeToBeginning(std::make_shared<ls_std::XMLAttribute>("events"));
- ASSERT_EQ(3, dialogNode.getAttributes().size());
- currentAttribute = *std::next(dialogNode.getAttributes().begin(), 0);
- ASSERT_STREQ("events", currentAttribute->getName().c_str());
- currentAttribute = *std::next(dialogNode.getAttributes().begin(), 1);
- ASSERT_STREQ("assets", currentAttribute->getName().c_str());
- currentAttribute = *std::next(dialogNode.getAttributes().begin(), 2);
- ASSERT_STREQ("id", currentAttribute->getName().c_str());
- }
- TEST_F(XMLNodeTest, addAttributeToEnd)
- {
- ls_std::XMLNode dialogNode {"dialog"};
- std::shared_ptr<ls_std::XMLAttribute> currentAttribute {};
- dialogNode.addAttributeToEnd(std::make_shared<ls_std::XMLAttribute>("id"));
- ASSERT_EQ(1, dialogNode.getAttributes().size());
- currentAttribute = *std::next(dialogNode.getAttributes().begin(), 0);
- ASSERT_STREQ("id", currentAttribute->getName().c_str());
- dialogNode.addAttributeToEnd(std::make_shared<ls_std::XMLAttribute>("assets"));
- ASSERT_EQ(2, dialogNode.getAttributes().size());
- currentAttribute = *std::next(dialogNode.getAttributes().begin(), 0);
- ASSERT_STREQ("id", currentAttribute->getName().c_str());
- currentAttribute = *std::next(dialogNode.getAttributes().begin(), 1);
- ASSERT_STREQ("assets", currentAttribute->getName().c_str());
- dialogNode.addAttributeToEnd(std::make_shared<ls_std::XMLAttribute>("events"));
- ASSERT_EQ(3, dialogNode.getAttributes().size());
- currentAttribute = *std::next(dialogNode.getAttributes().begin(), 0);
- ASSERT_STREQ("id", currentAttribute->getName().c_str());
- currentAttribute = *std::next(dialogNode.getAttributes().begin(), 1);
- ASSERT_STREQ("assets", currentAttribute->getName().c_str());
- currentAttribute = *std::next(dialogNode.getAttributes().begin(), 2);
- ASSERT_STREQ("events", currentAttribute->getName().c_str());
- }
- 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, addChildAfterNegative)
- {
- ls_std::XMLNode dialogsNode {"dialogs"};
- 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");
- ASSERT_FALSE(dialogsNode.addChildAfter(dialogNodeA, dialogNodeB));
- }
- 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, clearValue)
- {
- ls_std::XMLNode dialogNode {"dialog"};
- dialogNode.setValue("Something");
- ASSERT_STREQ("Something", dialogNode.getValue().c_str());
- dialogNode.clearValue();
- ASSERT_TRUE(dialogNode.getValue().empty());
- ASSERT_STREQ("", dialogNode.getValue().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, getValue)
- {
- ls_std::XMLNode dialogNode {"dialog"};
- ASSERT_TRUE(dialogNode.getValue().empty());
- }
- TEST_F(XMLNodeTest, hasAttribute)
- {
- ls_std::XMLNode dialogNode {"dialogNode"};
- dialogNode.addAttributeToEnd(std::make_shared<ls_std::XMLAttribute>("id"));
- dialogNode.addAttributeToEnd(std::make_shared<ls_std::XMLAttribute>("events"));
- dialogNode.addAttributeToEnd(std::make_shared<ls_std::XMLAttribute>("assets"));
- ASSERT_TRUE(dialogNode.hasAttribute("id"));
- ASSERT_TRUE(dialogNode.hasAttribute("events"));
- ASSERT_TRUE(dialogNode.hasAttribute("assets"));
- }
- TEST_F(XMLNodeTest, hasAttributeNegative)
- {
- ls_std::XMLNode dialogNode {"dialogNode"};
- dialogNode.addAttributeToEnd(std::make_shared<ls_std::XMLAttribute>("id"));
- dialogNode.addAttributeToEnd(std::make_shared<ls_std::XMLAttribute>("events"));
- dialogNode.addAttributeToEnd(std::make_shared<ls_std::XMLAttribute>("assets"));
- ASSERT_FALSE(dialogNode.hasAttribute("fields"));
- }
- TEST_F(XMLNodeTest, hasChild)
- {
- ls_std::XMLNode dialogsNode {"dialogsNode"};
- dialogsNode.addChildToEnd(std::make_shared<ls_std::XMLNode>("dialogA"));
- dialogsNode.addChildToEnd(std::make_shared<ls_std::XMLNode>("dialogB"));
- dialogsNode.addChildToEnd(std::make_shared<ls_std::XMLNode>("dialogC"));
- ASSERT_TRUE(dialogsNode.hasChild("dialogA"));
- ASSERT_TRUE(dialogsNode.hasChild("dialogB"));
- ASSERT_TRUE(dialogsNode.hasChild("dialogC"));
- }
- TEST_F(XMLNodeTest, hasChildNegative)
- {
- ls_std::XMLNode dialogsNode {"dialogsNode"};
- dialogsNode.addChildToEnd(std::make_shared<ls_std::XMLNode>("dialogA"));
- dialogsNode.addChildToEnd(std::make_shared<ls_std::XMLNode>("dialogB"));
- dialogsNode.addChildToEnd(std::make_shared<ls_std::XMLNode>("dialogC"));
- ASSERT_FALSE(dialogsNode.hasChild("dialogD"));
- ASSERT_FALSE(dialogsNode.hasChild("dialogE"));
- ASSERT_FALSE(dialogsNode.hasChild("dialogF"));
- }
- TEST_F(XMLNodeTest, hasChildV2)
- {
- ls_std::XMLNode dialogsNode {"dialogsNode"};
- std::shared_ptr<ls_std::XMLNode> searchNode = std::make_shared<ls_std::XMLNode>("dialogB");
- dialogsNode.addChildToEnd(std::make_shared<ls_std::XMLNode>("dialogA"));
- dialogsNode.addChildToEnd(searchNode);
- dialogsNode.addChildToEnd(std::make_shared<ls_std::XMLNode>("dialogC"));
- ASSERT_TRUE(dialogsNode.hasChild(searchNode));
- }
- TEST_F(XMLNodeTest, hasChildV2Negative)
- {
- ls_std::XMLNode dialogsNode {"dialogsNode"};
- std::shared_ptr<ls_std::XMLNode> searchNode = std::make_shared<ls_std::XMLNode>("dialogB");
- dialogsNode.addChildToEnd(std::make_shared<ls_std::XMLNode>("dialogA"));
- dialogsNode.addChildToEnd(std::make_shared<ls_std::XMLNode>("dialogC"));
- ASSERT_FALSE(dialogsNode.hasChild(searchNode));
- }
- TEST_F(XMLNodeTest, removeFirstAttribute)
- {
- ls_std::XMLNode dialogNode {"dialog"};
- std::shared_ptr<ls_std::XMLAttribute> currentAttribute {};
- dialogNode.addAttributeToEnd(std::make_shared<ls_std::XMLAttribute>("id"));
- dialogNode.addAttributeToEnd(std::make_shared<ls_std::XMLAttribute>("events"));
- dialogNode.addAttributeToEnd(std::make_shared<ls_std::XMLAttribute>("assets"));
- ASSERT_TRUE(!dialogNode.getAttributes().empty());
- ASSERT_EQ(3, dialogNode.getAttributes().size());
- dialogNode.removeFirstAttribute();
- ASSERT_EQ(2, dialogNode.getAttributes().size());
- currentAttribute = *std::next(dialogNode.getAttributes().begin(), 0);
- ASSERT_STREQ("events", currentAttribute->getName().c_str());
- currentAttribute = *std::next(dialogNode.getAttributes().begin(), 1);
- ASSERT_STREQ("assets", currentAttribute->getName().c_str());
- }
- TEST_F(XMLNodeTest, removeFirstAttributeNegative)
- {
- ls_std::XMLNode dialogNode {"dialog"};
- ASSERT_TRUE(dialogNode.getAttributes().empty());
- dialogNode.removeFirstAttribute();
- ASSERT_TRUE(dialogNode.getAttributes().empty());
- }
- TEST_F(XMLNodeTest, removeLastAttribute)
- {
- ls_std::XMLNode dialogNode {"dialog"};
- std::shared_ptr<ls_std::XMLAttribute> currentAttribute {};
- dialogNode.addAttributeToEnd(std::make_shared<ls_std::XMLAttribute>("id"));
- dialogNode.addAttributeToEnd(std::make_shared<ls_std::XMLAttribute>("events"));
- dialogNode.addAttributeToEnd(std::make_shared<ls_std::XMLAttribute>("assets"));
- ASSERT_TRUE(!dialogNode.getAttributes().empty());
- ASSERT_EQ(3, dialogNode.getAttributes().size());
- dialogNode.removeLastAttribute();
- ASSERT_EQ(2, dialogNode.getAttributes().size());
- currentAttribute = *std::next(dialogNode.getAttributes().begin(), 0);
- ASSERT_STREQ("id", currentAttribute->getName().c_str());
- currentAttribute = *std::next(dialogNode.getAttributes().begin(), 1);
- ASSERT_STREQ("events", currentAttribute->getName().c_str());
- }
- TEST_F(XMLNodeTest, removeLastAttributeNegative)
- {
- ls_std::XMLNode dialogNode {"dialog"};
- ASSERT_TRUE(dialogNode.getAttributes().empty());
- dialogNode.removeLastAttribute();
- ASSERT_TRUE(dialogNode.getAttributes().empty());
- }
- TEST_F(XMLNodeTest, removeFirstChild)
- {
- ls_std::XMLNode dialogsNode {"dialogs"};
- std::shared_ptr<ls_std::XMLNode> currentNode {};
- // preparation
- ASSERT_TRUE(dialogsNode.addChildToEnd(std::make_shared<ls_std::XMLNode>("dialogA")));
- ASSERT_TRUE(dialogsNode.addChildToEnd(std::make_shared<ls_std::XMLNode>("dialogB")));
- ASSERT_TRUE(dialogsNode.addChildToEnd(std::make_shared<ls_std::XMLNode>("dialogC")));
- ASSERT_TRUE(dialogsNode.addChildToEnd(std::make_shared<ls_std::XMLNode>("additionalInfo")));
- ASSERT_TRUE(dialogsNode.addChildToEnd(std::make_shared<ls_std::XMLNode>("event")));
- ASSERT_EQ(5, dialogsNode.getChildren().size());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 0);
- ASSERT_STREQ("dialogA", currentNode->getName().c_str());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 1);
- ASSERT_STREQ("dialogB", currentNode->getName().c_str());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 2);
- ASSERT_STREQ("dialogC", currentNode->getName().c_str());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 3);
- ASSERT_STREQ("additionalInfo", currentNode->getName().c_str());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 4);
- ASSERT_STREQ("event", currentNode->getName().c_str());
- // check
- dialogsNode.removeFirstChild();
- currentNode = *std::next(dialogsNode.getChildren().begin(), 0);
- ASSERT_STREQ("dialogB", currentNode->getName().c_str());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 1);
- ASSERT_STREQ("dialogC", currentNode->getName().c_str());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 2);
- ASSERT_STREQ("additionalInfo", currentNode->getName().c_str());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 3);
- 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"};
- std::shared_ptr<ls_std::XMLNode> currentNode {};
- // preparation
- ASSERT_TRUE(dialogsNode.addChildToEnd(std::make_shared<ls_std::XMLNode>("dialogA")));
- ASSERT_TRUE(dialogsNode.addChildToEnd(std::make_shared<ls_std::XMLNode>("dialogB")));
- ASSERT_TRUE(dialogsNode.addChildToEnd(std::make_shared<ls_std::XMLNode>("dialogC")));
- ASSERT_TRUE(dialogsNode.addChildToEnd(std::make_shared<ls_std::XMLNode>("additionalInfo")));
- ASSERT_TRUE(dialogsNode.addChildToEnd(std::make_shared<ls_std::XMLNode>("event")));
- ASSERT_EQ(5, dialogsNode.getChildren().size());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 0);
- ASSERT_STREQ("dialogA", currentNode->getName().c_str());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 1);
- ASSERT_STREQ("dialogB", currentNode->getName().c_str());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 2);
- ASSERT_STREQ("dialogC", currentNode->getName().c_str());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 3);
- ASSERT_STREQ("additionalInfo", currentNode->getName().c_str());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 4);
- ASSERT_STREQ("event", currentNode->getName().c_str());
- // check
- dialogsNode.removeLastChild();
- currentNode = *std::next(dialogsNode.getChildren().begin(), 0);
- ASSERT_STREQ("dialogA", currentNode->getName().c_str());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 1);
- ASSERT_STREQ("dialogB", currentNode->getName().c_str());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 2);
- ASSERT_STREQ("dialogC", currentNode->getName().c_str());
- currentNode = *std::next(dialogsNode.getChildren().begin(), 3);
- 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"};
- dialogNode.setName("dialog2");
- ASSERT_STREQ("dialog2", dialogNode.getName().c_str());
- }
- TEST_F(XMLNodeTest, setValue)
- {
- ls_std::XMLNode dialogNode {"dialog"};
- dialogNode.setValue("Something written");
- ASSERT_STREQ("Something written", dialogNode.getValue().c_str());
- }
- TEST_F(XMLNodeTest, toXML)
- {
- auto root = ls_std_test::TestDataFactory::createXMLContent();
- std::string xmlContent = root->toXML();
- std::string expectedXMLContent = R"("<dialog name="dungeon_001"><dialogUnit id="001"><text>Hello!</text></dialogUnit><dialogUnit id="002"><text>Hello again!</text></dialogUnit></dialog>")";
- ASSERT_TRUE(!xmlContent.empty());
- }
- }
|