libs-base/Tests/base/NSData/search.m

81 lines
2.5 KiB
Objective-C

#import <Foundation/Foundation.h>
#import "Testing.h"
static BOOL rangesEqual(NSRange r1, NSRange r2)
{
if (&r1 == &r2)
return YES;
if (r1.length == 0 && r2.length == 0)
return YES;
return (r1.length == r2.length && r1.location == r2.location);
}
static void dataRange(char *s0, char *s1, NSDataSearchOptions opts,
NSRange range, NSRange want)
{
NSData *d0 = [NSData dataWithBytes:s0 length:strlen(s0)];
NSData *d1 = [NSData dataWithBytes:s1 length:strlen(s1)];
NSRange res = [d0 rangeOfData:d1 options:opts range:range];
PASS(rangesEqual(res,want), "NSData range for '%s' and '%s' is ok",s0,s1);
}
int main()
{
NSAutoreleasePool *arp = [NSAutoreleasePool new];
/* Borrowed from NSString/test00.m
*/
dataRange("hello", "hello", NSDataSearchAnchored,
NSMakeRange(0,5), NSMakeRange(0,5));
dataRange("hello", "hello", NSDataSearchAnchored | NSDataSearchBackwards,
NSMakeRange(0,5), NSMakeRange(0,5));
dataRange("hello", "hElLo", 0,
NSMakeRange(0,5), NSMakeRange(NSNotFound,0));
dataRange("hello", "hell", NSDataSearchAnchored,
NSMakeRange(0,5), NSMakeRange(0,4));
dataRange("hello", "hell", NSDataSearchAnchored | NSDataSearchBackwards,
NSMakeRange(0,4), NSMakeRange(0,4));
dataRange("hello", "ello", NSDataSearchAnchored,
NSMakeRange(0,5), NSMakeRange(NSNotFound,0));
dataRange("hello", "hel", NSDataSearchBackwards,
NSMakeRange(0,5), NSMakeRange(0,3));
dataRange("hello", "he", 0,
NSMakeRange(0,5), NSMakeRange(0,2));
dataRange("hello", "h", 0,
NSMakeRange(0,5), NSMakeRange(0,1));
dataRange("hello", "l", 0,
NSMakeRange(0,5), NSMakeRange(2,1));
dataRange("hello", "l", NSDataSearchBackwards,
NSMakeRange(0,5), NSMakeRange(3,1));
dataRange("hello", "", 0,
NSMakeRange(0,5), NSMakeRange(0,0));
dataRange("hello", "el", 0,
NSMakeRange(0,5), NSMakeRange(1,2));
dataRange("hello", "el", 0,
NSMakeRange(0,2), NSMakeRange(0,0));
dataRange("hello", "el", 0,
NSMakeRange(2,3), NSMakeRange(0,0));
dataRange("hello", "ell", 0,
NSMakeRange(0,5), NSMakeRange(1,3));
dataRange("hello", "lo", 0,
NSMakeRange(2,3), NSMakeRange(3,2));
dataRange("boaboaboa", "abo", 0,
NSMakeRange(0,9), NSMakeRange(2,3));
dataRange("boaboaboa", "abo", NSDataSearchBackwards,
NSMakeRange(0,9), NSMakeRange(5,3));
dataRange("", "", 0,
NSMakeRange(0,0), NSMakeRange(0,0));
dataRange("x", "", 0,
NSMakeRange(0,1), NSMakeRange(0,0));
dataRange("x", "", NSDataSearchBackwards,
NSMakeRange(0,1), NSMakeRange(1,0));
[arp release];
arp = nil;
return 0;
}