TEST (RwXML, Attributes) { XMLManager::uptr_t mgr(xml_manager_create_xerces()); TEST_DESCRIPTION ("Test Attribute support in RW XML"); XMLDocument::uptr_t doc(mgr->create_document()); ASSERT_TRUE(doc.get()); XMLNode *root = doc->get_root_node(); ASSERT_TRUE (root); XMLNode *child_1 = root->add_child("level1_1"); ASSERT_TRUE (child_1); XMLNode *child_2 = root->add_child("level1_2"); ASSERT_TRUE (child_2); XMLNodeList::uptr_t list_1(doc->get_elements ("level1_1")); ASSERT_TRUE (list_1.get()); ASSERT_EQ (1, list_1->length()); XMLNode *dup = list_1->at(0); ASSERT_EQ (dup, child_1); list_1 = root->get_children(); ASSERT_EQ (2, list_1->length()); XMLNode *ns_child_1 = root->add_child("level1_1", nullptr, "rwtest/NS-1", "NS1"); ASSERT_TRUE (ns_child_1); XMLNode *ns_child_2 = root->add_child("level1_2", nullptr, "rwtest/NS-1", "NS1"); ASSERT_TRUE (ns_child_2); list_1 = std::move(doc->get_elements ("level1_1")); ASSERT_TRUE (list_1.get()); ASSERT_EQ (1, list_1->length()); XMLAttributeList::uptr_t list_a1(child_1->get_attributes()); ASSERT_TRUE (list_a1.get()); ASSERT_EQ (0, list_a1->length()); child_1->set_attribute("attr1", "value1"); const char *ns = "http://www.riftio.com/namespace"; child_1->set_attribute("attr2", "value2", ns, "ns"); ASSERT_TRUE (child_1->has_attributes()); ASSERT_TRUE (child_1->has_attribute("attr1")); //XMLAttribute::uptr_t attr = std::move(child_1->get_attribute("attr1")); //ASSERT_NE (nullptr, attr.get()); list_a1 = std::move(child_1->get_attributes()); ASSERT_TRUE (list_a1.get()); ASSERT_EQ (2, list_a1->length()); #if 0 for (uint32_t i = 0; i < list_a1->length(); i++) { XMLAttribute *attr = list_a1->at(i); std::cout << attr->get_node_name().c_str() << " : " << attr->get_value().c_str() << std::endl; } #endif EXPECT_STREQ(list_a1->at(0)->get_local_name().c_str(), "attr1"); EXPECT_STREQ(list_a1->at(0)->get_value().c_str(), "value1"); EXPECT_STREQ(list_a1->at(1)->get_local_name().c_str(), "attr2"); EXPECT_STREQ(list_a1->at(1)->get_prefix().c_str(), "ns"); EXPECT_STREQ(list_a1->at(1)->get_text_value().c_str(), "value2"); EXPECT_STREQ(list_a1->at(1)->get_name_space().c_str(), "http://www.riftio.com/namespace"); EXPECT_STREQ(list_a1->at(1)->get_value().c_str(), "value2"); child_2->set_attribute("attr3", "value3"); child_2->set_attribute("attr4", "value4"); child_2->set_attribute("attr5", "value5"); XMLAttributeList::uptr_t list_a2(child_2->get_attributes()); ASSERT_TRUE (list_a2.get()); ASSERT_EQ (3, list_a2->length()); std::string tmp_str; std::string exp_str = "<data xmlns=\"http://riftio.com/ns/riftware-1.0/rw-base\"><level1_1 attr1=\"value1\" xmlns:ns=\"http://www.riftio.com/namespace\" ns:attr2=\"value2\"/><level1_2 attr3=\"value3\" attr4=\"value4\" attr5=\"value5\"/><NS1:level1_1 xmlns:NS1=\"rwtest/NS-1\"/><NS1:level1_2 xmlns:NS1=\"rwtest/NS-1\"/></data>"; tmp_str = doc->to_string(); ASSERT_EQ (tmp_str, exp_str); }