@@ -13,125 +13,194 @@
* file.
*/
#include "config.h"
-#import "TestsAppDelegate.h"
-
-static OFString *module;
-
-@implementation TestsAppDelegate (OFXMLNodeTests)
-- (void)XMLNodeTests
-{
- void *pool = objc_autoreleasePoolPush();
- id node1, node2, node3, node4;
- OFArray *array;
-
- module = @"OFXMLNode";
-
- TEST(@"+[elementWithName:]",
- (node1 = [OFXMLElement elementWithName: @"foo"]) &&
- [[node1 XMLString] isEqual: @""])
-
- TEST(@"+[elementWithName:stringValue:]",
- (node2 = [OFXMLElement elementWithName: @"foo"
- stringValue: @"b&ar"]) &&
- [[node2 XMLString] isEqual: @"b&ar"])
-
- TEST(@"+[elementWithName:namespace:]",
- (node3 = [OFXMLElement elementWithName: @"foo"
- namespace: @"urn:objfw:test"]) &&
- R([node3 addAttributeWithName: @"test" stringValue: @"test"]) &&
- R([node3 setPrefix: @"objfw-test"
- forNamespace: @"urn:objfw:test"]) &&
- [[node3 XMLString] isEqual: @""] &&
- (node4 = [OFXMLElement elementWithName: @"foo"
- namespace: @"urn:objfw:test"]) &&
- R([node4 addAttributeWithName: @"test" stringValue: @"test"]) &&
- [[node4 XMLString] isEqual:
- @""])
-
- TEST(@"+[elementWithName:namespace:stringValue:]",
- (node4 = [OFXMLElement elementWithName: @"foo"
- namespace: @"urn:objfw:test"
- stringValue: @"x"]) &&
- R([node4 setPrefix: @"objfw-test"
- forNamespace: @"urn:objfw:test"]) &&
- [[node4 XMLString] isEqual: @"x"])
-
- TEST(@"+[charactersWithString:]",
- (node4 = [OFXMLCharacters charactersWithString: @""]) &&
- [[node4 XMLString] isEqual: @"<foo>"])
-
- TEST(@"+[CDATAWithString:]",
- (node4 = [OFXMLCDATA CDATAWithString: @""]) &&
- [[node4 XMLString] isEqual: @"]]>"]);
-
- TEST(@"+[commentWithText:]",
- (node4 = [OFXMLComment commentWithText: @" comment "]) &&
- [[node4 XMLString] isEqual: @""])
-
- module = @"OFXMLElement";
-
- TEST(@"-[addAttributeWithName:stringValue:]",
- R([node1 addAttributeWithName: @"foo" stringValue: @"b&ar"]) &&
- [[node1 XMLString] isEqual: @""] &&
- R([node2 addAttributeWithName: @"foo" stringValue: @"b&ar"]) &&
- [[node2 XMLString] isEqual: @"b&ar"])
-
- TEST(@"-[setPrefix:forNamespace:]",
- R([node2 setPrefix: @"objfw-test"
- forNamespace: @"urn:objfw:test"]))
-
- TEST(@"-[addAttributeWithName:namespace:stringValue:]",
- R([node2 addAttributeWithName: @"foo"
- namespace: @"urn:objfw:test"
- stringValue: @"bar"]) &&
- R([node2 addAttributeWithName: @"foo"
- namespace: @"urn:objfw:test"
- stringValue: @"ignored"]) &&
- [[node2 XMLString] isEqual:
- @"b&ar"])
-
- TEST(@"-[removeAttributeForName:namespace:]",
- R([node2 removeAttributeForName: @"foo"]) &&
- [[node2 XMLString] isEqual:
- @"b&ar"] &&
- R([node2 removeAttributeForName: @"foo"
- namespace: @"urn:objfw:test"]) &&
- [[node2 XMLString] isEqual: @"b&ar"])
-
- TEST(@"-[addChild:]",
- R([node1 addChild: [OFXMLElement elementWithName: @"bar"]]) &&
- [[node1 XMLString] isEqual:
- @""] &&
- R([node3 addChild: [OFXMLElement elementWithName: @"bar"
- namespace: @"urn:objfw:test"]]) &&
- [[node3 XMLString] isEqual:
- @""])
-
- TEST(@"+[elementWithXMLString:] and -[stringValue]",
- [[[OFXMLElement elementWithXMLString:
+#import "ObjFW.h"
+#import "ObjFWTest.h"
+
+@interface OFXMLNodeTests: OTTestCase
+@end
+
+@implementation OFXMLNodeTests
+- (void)testElementWithName
+{
+ OTAssertEqualObjects(
+ [[OFXMLElement elementWithName: @"foo"] XMLString],
+ @"");
+}
+
+- (void)testElementWithNameStringValue
+{
+ OTAssertEqualObjects(
+ [[OFXMLElement elementWithName: @"foo"
+ stringValue: @"b&ar"] XMLString],
+ @"b&ar");
+}
+
+- (void)testElementWithNameNamespace
+{
+ OFXMLElement *element;
+
+ element = [OFXMLElement elementWithName: @"foo"
+ namespace: @"urn:objfw:test"];
+ [element addAttributeWithName: @"test" stringValue: @"test"];
+ [element setPrefix: @"objfw-test" forNamespace: @"urn:objfw:test"];
+ OTAssertEqualObjects(element.XMLString,
+ @"");
+
+ element = [OFXMLElement elementWithName: @"foo"
+ namespace: @"urn:objfw:test"];
+ [element addAttributeWithName: @"test" stringValue: @"test"];
+ OTAssertEqualObjects(element.XMLString,
+ @"");
+}
+
+- (void)testElementWithNameNamespaceStringValue
+{
+ OFXMLElement *element = [OFXMLElement elementWithName: @"foo"
+ namespace: @"urn:objfw:test"
+ stringValue: @"x"];
+ [element setPrefix: @"objfw-test" forNamespace: @"urn:objfw:test"];
+ OTAssertEqualObjects(element.XMLString,
+ @"x");
+}
+
+- (void)testElementWithXMLStringAndStringValue
+{
+ OTAssertEqualObjects([[OFXMLElement elementWithXMLString:
@"\r\nfoo"
- @"bazqux"] stringValue]
- isEqual: @"foobarbazqux"])
-
- TEST(@"-[elementsForName:namespace:]",
- (array = [node3 elementsForName: @"bar"
- namespace: @"urn:objfw:test"]) &&
- array.count == 1 && [[array.firstObject XMLString] isEqual:
- @""])
-
- TEST(@"-[isEqual:]",
- [[OFXMLElement elementWithXMLString: @""] isEqual:
- [OFXMLElement elementWithXMLString: @""]] &&
- [[OFXMLElement elementWithXMLString: @""] isEqual:
- [OFXMLElement elementWithXMLString: @""]])
-
- TEST(@"-[XMLStringWithIndentation:]",
- [[[OFXMLElement elementWithXMLString: @"a\nb"
- @""] XMLStringWithIndentation: 2] isEqual:
- @"\n \n a\nb\n \n \n"])
-
- objc_autoreleasePoolPop(pool);
+ @"bazqux"] stringValue],
+ @"foobarbazqux");
+}
+
+- (void)testCharactersWithString
+{
+ OTAssertEqualObjects(
+ [[OFXMLCharacters charactersWithString: @""] XMLString],
+ @"<foo>");
+}
+
+- (void)testCDATAWithString
+{
+ OTAssertEqualObjects(
+ [[OFXMLCDATA CDATAWithString: @""] XMLString],
+ @"]]>");
+}
+
+- (void)testCommentWithText
+{
+ OTAssertEqualObjects(
+ [[OFXMLComment commentWithText: @" comment "] XMLString],
+ @"");
+}
+
+- (void)testIsEqual
+{
+ OTAssertEqualObjects(
+ [OFXMLElement elementWithXMLString: @""],
+ [OFXMLElement elementWithXMLString: @""]);
+
+ OTAssertEqualObjects(
+ [OFXMLElement elementWithXMLString: @""],
+ [OFXMLElement elementWithXMLString: @""]);
+
+ OTAssertNotEqualObjects(
+ [OFXMLElement elementWithXMLString: @""],
+ [OFXMLElement elementWithXMLString: @""]);
+}
+
+- (void)testHash
+{
+ OTAssertEqual(
+ [[OFXMLElement elementWithXMLString: @""] hash],
+ [[OFXMLElement elementWithXMLString: @""]
+ hash]);
+
+ OTAssertEqual(
+ [[OFXMLElement elementWithXMLString: @""] hash],
+ [[OFXMLElement elementWithXMLString: @""] hash]);
+
+ OTAssertNotEqual(
+ [[OFXMLElement elementWithXMLString: @""] hash],
+ [[OFXMLElement elementWithXMLString: @""] hash]);
+}
+
+- (void)testAddAttributeWithNameStringValue
+{
+ OFXMLElement *element = [OFXMLElement elementWithName: @"foo"
+ stringValue: @"b&ar"];
+
+ [element setPrefix: @"objfw-test" forNamespace: @"urn:objfw:test"];
+ [element addAttributeWithName: @"foo"
+ stringValue: @"b&ar"];
+ [element addAttributeWithName: @"foo"
+ namespace: @"urn:objfw:test"
+ stringValue: @"bar"];
+
+ OTAssertEqualObjects(element.XMLString,
+ @"b&ar");
+}
+
+- (void)testRemoveAttributeForNameNamespace
+{
+ OFXMLElement *element = [OFXMLElement elementWithName: @"foo"
+ stringValue: @"b&ar"];
+
+ [element setPrefix: @"objfw-test" forNamespace: @"urn:objfw:test"];
+ [element addAttributeWithName: @"foo"
+ stringValue: @"b&ar"];
+ [element addAttributeWithName: @"foo"
+ namespace: @"urn:objfw:test"
+ stringValue: @"bar"];
+
+ [element removeAttributeForName: @"foo"];
+ OTAssertEqualObjects(element.XMLString,
+ @"b&ar");
+
+ [element removeAttributeForName: @"foo" namespace: @"urn:objfw:test"];
+ OTAssertEqualObjects(element.XMLString, @"b&ar");
+}
+
+- (void)testAddChild
+{
+ OFXMLElement *element;
+
+ element = [OFXMLElement elementWithName: @"foo"];
+ [element addAttributeWithName: @"foo" stringValue: @"b&ar"];
+ [element addChild: [OFXMLElement elementWithName: @"bar"]];
+ OTAssertEqualObjects(element.XMLString,
+ @"");
+
+ element = [OFXMLElement elementWithName: @"foo"
+ namespace: @"urn:objfw:test"];
+ [element setPrefix: @"objfw-test" forNamespace: @"urn:objfw:test"];
+ [element addAttributeWithName: @"test" stringValue: @"test"];
+ [element addChild: [OFXMLElement elementWithName: @"bar"
+ namespace: @"urn:objfw:test"]];
+ OTAssertEqualObjects(element.XMLString,
+ @"");
+}
+
+- (void)testElementsForNameNamespace
+{
+ OFXMLElement *element = [OFXMLElement elementWithName: @"foo"];
+ OFXMLElement *bar;
+
+ [element addChild: [OFXMLElement elementWithName: @"foo"]];
+ bar = [OFXMLElement elementWithName: @"bar"
+ namespace: @"urn:objfw:test"];
+ [element addChild: bar];
+
+ OTAssertEqualObjects([element elementsForName: @"bar"
+ namespace: @"urn:objfw:test"],
+ [OFArray arrayWithObject: bar]);
+}
+
+- (void)testXMLStringWithIndentation
+{
+ OTAssertEqualObjects([[OFXMLElement
+ elementWithXMLString: @"a\nb"]
+ XMLStringWithIndentation: 2],
+ @"\n \n a\nb\n \n \n");
}
@end