diff --git a/ChangeLog b/ChangeLog index ad37f0934..863be111d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2012-02-04 08:08-EST Gregory John Casamento + + * Source/NSXMLNode.m: minor fix in nodesForXPath:... don't + set error to NULL if it doesn't point to anything. + * Tests/base/NSXMLDocument/basic.m: Improved tests. + 2012-02-03 11:43-EST Gregory John Casamento * Source/NSXMLNode.m: Conditionally compile out code if diff --git a/Source/NSXMLNode.m b/Source/NSXMLNode.m index fd199ba0c..a14e27ce8 100644 --- a/Source/NSXMLNode.m +++ b/Source/NSXMLNode.m @@ -1415,7 +1415,10 @@ NSLog(@"RELEASING TRICKY EXTRA RETAIN in %@ now: %d", self, internal->externalRe - (NSArray*) nodesForXPath: (NSString*)anxpath error: (NSError**)error { - *error = NULL; + if(error != NULL) + { + *error = NULL; + } return execute_xpath(self, anxpath, NULL); } diff --git a/Tests/base/NSXMLDocument/basic.m b/Tests/base/NSXMLDocument/basic.m index 60893e640..ca539a3e3 100644 --- a/Tests/base/NSXMLDocument/basic.m +++ b/Tests/base/NSXMLDocument/basic.m @@ -6,8 +6,41 @@ int main() { NSAutoreleasePool *arp = [NSAutoreleasePool new]; + NSArray *nodes = nil; NSXMLDocument *node; NSXMLElement *elem; + NSString *documentXML = + @"" + @"" + @" " + @" Everyday Italian" + @" Giada De Laurentiis" + @" 2005" + @" 30.00" + @" " + @" " + @" Harry Potter" + @" J K. Rowling" + @" 2005" + @" 29.99" + @" " + @" " + @" XQuery Kick Start" + @" James McGovern" + @" Per Bothner" + @" Kurt Cagle" + @" James Linn" + @" Vaidyanathan Nagarajan" + @" 2003" + @" 49.99" + @" " + @" " + @" Learning XML" + @" Erik T. Ray" + @" 2003" + @" 39.95" + @" " + @""; node = [NSXMLDocument alloc]; PASS_EXCEPTION([node initWithData: nil options: 0 error: 0], @@ -35,10 +68,27 @@ int main() PASS_RUNS([node setRootElement: nil], "setting a nil root is ignored"); PASS_EQUAL([node rootElement], elem, "root element remains"); + node = [[NSXMLDocument alloc] initWithXMLString:documentXML + options:0 + error:NULL]; + elem = [node rootElement]; + PASS(node != nil, "document was initialized from a string"); + PASS_EQUAL([node rootElement], elem, "root element is correct"); + PASS_EQUAL([elem name],@"bookstore", "root element is bookstore"); + + nodes = [node nodesForXPath:@"/bookstore/book" error:NULL]; + PASS([nodes count] == 4, + "Xpath function returns the correct number of elements (4)"); + elem = [nodes objectAtIndex: 0]; + PASS_EQUAL([elem class],[NSXMLElement class], + "first node in Xpath result is an element"); + PASS([[elem name] isEqualToString: @"book"], + "Got the correct elements from XPath query"); + [arp release]; arp = nil; - [elem release]; - [node release]; + // [elem release]; + // [node release]; return 0; }