// // GTMNSString+XMLTest.m // // Copyright 2007-2008 Google Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); you may not // use this file except in compliance with the License. You may obtain a copy // of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the // License for the specific language governing permissions and limitations under // the License. // #import "GTMSenTestCase.h" #import "GTMNSString+XML.h" @interface GTMNSString_XMLTest : GTMTestCase @end @implementation GTMNSString_XMLTest - (void)testStringBySanitizingAndEscapingForXML { // test the substitutions cases UniChar chars[] = { 'z', 0, 'z', 1, 'z', 4, 'z', 5, 'z', 34, 'z', 38, 'z', 39, 'z', 60, 'z', 62, 'z', ' ', 'z', 0xd800, 'z', 0xDFFF, 'z', 0xE000, 'z', 0xFFFE, 'z', 0xFFFF, 'z', '\n', 'z', '\r', 'z', '\t', 'z' }; NSString *string1 = [NSString stringWithCharacters:chars length:sizeof(chars) / sizeof(UniChar)]; NSString *string2 = [NSString stringWithFormat:@"zzzzz"z&z'z<z>z zzz%Czzz\nz\rz\tz", (unsigned short)0xE000]; XCTAssertEqualObjects([string1 gtm_stringBySanitizingAndEscapingForXML], string2, @"Sanitize and Escape for XML failed"); // force the backing store of the NSString to test extraction paths char ascBuffer[] = "a\01bcde\nf"; NSString *ascString = [[[NSString alloc] initWithBytesNoCopy:ascBuffer length:sizeof(ascBuffer) / sizeof(char) encoding:NSASCIIStringEncoding freeWhenDone:NO] autorelease]; XCTAssertEqualObjects([ascString gtm_stringBySanitizingAndEscapingForXML], @"abcde\nf", @"Sanitize and Escape for XML from asc buffer failed"); // test empty string XCTAssertEqualObjects([@"" gtm_stringBySanitizingAndEscapingForXML], @""); } - (void)testStringBySanitizingToXMLSpec { // test the substitutions cases UniChar chars[] = { 'z', 0, 'z', 1, 'z', 4, 'z', 5, 'z', 34, 'z', 38, 'z', 39, 'z', 60, 'z', 62, 'z', ' ', 'z', 0xd800, 'z', 0xDFFF, 'z', 0xE000, 'z', 0xFFFE, 'z', 0xFFFF, 'z', '\n', 'z', '\r', 'z', '\t', 'z' }; NSString *string1 = [NSString stringWithCharacters:chars length:sizeof(chars) / sizeof(UniChar)]; NSString *string2 = [NSString stringWithFormat:@"zzzzz\"z&z'zz zzz%Czzz\nz\rz\tz", (unsigned short)0xE000]; XCTAssertEqualObjects([string1 gtm_stringBySanitizingToXMLSpec], string2, @"Sanitize for XML failed"); // force the backing store of the NSString to test extraction paths char ascBuffer[] = "a\01bcde\nf"; NSString *ascString = [[[NSString alloc] initWithBytesNoCopy:ascBuffer length:sizeof(ascBuffer) / sizeof(char) encoding:NSASCIIStringEncoding freeWhenDone:NO] autorelease]; XCTAssertEqualObjects([ascString gtm_stringBySanitizingToXMLSpec], @"abcde\nf", @"Sanitize and Escape for XML from asc buffer failed"); // test empty string XCTAssertEqualObjects([@"" gtm_stringBySanitizingToXMLSpec], @""); } @end