File: noncharacter.m

package info (click to toggle)
gnustep-base 1.31.1-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 26,580 kB
  • sloc: objc: 239,446; ansic: 36,519; cpp: 122; sh: 112; makefile: 100; xml: 32
file content (49 lines) | stat: -rw-r--r-- 1,659 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/* Test for unicode noncharacter codepoints
 */
#import "Testing.h"

#import <Foundation/NSString.h>

int main(int argc, char **argv)
{
  START_SET("noncharacter")
  NSString *str;
  unichar u;
  unichar u2[2];
  u = (unichar)0xfdd0;
  str = [[NSString alloc] initWithCharacters: &u length: 1];
  PASS([str length] == 1, "fdd0 codepoint is permitted in string");
  PASS([str characterAtIndex: 0] == 0xfdd0, "fdd0 is returned properly");
  [str release];

  u = (unichar)0xfdef;
  str = [[NSString alloc] initWithCharacters: &u length: 1];
  PASS([str length] == 1, "fdef codepoint is permitted in string");
  PASS([str characterAtIndex: 0] == 0xfdef, "fdef is returned properly");
  [str release];

  u = (unichar)0xfffd;
  str = [[NSString alloc] initWithCharacters: &u length: 1];
  PASS([str length] == 1, "fffd codepoint is permitted in string");
  PASS([str characterAtIndex: 0] == 0xfffd, "fffd is returned properly");
  [str release];
  /* eth, so that we don't have the BOM as the first character (it would be
   * removed) */
  u2[0] = (unichar)0x00f0;
  /* BOM as second non-character codepoint should be allowed */
  u2[1] = (unichar)0xfffe;
  str = [[NSString alloc] initWithCharacters: u2 length: 2];
  PASS([str length] == 2, "fffe codepoint is permitted in string");
  PASS([str characterAtIndex: 1] == 0xfffe, "fffe is returned properly");
  [str release];

  u = (unichar)0xffff;
  str = [[NSString alloc] initWithCharacters: &u length: 1];
  PASS([str length] == 1, "ffff codepoint is permitted in string");
  PASS([str characterAtIndex: 0] == 0xffff, "ffff is returned properly");
  [str release];

  END_SET("noncharacter")
  return 0;
}