~ubuntu-branches/ubuntu/wily/gnustep-base/wily

« back to all changes in this revision

Viewing changes to Tests/base/NSXMLParser/parse.m

  • Committer: Package Import Robot
  • Author(s): Yavor Doganov
  • Date: 2011-09-15 12:31:15 UTC
  • mfrom: (1.2.11 upstream) (8.1.4 experimental)
  • Revision ID: package-import@ubuntu.com-20110915123115-rmvsia9z0211izvq
Tags: 1.22.1-1
* New upstream release:
  + Fixes implicit declaration of function (Closes: #629216).
* debian/rules (v_make): Set to 2.6.1.
  (install-common): Do not delete non-existent .swp file.
* debian/control.m4 (Build-Depends): Remove gobjc; gnustep-make now
  depends on it.
  (libgnustep-base-dev) <Depends>: Likewise.
  (Suggests): Remove; completely pointless.
* debian/control: Regenerate.
* debian/patches/avoid-nsl-linkage.patch: Refresh.
* debian/patches/autoreconf.patch: Regenerate.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#import "ObjectTesting.h"
 
2
#import <Foundation/NSAutoreleasePool.h>
 
3
#import <Foundation/NSFileManager.h>
 
4
#import <Foundation/NSUserDefaults.h>
 
5
#import <Foundation/NSXMLParser.h>
 
6
#include <string.h>
 
7
 
 
8
@interface      Handler : NSObject
 
9
{
 
10
  NSMutableString       *s;
 
11
}
 
12
 
 
13
- (void)parserDidStartDocument: (NSXMLParser *)parser;
 
14
- (void)parserDidEndDocument: (NSXMLParser *)parser;
 
15
- (void)parser: (NSXMLParser *)parser foundNotationDeclarationWithName: (NSString *)name publicID: (NSString *)publicID systemID: (NSString *)systemID;
 
16
- (void)parser: (NSXMLParser *)parser foundUnparsedEntityDeclarationWithName: (NSString *)name publicID: (NSString *)publicID systemID: (NSString *)systemID notationName: (NSString *)notationName;
 
17
- (void)parser: (NSXMLParser *)parser foundAttributeDeclarationWithName: (NSString *)attributeName forElement: (NSString *)elementName type: (NSString *)type defaultValue: (NSString *)defaultValue;
 
18
- (void)parser: (NSXMLParser *)parser foundElementDeclarationWithName: (NSString *)elementName model: (NSString *)model;
 
19
 
 
20
- (void)parser: (NSXMLParser *)parser foundInternalEntityDeclarationWithName: (NSString *)name value: (NSString *)value;
 
21
 
 
22
- (void)parser: (NSXMLParser *)parser foundExternalEntityDeclarationWithName: (NSString *)name publicID: (NSString *)publicID systemID: (NSString *)systemID;
 
23
 
 
24
- (void)parser: (NSXMLParser *)parser didStartElement: (NSString *)elementName namespaceURI: (NSString *)namespaceURI qualifiedName: (NSString *)qName attributes: (NSDictionary *)attributeDict;
 
25
- (void)parser: (NSXMLParser *)parser didEndElement: (NSString *)elementName namespaceURI: (NSString *)namespaceURI qualifiedName: (NSString *)qName;
 
26
- (void)parser: (NSXMLParser *)parser didStartMappingPrefix: (NSString *)prefix toURI: (NSString *)namespaceURI;
 
27
- (void)parser: (NSXMLParser *)parser didEndMappingPrefix: (NSString *)prefix;
 
28
- (void)parser: (NSXMLParser *)parser foundCharacters: (NSString *)string;
 
29
- (void)parser: (NSXMLParser *)parser foundIgnorableWhitespace: (NSString *)whitespaceString;
 
30
- (void)parser: (NSXMLParser *)parser foundProcessingInstructionWithTarget: (NSString *)target data: (NSString *)data;
 
31
- (void)parser: (NSXMLParser *)parser foundComment: (NSString *)comment;
 
32
- (void)parser: (NSXMLParser *)parser foundCDATA: (NSData *)CDATABlock;
 
33
- (NSData *)parser: (NSXMLParser *)parser resolveExternalEntityName: (NSString *)name systemID: (NSString *)systemID;
 
34
- (void)parser: (NSXMLParser *)parser parseErrorOccurred: (NSError *)parseError;
 
35
- (void)parser: (NSXMLParser *)parser validationErrorOccurred: (NSError *)validationError;
 
36
@end
 
37
 
 
38
@implementation Handler
 
39
 
 
40
- (void) dealloc
 
41
{
 
42
  [s release];
 
43
  [super dealloc];
 
44
}
 
45
 
 
46
- (NSString*) description
 
47
{
 
48
  return s;
 
49
}
 
50
 
 
51
- (id) init
 
52
{
 
53
  s = [NSMutableString new];
 
54
  return self;
 
55
}
 
56
 
 
57
- (void) parserDidStartDocument: (NSXMLParser *)parser
 
58
{
 
59
  [s appendFormat: @"%@\n", NSStringFromSelector(_cmd)];
 
60
}
 
61
 
 
62
- (void) parserDidEndDocument: (NSXMLParser *)parser
 
63
{
 
64
  [s appendFormat: @"%@\n", NSStringFromSelector(_cmd)];
 
65
}
 
66
 
 
67
- (void) parser: (NSXMLParser *)parser
 
68
  foundNotationDeclarationWithName: (NSString *)name
 
69
  publicID: (NSString *)publicID
 
70
  systemID: (NSString *)systemID
 
71
{
 
72
  [s appendFormat: @"%@ %@ %@ %@\n", NSStringFromSelector(_cmd), name,
 
73
    publicID, systemID];
 
74
}
 
75
 
 
76
- (void) parser: (NSXMLParser *)parser
 
77
  foundUnparsedEntityDeclarationWithName: (NSString *)name
 
78
  publicID: (NSString *)publicID
 
79
  systemID: (NSString *)systemID
 
80
  notationName: (NSString *)notationName
 
81
{
 
82
  [s appendFormat: @"%@ %@ %@ %@ %@\n", NSStringFromSelector(_cmd), name,
 
83
    publicID, systemID, notationName];
 
84
}
 
85
 
 
86
- (void) parser: (NSXMLParser *)parser
 
87
  foundAttributeDeclarationWithName: (NSString *)attributeName
 
88
  forElement: (NSString *)elementName
 
89
  type: (NSString *)type
 
90
  defaultValue: (NSString *)defaultValue
 
91
{
 
92
  [s appendFormat: @"%@ %@ %@ %@ %@\n", NSStringFromSelector(_cmd),
 
93
    attributeName, elementName, type, defaultValue];
 
94
}
 
95
 
 
96
- (void) parser: (NSXMLParser *)parser
 
97
  foundElementDeclarationWithName: (NSString *)elementName
 
98
  model: (NSString *)model
 
99
{
 
100
  [s appendFormat: @"%@ %@ %@\n", NSStringFromSelector(_cmd),
 
101
    elementName, model];
 
102
}
 
103
 
 
104
 
 
105
- (void) parser: (NSXMLParser *)parser
 
106
  foundInternalEntityDeclarationWithName: (NSString *)name
 
107
  value: (NSString *)value
 
108
{
 
109
  [s appendFormat: @"%@ %@ %@\n", NSStringFromSelector(_cmd),
 
110
    name, value];
 
111
}
 
112
 
 
113
 
 
114
- (void) parser: (NSXMLParser *)parser
 
115
  foundExternalEntityDeclarationWithName: (NSString *)name
 
116
  publicID: (NSString *)publicID
 
117
  systemID: (NSString *)systemID
 
118
{
 
119
  [s appendFormat: @"%@ %@ %@ %@\n", NSStringFromSelector(_cmd),
 
120
    name, publicID, systemID];
 
121
}
 
122
 
 
123
 
 
124
- (void) parser: (NSXMLParser *)parser
 
125
  didStartElement: (NSString *)elementName
 
126
  namespaceURI: (NSString *)namespaceURI
 
127
  qualifiedName: (NSString *)qName
 
128
  attributes: (NSDictionary *)attributeDict
 
129
{
 
130
  static NSDictionary   *locale = nil;
 
131
  NSString              *d;
 
132
 
 
133
  if (nil == locale)
 
134
    {
 
135
      locale = [[[NSUserDefaults standardUserDefaults]
 
136
        dictionaryRepresentation] retain];
 
137
    }
 
138
  d = [attributeDict descriptionWithLocale: locale];
 
139
  [s appendFormat: @"%@ %@ %@ %@ %@\n", NSStringFromSelector(_cmd),
 
140
    elementName, namespaceURI, qName, d];
 
141
}
 
142
 
 
143
- (void) parser: (NSXMLParser *)parser
 
144
  didEndElement: (NSString *)elementName
 
145
  namespaceURI: (NSString *)namespaceURI
 
146
  qualifiedName: (NSString *)qName
 
147
{
 
148
  [s appendFormat: @"%@ %@ %@ %@\n", NSStringFromSelector(_cmd),
 
149
  elementName, namespaceURI, qName];
 
150
}
 
151
 
 
152
- (void) parser: (NSXMLParser *)parser
 
153
  didStartMappingPrefix: (NSString *)prefix
 
154
  toURI: (NSString *)namespaceURI
 
155
{
 
156
  [s appendFormat: @"%@ %@ %@\n", NSStringFromSelector(_cmd),
 
157
  prefix, namespaceURI];
 
158
}
 
159
 
 
160
- (void) parser: (NSXMLParser *)parser
 
161
  didEndMappingPrefix: (NSString *)prefix
 
162
{
 
163
  [s appendFormat: @"%@ %@\n", NSStringFromSelector(_cmd),
 
164
    prefix];
 
165
}
 
166
 
 
167
- (void) parser: (NSXMLParser *)parser
 
168
  foundCharacters: (NSString *)string
 
169
{
 
170
  [s appendFormat: @"%@ %@\n", NSStringFromSelector(_cmd),
 
171
    string];
 
172
}
 
173
 
 
174
- (void) parser: (NSXMLParser *)parser
 
175
  foundIgnorableWhitespace: (NSString *)whitespaceString
 
176
{
 
177
  [s appendFormat: @"%@ %@\n", NSStringFromSelector(_cmd),
 
178
    whitespaceString];
 
179
}
 
180
 
 
181
- (void) parser: (NSXMLParser *)parser
 
182
  foundProcessingInstructionWithTarget: (NSString *)target
 
183
  data: (NSString *)data
 
184
{
 
185
  [s appendFormat: @"%@ %@ %@\n", NSStringFromSelector(_cmd),
 
186
    target, data];
 
187
}
 
188
 
 
189
- (void) parser: (NSXMLParser *)parser
 
190
  foundComment: (NSString *)comment
 
191
{
 
192
  [s appendFormat: @"%@ %@\n", NSStringFromSelector(_cmd),
 
193
    comment];
 
194
}
 
195
 
 
196
- (void) parser: (NSXMLParser *)parser
 
197
  foundCDATA: (NSData *)CDATABlock
 
198
{
 
199
  [s appendFormat: @"%@ %@\n", NSStringFromSelector(_cmd),
 
200
    CDATABlock];
 
201
}
 
202
 
 
203
- (NSData *) parser: (NSXMLParser *)parser
 
204
  resolveExternalEntityName: (NSString *)name
 
205
  systemID: (NSString *)systemID
 
206
{
 
207
  [s appendFormat: @"%@ %@ %@\n", NSStringFromSelector(_cmd),
 
208
    name, systemID];
 
209
  return nil;
 
210
}
 
211
 
 
212
- (void) parser: (NSXMLParser *)parser
 
213
  parseErrorOccurred: (NSError *)parseError
 
214
{
 
215
  [s appendFormat: @"%@ %@\n", NSStringFromSelector(_cmd),
 
216
    parseError];
 
217
}
 
218
 
 
219
- (void) parser: (NSXMLParser *)parser
 
220
  validationErrorOccurred: (NSError *)validationError
 
221
{
 
222
  [s appendFormat: @"%@ %@\n", NSStringFromSelector(_cmd),
 
223
    validationError];
 
224
}
 
225
 
 
226
- (void) reset
 
227
{
 
228
  [s setString: @""];
 
229
}
 
230
 
 
231
@end
 
232
 
 
233
/* Use these booleans to control parsing behavior.
 
234
 */
 
235
static BOOL     setShouldProcessNamespaces = YES;
 
236
static BOOL     setShouldReportNamespacePrefixes = YES;
 
237
static BOOL     setShouldResolveExternalEntities = NO;
 
238
 
 
239
static BOOL
 
240
testParse(NSData *xml, NSString *expect)
 
241
{
 
242
  NSAutoreleasePool     *arp = [NSAutoreleasePool new];
 
243
  Handler               *handler;
 
244
  NSXMLParser           *parser;
 
245
 
 
246
  parser = [[NSXMLParser alloc] initWithData: xml];
 
247
 
 
248
  [parser setShouldProcessNamespaces: setShouldProcessNamespaces];
 
249
  [parser setShouldReportNamespacePrefixes: setShouldReportNamespacePrefixes];
 
250
  [parser setShouldResolveExternalEntities: setShouldResolveExternalEntities];
 
251
 
 
252
  handler = [[Handler new] autorelease];
 
253
  [parser setDelegate: handler];
 
254
  if (NO == [parser parse])
 
255
    {
 
256
      NSLog(@"Parsing failed: %@", [parser parserError]);
 
257
      [arp release];
 
258
      return NO;
 
259
    }
 
260
  else
 
261
    {
 
262
      if (NO == [[handler description] isEqual: expect]) 
 
263
        {
 
264
          NSLog(@"######## Expected:\n%@\n######## Parsed:\n%@\n########\n",
 
265
            expect, [handler description]);
 
266
          [arp release];
 
267
          return NO;
 
268
        }
 
269
    }
 
270
  [arp release];
 
271
  return YES;
 
272
}
 
273
 
 
274
static BOOL
 
275
testParseCString(const char *xmlBytes, NSString *expect)
 
276
{
 
277
  NSData        *xml;
 
278
 
 
279
  xml = [NSData dataWithBytes: xmlBytes length: strlen(xmlBytes)];
 
280
  return testParse(xml, expect);
 
281
}
 
282
 
 
283
int main()
 
284
{
 
285
  NSAutoreleasePool     *arp = [NSAutoreleasePool new];
 
286
  NSFileManager         *mgr = [NSFileManager defaultManager];
 
287
  NSDirectoryEnumerator *dir;
 
288
  NSString              *xmlName;
 
289
  const char            *x1 = "<?xml version=\"1.0\"?><test x = \"1\"></test>";
 
290
  const char            *x1e = "<test x=\"1\"></test>";
 
291
  NSString              *e1 =
 
292
@"parserDidStartDocument:\nparser:didStartElement:namespaceURI:qualifiedName:attributes: test  test {\n    x = 1;\n}\nparser:didEndElement:namespaceURI:qualifiedName: test  test\nparserDidEndDocument:\n";
 
293
 
 
294
  PASS((testParseCString(x1, e1)), "simple document 1")
 
295
  PASS((testParseCString(x1e, e1)), "simple document 1 without header")
 
296
 
 
297
  /* Now perform any tests using .xml and .result pairs of files in
 
298
   * the ParseData subdirectory.
 
299
   */
 
300
  dir = [mgr enumeratorAtPath: @"ParseData"];
 
301
  while ((xmlName = [dir nextObject]) != nil)
 
302
    {
 
303
      if ([[xmlName pathExtension] isEqualToString: @"xml"])
 
304
        {
 
305
          NSString      *str;
 
306
          NSString      *xmlPath;
 
307
          NSData        *xmlData;
 
308
          NSString      *result;
 
309
 
 
310
          xmlPath = [@"ParseData" stringByAppendingPathComponent: xmlName];
 
311
          str = [xmlPath stringByDeletingPathExtension];
 
312
          str = [str stringByAppendingPathExtension: @"result"];
 
313
          xmlData = [NSData dataWithContentsOfFile: xmlPath];
 
314
          result = [NSString stringWithContentsOfFile: str];
 
315
          PASS((testParse(xmlData, result)), "%s", [xmlName UTF8String])
 
316
        }
 
317
    }
 
318
 
 
319
  [arp release]; arp = nil;
 
320
  return 0;
 
321
}