#import "ObjectTesting.h" #import #import #import int main() { NSAutoreleasePool *arp = [NSAutoreleasePool new]; NSXMLElement *root1; NSXMLElement *root2; NSXMLNode *attr1; NSXMLNode *attr2; NSXMLNode *attrSameNameAsAttr1; root1 = [[NSXMLElement alloc] initWithName: @"root1"]; root2 = [[NSXMLElement alloc] initWithName: @"root2"]; attr1 = [NSXMLNode attributeWithName: @"attr1" stringValue: @"foo"]; attr2 = [NSXMLNode attributeWithName: @"attr2" stringValue: @"foo"]; attrSameNameAsAttr1 = [NSXMLNode attributeWithName: @"attr1" stringValue: @"foo"]; PASS_RUNS([root1 addAttribute: attr1], "may add attributes"); [root1 addAttribute: attr2]; PASS_EQUAL([root1 attributeForName: @"attr1"], attr1, "element returns attribute by name"); PASS_RUNS([root1 removeAttributeForName: @"attr2"], "removing attributes by name works"); PASS_EQUAL([root1 attributeForName: @"attr2"], nil, "attribute is nil after removal"); [root1 addAttribute: attrSameNameAsAttr1]; PASS_EQUAL([root1 attributeForName: @"attr1"], attr1, "may not overwrite pre-existing attributes"); PASS_EXCEPTION([root2 addAttribute: attr1], NSInternalInconsistencyException, "cannot add attributes to multiple parents"); [root1 release]; [root2 release]; [arp release]; arp = nil; return 0; }