libs-base/Testing/nsnotification.m
Richard Frith-Macdonald df34be2951 Fix to include config.h in all cases
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@13490 72102866-910b-0410-8b05-ffd578937521
2002-04-18 06:02:22 +00:00

128 lines
3.1 KiB
Objective-C

/* The simplest of tests for the NSNotification and NSNotificationCenter
classes. These tests should be expanded.
(The Tcp*Port classes, however, do test the notification mechanism
further.) */
#include <Foundation/Foundation.h>
@interface Observer : NSObject
- (void) gotNotificationFoo: not;
@end
@implementation Observer
- (void) gotNotificationFoo: (NSNotification*)not
{
printf ("Got %s\n", [[not name] cString]);
}
- (void) gotNotificationFooNoObject: (NSNotification*)not
{
printf ("Got %s without object\n", [[not name] cString]);
}
@end
id foo = @"NotificationTestFoo";
int main ()
{
id o1;
id observer1;
id arp;
arp = [NSAutoreleasePool new];
NSLog(@"Make string object");
o1 = [NSString new];
NSLog(@"Make Observer object");
observer1 = [Observer new];
NSLog(@"Add observer to process centre");
[[NSNotificationCenter defaultCenter]
addObserver: observer1
selector: @selector(gotNotificationFoo:)
name: foo
object: o1];
NSLog(@"Add observer to distributed centre");
[[NSDistributedNotificationCenter defaultCenter]
addObserver: observer1
selector: @selector(gotNotificationFoo:)
name: foo
object: o1];
NSLog(@"Add observer to process centre");
[[NSNotificationCenter defaultCenter]
addObserver: observer1
selector: @selector(gotNotificationFooNoObject:)
name: foo
object: nil];
NSLog(@"Add observer to distributed centre");
[[NSDistributedNotificationCenter defaultCenter]
addObserver: observer1
selector: @selector(gotNotificationFooNoObject:)
name: foo
object: nil];
NSLog(@"Post to process centre");
/* This will cause two messages to be printed, one for each request above. */
[[NSNotificationCenter defaultCenter]
postNotificationName: foo
object: o1];
NSLog(@"Post to distributed centre");
/* This will cause two messages to be printed, one for each request above. */
[[NSDistributedNotificationCenter defaultCenter]
postNotificationName: foo
object: o1];
NSLog(@"Post to process centre");
/* This will cause one message to be printed. */
[[NSNotificationCenter defaultCenter]
postNotificationName: foo
object: nil];
NSLog(@"Post to distributed centre");
/* This will cause one message to be printed. */
[[NSDistributedNotificationCenter defaultCenter]
postNotificationName: foo
object: nil];
NSLog(@"Remove observer from process centre");
[[NSNotificationCenter defaultCenter]
removeObserver: observer1
name: nil
object: o1];
/* This will cause message to be printed. */
[[NSNotificationCenter defaultCenter]
postNotificationName: foo
object: o1];
[[NSNotificationCenter defaultCenter]
removeObserver: observer1];
/* This will cause no messages to be printed. */
[[NSNotificationCenter defaultCenter]
postNotificationName: foo
object: o1];
[[NSDistributedNotificationCenter defaultCenter]
addObserver: observer1
selector: @selector(gotNotificationFooNoObject:)
name: foo
object: nil];
[[NSDistributedNotificationCenter defaultCenter]
postNotificationName: foo
object: @"hello"];
[arp release];
exit (0);
}