mirror of
https://github.com/gnustep/libs-base.git
synced 2025-04-29 11:31:11 +00:00
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@32187 72102866-910b-0410-8b05-ffd578937521
59 lines
2.4 KiB
Objective-C
59 lines
2.4 KiB
Objective-C
#import "Testing.h"
|
|
#import "ObjectTesting.h"
|
|
#import <Foundation/Foundation.h>
|
|
|
|
int
|
|
main (int argc, char**argv)
|
|
{
|
|
id pool = [NSAutoreleasePool new];
|
|
NSCharacterSet *illegal = [NSCharacterSet illegalCharacterSet];
|
|
NSCharacterSet *legal = [illegal invertedSet];
|
|
NSMutableData *data;
|
|
NSString *s;
|
|
unichar cp;
|
|
|
|
PASS([illegal characterIsMember: 0xfffe], "0xfffe is illegal");
|
|
PASS(![legal characterIsMember: 0xfffe], "0xfffe is bnot legal");
|
|
PASS([illegal characterIsMember: 0xffff], "0xffff is illegal");
|
|
PASS(![legal characterIsMember: 0xffff], "0xffff is not legal");
|
|
PASS([illegal characterIsMember: 0xfdd0], "0xfdd0 is illegal");
|
|
PASS(![legal characterIsMember: 0xfdd0], "0xfdd0 is not legal");
|
|
PASS([illegal longCharacterIsMember: 0x0010fffe], "0x0010fffe is illegal");
|
|
PASS(![legal longCharacterIsMember: 0x0010fffe], "0x0010fffe is not legal");
|
|
|
|
// Null character
|
|
PASS(![illegal characterIsMember: 0x0000], "0x0000 is not illegal");
|
|
PASS([legal characterIsMember: 0x0000], "0x0000 is legal");
|
|
// First half of surrogate pair
|
|
PASS(![illegal characterIsMember: 0xd800], "0xd800 is not illegal");
|
|
PASS([legal characterIsMember: 0xd800], "0xd800 is legal");
|
|
// Second half of surrogate pair
|
|
PASS(![illegal characterIsMember: 0xdc00], "0xdc00 is not illegal");
|
|
PASS([legal characterIsMember: 0xdc00], "0xdc00 is legal");
|
|
// Private use character in code plane 16
|
|
PASS([illegal longCharacterIsMember: 0x0010fffd], "0x0010fffd illegal");
|
|
PASS(![legal longCharacterIsMember: 0x0010fffd], "0x0010fffd is illegal");
|
|
|
|
// Entire UCS-2 set (UTF-16 surrogates start above 0xD800)
|
|
// (still looking for official information on the range of UCS-2 code points,
|
|
// i.e. whether UCS-4/UCS-2 are actually official code point sets
|
|
// or whether they are just commonly used terms to differentiate
|
|
// the full UCS code point set from it's UTF-16 encoding.)
|
|
data = [NSMutableData dataWithCapacity: sizeof(cp) * 0xD800];
|
|
// Do not start with 0x0000 otherwise a leading BOM could misinterpreted.
|
|
for (cp=0x0001;cp<0xFFFF;cp++)
|
|
{
|
|
/* Skip code points that are reserved for surrogate characters. */
|
|
if (cp == 0xD800) cp = 0xF900;
|
|
if ([legal characterIsMember:cp])
|
|
{
|
|
[data appendBytes: &cp length: sizeof(cp)];
|
|
}
|
|
}
|
|
s = [[NSString alloc] initWithData: data encoding: NSUnicodeStringEncoding];
|
|
PASS([s length],"legal UCS-2 set can be represented in an NSString.");
|
|
[s release];
|
|
|
|
[pool release];
|
|
return (0);
|
|
}
|