@@ -18,11 +18,11 @@ #import "OFArray.h" #import "OFAutoreleasePool.h" #import "OFString.h" #import "OFExceptions.h" -#import "main.h" +#import "TestsAppDelegate.h" static OFString *module = @"OFXMLParser"; static int i = 0; enum event_type { @@ -30,13 +30,18 @@ TAG_END, STRING, COMMENT }; -static void -callback(enum event_type et, OFString *name, OFString *prefix, OFString *ns, - OFArray *attrs, OFString *string, OFString *comment) +@implementation TestsAppDelegate (OFXMLParser) +- (void)xmlParserCallbackWithEventType: (enum event_type)et + name: (OFString*)name + prefix: (OFString*)prefix + namespace: (OFString*)ns + attributes: (OFArray*)attrs + string: (OFString*)string + comment: (OFString*)comment { OFString *msg; id *carray; size_t count; @@ -114,41 +119,61 @@ TEST(msg, NO) break; } } -@interface ParserDelegate: OFObject -@end - -@implementation ParserDelegate - (void)xmlParser: (OFXMLParser*)parser didStartTagWithName: (OFString*)name prefix: (OFString*)prefix namespace: (OFString*)ns attributes: (OFArray*)attrs { - callback(TAG_START, name, prefix, ns, attrs, nil, nil); + [self xmlParserCallbackWithEventType: TAG_START + name: name + prefix: prefix + namespace: ns + attributes: attrs + string: nil + comment: nil]; } - (void)xmlParser: (OFXMLParser*)parser didEndTagWithName: (OFString*)name prefix: (OFString*)prefix namespace: (OFString*)ns { - callback(TAG_END, name, prefix, ns, nil, nil, nil); + [self xmlParserCallbackWithEventType: TAG_END + name: name + prefix: prefix + namespace: ns + attributes: nil + string: nil + comment: nil]; } - (void)xmlParser: (OFXMLParser*)parser foundString: (OFString*)string { - callback(STRING, nil, nil, nil, nil, string, nil); + [self xmlParserCallbackWithEventType: STRING + name: nil + prefix: nil + namespace: nil + attributes: nil + string: string + comment: nil]; } - (void)xmlParser: (OFXMLParser*)parser foundComment: (OFString*)comment { - callback(COMMENT, nil, nil, nil, nil, nil, comment); + [self xmlParserCallbackWithEventType: COMMENT + name: nil + prefix: nil + namespace: nil + attributes: nil + string: nil + comment: comment]; } - (OFString*)xmlParser: (OFXMLParser*)parser foundUnknownEntityNamed: (OFString*)entity { @@ -155,14 +180,12 @@ if ([entity isEqual: @"foo"]) return @"foobar"; return nil; } -@end -void -xmlparser_tests() +- (void)XMLParserTests { OFAutoreleasePool *pool = [[OFAutoreleasePool alloc] init]; OFXMLParser *parser; const char *str = "bar\r\n" "foo<barbar quxbar\r\n" @@ -169,12 +192,11 @@ ""; size_t j, len; TEST(@"+[xmlParser]", (parser = [OFXMLParser xmlParser])) - TEST(@"-[setDelegate:]", - [parser setDelegate: [[[ParserDelegate alloc] init] autorelease]]) + TEST(@"-[setDelegate:]", [parser setDelegate: self]) /* Simulate a stream where we only get chunks */ len = strlen(str); for (j = 0; j < len; j+= 2) { @@ -188,5 +210,6 @@ TEST(@"Checking if everything was parsed", i == 11) [pool drain]; } +@end