2012-02-20 03:40:15 +00:00
|
|
|
#import "ObjectTesting.h"
|
|
|
|
#import <Foundation/NSAutoreleasePool.h>
|
|
|
|
#import <Foundation/NSXMLDocument.h>
|
|
|
|
#import <Foundation/NSXMLElement.h>
|
|
|
|
|
|
|
|
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],
|
2012-03-05 22:48:18 +00:00
|
|
|
NSInternalInconsistencyException,
|
2012-02-20 03:40:15 +00:00
|
|
|
"cannot add attributes to multiple parents");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[root1 release];
|
|
|
|
[root2 release];
|
|
|
|
[arp release];
|
|
|
|
arp = nil;
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|