VocalEasel/Tests/TVLXML/TVLXML.mm

63 lines
2.1 KiB
Plaintext
Raw Permalink Normal View History

2011-09-02 15:03:37 +00:00
//
// TVLXML.mm
// TVLXML
//
// Created by Matthias Neeracher on 9/2/11.
// Copyright 2011 Apple Computer. All rights reserved.
//
#import "TVLXML.h"
#import "VLDocument.h"
@implementation TVLXML
- (void)setUp
{
[super setUp];
}
- (void)tearDown
{
// Tear-down code here.
}
- (void)testXMLRoundTrip
{
NSError * err;
NSURL * dtdURL = [[NSBundle bundleForClass:[TVLXML class]] URLForResource:@"partwise" withExtension:@"dtd"];
NSXMLDTD * dtd = [[NSXMLDTD alloc] initWithContentsOfURL:dtdURL options:0 error:&err];
2011-09-02 15:12:22 +00:00
[dtd setName:@"score-partwise"];
2011-09-02 15:03:37 +00:00
STAssertNotNil(dtd, @"DTD: %@\n", [err localizedDescription]);
NSString * testDirPath = [NSString stringWithFormat:@"%s/TestData/XML", PROJECT_DIR];
NSURL * testDirURL = [NSURL fileURLWithPath:testDirPath isDirectory:YES];
NSFileWrapper * testDir = [[NSFileWrapper alloc] initWithURL:testDirURL options:0 error:&err];
NSArray * testCases = [[testDir fileWrappers] allValues];
STAssertTrue([testCases count] > 0, @"Count Test Cases");
for (NSFileWrapper * testCase in testCases) {
NSString * testName = [testCase filename];
if (![[testName pathExtension] isEqual:@"xml"])
continue;
VLDocument * doc = [[VLDocument alloc] init];
BOOL succ = [doc readFromFileWrapper:testCase ofType:VLMusicXMLType error:&err];
STAssertTrue(succ, @"Reading `%@': %@\n", testName, [err localizedDescription]);
NSFileWrapper * written = [doc fileWrapperOfType:VLMusicXMLType error:&err];
STAssertNotNil(written, @"Writing `%@': %@", testName, [err localizedDescription]);
NSXMLDocument * xml = [[NSXMLDocument alloc] initWithData:[written regularFileContents] options:0 error:&err];
STAssertNotNil(xml, @"Parsing `%@': %@", testName, [err localizedDescription]);
[xml setDTD:dtd];
2011-09-02 15:12:22 +00:00
STAssertTrue([xml validateAndReturnError:&err], @"Validating `%@': %@", testName, [err localizedDescription]);
2011-09-02 15:03:37 +00:00
}
}
@end