mirror of
https://github.com/gnustep/libs-base.git
synced 2025-04-22 16:33:29 +00:00
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@32187 72102866-910b-0410-8b05-ffd578937521
138 lines
3.4 KiB
Objective-C
138 lines
3.4 KiB
Objective-C
#import <Foundation/Foundation.h>
|
|
#import "Testing.h"
|
|
#import "ObjectTesting.h"
|
|
|
|
/* this test collection examines the behaviour of the
|
|
* NSURLHandleClient protocol.
|
|
* Graham J Lee <leeg@thaesofereode.info>
|
|
*/
|
|
|
|
typedef enum _URLHandleClientStatus {
|
|
URLHandleClientNormal = 0,
|
|
URLHandleClientDataDidBecomeAvailable,
|
|
URLHandleClientDidFailLoadingWithReason,
|
|
URLHandleClientDidBeginLoading,
|
|
URLHandleClientDidCancelLoading,
|
|
URLHandleClientDidFinishLoading } URLHandleClientStatus;
|
|
|
|
@interface TestObject : NSObject <NSURLHandleClient>
|
|
{
|
|
@protected
|
|
URLHandleClientStatus _status;
|
|
NSData *_receivedData;
|
|
}
|
|
- (int) runTest;
|
|
|
|
- (URLHandleClientStatus) status;
|
|
- (void) setStatus: (URLHandleClientStatus)newStatus;
|
|
|
|
- (void) URLHandle: (NSURLHandle *)sender
|
|
resourceDataDidBecomeAvailable: (NSData *)newBytes;
|
|
- (void) URLHandle: (NSURLHandle *)sender
|
|
resourceDidFailLoadingWithReason: (NSString *)reason;
|
|
- (void) URLHandleResourceDidBeginLoading: (NSURLHandle *)sender;
|
|
- (void) URLHandleResourceDidCancelLoading: (NSURLHandle *)sender;
|
|
- (void) URLHandleResourceDidFinishLoading: (NSURLHandle *)sender;
|
|
@end
|
|
|
|
@implementation TestObject
|
|
|
|
- (id) init
|
|
{
|
|
if ((self = [super init]))
|
|
{
|
|
_status = URLHandleClientNormal;
|
|
_receivedData = nil;
|
|
}
|
|
return self;
|
|
}
|
|
|
|
- (void) dealloc
|
|
{
|
|
if (_receivedData)
|
|
{
|
|
[_receivedData release];
|
|
}
|
|
[super dealloc];
|
|
}
|
|
|
|
- (URLHandleClientStatus) status { return _status; }
|
|
- (void) setStatus: (URLHandleClientStatus)newStatus { _status = newStatus; }
|
|
|
|
- (void) URLHandle: (NSURLHandle *)sender
|
|
resourceDataDidBecomeAvailable: (NSData *)newBytes
|
|
{
|
|
[self setStatus: URLHandleClientDataDidBecomeAvailable];
|
|
if (_receivedData)
|
|
{
|
|
[_receivedData release];
|
|
}
|
|
_receivedData = newBytes;
|
|
}
|
|
|
|
- (void) URLHandle: (NSURLHandle *)sender
|
|
resourceDidFailLoadingWithReason: (NSString *)reason
|
|
{
|
|
[self setStatus: URLHandleClientDidFailLoadingWithReason];
|
|
NSLog(@"Load failed: further tests may fail. Reason: %@", reason);
|
|
}
|
|
|
|
- (void) URLHandleResourceDidBeginLoading: (NSURLHandle *)sender
|
|
{
|
|
[self setStatus: URLHandleClientDidBeginLoading];
|
|
}
|
|
|
|
- (void) URLHandleResourceDidCancelLoading: (NSURLHandle *)sender
|
|
{
|
|
[self setStatus: URLHandleClientDidCancelLoading];
|
|
}
|
|
|
|
- (void) URLHandleResourceDidFinishLoading: (NSURLHandle *)sender
|
|
{
|
|
[self setStatus: URLHandleClientDidFinishLoading];
|
|
}
|
|
|
|
- (int)runTest
|
|
{
|
|
id handle;
|
|
NSURL *url;
|
|
Class cls;
|
|
|
|
url = [NSURL URLWithString: @"http://www.gnustep.org/"];
|
|
cls = [NSURLHandle URLHandleClassForURL: url];
|
|
handle = [[cls alloc] initWithURL: url cached: NO];
|
|
|
|
[handle addClient: self];
|
|
[self setStatus: URLHandleClientNormal];
|
|
|
|
[handle beginLoadInBackground];
|
|
[handle cancelLoadInBackground];
|
|
PASS([self status] == URLHandleClientDidCancelLoading,
|
|
"URLHandleResourceDidCancelLoading called");
|
|
[handle release];
|
|
|
|
handle = [[cls alloc] initWithURL: url cached: NO];
|
|
[handle addClient: self];
|
|
/* Don't get client messages in the foreground, so load in
|
|
* background and wait a bit
|
|
*/
|
|
[handle loadInBackground];
|
|
PASS([self status] == URLHandleClientDidBeginLoading,
|
|
"URLHandleResourceDidBeginLoading called");
|
|
|
|
[handle release];
|
|
return 0;
|
|
}
|
|
|
|
@end
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
int status;
|
|
|
|
NSAutoreleasePool *arp = [NSAutoreleasePool new];
|
|
status = [[[[TestObject alloc] init] autorelease] runTest];
|
|
[arp release]; arp = nil;
|
|
|
|
return status;
|
|
}
|