/*---------------------------------------------------------------------- | TestRegression +---------------------------------------------------------------------*/ static void TestRegression() { // test for a bug found when the XML parser would try // to compare a null prefix NPT_XmlElementNode* element = new NPT_XmlElementNode("hello"); element->SetAttribute("ns", "foo", "6"); element->SetAttribute("foo", "5"); element->SetAttribute("ns", "foo", "7"); element->SetAttribute("foo", "8"); element->SetNamespaceUri("ns", "blabla"); CHECK(*element->GetAttribute("foo") == "8"); CHECK(*element->GetAttribute("foo", "blabla") == "7"); delete element; }
/*---------------------------------------------------------------------- | TestFinders +---------------------------------------------------------------------*/ static void TestFinders() { const char* xml = "<a b='foo' c='bar' ns:b='bla' ns:d='123' xmlns:ns='ns-uri' xmlns:ns1='ns1-uri' xmlns:ns2='ns2-uri' xmlns:ns3='ns3-uri'><b xmlns='ns4-uri' ba='123' ns2:bo='345'></b><b ba='123' ns2:bo='345'></b><ns2:b></ns2:b><ns1:b></ns1:b></a>"; NPT_XmlParser parser; NPT_XmlNode* root; CHECK(NPT_SUCCEEDED(parser.Parse(xml, root))); NPT_XmlElementNode* elem = root->AsElementNode(); const NPT_String* attr = elem->GetAttribute("d"); CHECK(attr == NULL); attr = elem->GetAttribute("b"); CHECK(attr != NULL && *attr == "foo"); attr = elem->GetAttribute("b", "ns-uri"); CHECK(attr != NULL && *attr == "bla"); attr = elem->GetAttribute("c", NPT_XML_ANY_NAMESPACE); CHECK(attr != NULL && *attr == "bar"); attr = elem->GetAttribute("b", NPT_XML_ANY_NAMESPACE); CHECK(attr != NULL && *attr == "foo"); attr = elem->GetAttribute("b", "boubou"); CHECK(attr == NULL); attr = elem->GetAttribute("d", NPT_XML_NO_NAMESPACE); CHECK(attr == NULL); NPT_XmlElementNode* child; child = elem->GetChild("b"); CHECK(child != NULL && *child->GetAttribute("ba") == "123"); child = elem->GetChild("b", "ns4-uri"); CHECK(child != NULL && child->GetAttribute("ba", "ns4-uri") == NULL); CHECK(child != NULL && *child->GetAttribute("bo", NPT_XML_ANY_NAMESPACE) == "345"); CHECK(child != NULL && child->GetAttribute("bo", NPT_XML_NO_NAMESPACE) == NULL); CHECK(child != NULL && child->GetAttribute("bo", "foo") == NULL); CHECK(child != NULL && *child->GetAttribute("bo", "ns2-uri") == "345"); child = elem->GetChild("b", NPT_XML_ANY_NAMESPACE); CHECK(child != NULL && *child->GetNamespace() == "ns4-uri"); child = elem->GetChild("b", "ns2-uri"); CHECK(child != NULL && *child->GetNamespace() == "ns2-uri"); child = elem->GetChild("b", "boubou"); CHECK(child == NULL); delete root; }