File: general.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 (57 lines) | stat: -rw-r--r-- 1,600 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
50
51
52
53
54
55
56
57
#import "Testing.h"
#import "ObjectTesting.h"
#import <Foundation/NSAutoreleasePool.h>
#import <Foundation/NSData.h>
#import <Foundation/NSString.h>

int main()
{ 
  ENTER_POOL
  char 		*str1, *str2, *tmp;
  NSData 	*data1;
  NSMutableData *mutable;
  unsigned char *hold;
   
  str1 = "Test string for data classes";
  str2 = (char *)malloc(sizeof("insert")); 
  strcpy(str2, "insert");
  
  mutable = [NSMutableData dataWithLength: 100];
  hold = [mutable mutableBytes]; 
  
  data1 = [NSData dataWithBytes: str1 length: (strlen(str1) + 1)];
  PASS(data1 != nil
    && [data1 isKindOfClass: [NSData class]]
    && [data1 length] == (strlen(str1) + 1)
    && [data1 bytes] != str1
    && strcmp(str1, [data1 bytes]) == 0,
    "+dataWithBytes:length: works")
  
  mutable = [NSMutableData data];
  PASS(mutable != nil
    && [mutable isKindOfClass: [NSMutableData class]]
    && [mutable length] == 0,
    "+data creates empty mutable data")
  
  [mutable setData: data1];
  PASS(mutable != nil
    && [mutable length] == (strlen(str1) + 1),
    "-setData: works")
  
  [mutable replaceBytesInRange: NSMakeRange(22, 6) withBytes: str2];
  tmp = (char *)malloc([mutable length]);
  [mutable getBytes: tmp range: NSMakeRange(22, 6)];
  tmp[6] = '\0';
  PASS(mutable != nil
    && strcmp(tmp, str2) == 0,
    "-replaceBytesInRange:withBytes suceeds")
  free(tmp);
  PASS_EXCEPTION([mutable
    replaceBytesInRange: NSMakeRange([mutable length]+1, 6) withBytes: str2];,
    NSRangeException,
    "-replaceBytesInRange:withBytes out of range raises exception")
  
  free(str2);
  LEAVE_POOL
  return 0;
}