mirror of
https://github.com/gnustep/libs-base.git
synced 2025-04-30 03:50:46 +00:00
Update test.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@27723 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
14bd757dba
commit
09e15e1d66
1 changed files with 146 additions and 44 deletions
|
@ -1,68 +1,170 @@
|
|||
#import <Foundation/Foundation.h>
|
||||
|
||||
BOOL pass;
|
||||
// BOOL pass;
|
||||
|
||||
void testNSLockLock()
|
||||
{
|
||||
NS_DURING
|
||||
{
|
||||
// insert code here...
|
||||
NSLock *lock = [[NSLock alloc] init];
|
||||
[lock lock];
|
||||
#ifdef GNUSTEP
|
||||
[lock lock]; // On Mac OS X, this deadlocks. Should we do the same?
|
||||
// our behavior in this case is arguably better since we raise an exception
|
||||
#endif
|
||||
[lock unlock];
|
||||
[lock release];
|
||||
#ifndef GNUSTEP
|
||||
NSLog(@"[NSLock lock] test passed -- Mac OS X behavior is to deadlock in this case, we throw an exception.");
|
||||
#else
|
||||
NSLog(@"[NSLock lock] test failed");
|
||||
#endif
|
||||
}
|
||||
NS_HANDLER
|
||||
{
|
||||
NSLog(@"[NSLock lock] test passed");
|
||||
}
|
||||
NS_ENDHANDLER;
|
||||
}
|
||||
|
||||
|
||||
void testNSConditionLockLock()
|
||||
{
|
||||
NS_DURING
|
||||
{
|
||||
// insert code here...
|
||||
NSConditionLock *lock = [[NSConditionLock alloc] init];
|
||||
[lock lock];
|
||||
#ifdef GNUSTEP
|
||||
[lock lock]; // On Mac OS X, this deadlocks. Should we do the same?
|
||||
// our behavior in this case is arguably better since we raise an exception
|
||||
#endif
|
||||
[lock unlock];
|
||||
[lock release];
|
||||
#ifndef GNUSTEP
|
||||
NSLog(@"[NSConditionLock lock] test passed -- Mac OS X behavior is to deadlock in this case, we throw an exception.");
|
||||
#else
|
||||
NSLog(@"[NSConditionLock lock] test failed");
|
||||
#endif
|
||||
}
|
||||
NS_HANDLER
|
||||
{
|
||||
NSLog(@"[NSConditionLock lock] test failed");
|
||||
}
|
||||
NS_ENDHANDLER;
|
||||
}
|
||||
|
||||
void testNSRecursiveLockLock()
|
||||
{
|
||||
NS_DURING
|
||||
{
|
||||
// insert code here...
|
||||
NSRecursiveLock *lock = [[NSRecursiveLock alloc] init];
|
||||
[lock lock];
|
||||
[lock lock];
|
||||
[lock unlock];
|
||||
[lock unlock];
|
||||
[lock release];
|
||||
NSLog(@"[NSRecursiveLock lock] test passed");
|
||||
}
|
||||
NS_HANDLER
|
||||
{
|
||||
NSLog(@"[NSRecursiveLock lock] test failed");
|
||||
}
|
||||
NS_ENDHANDLER;
|
||||
}
|
||||
|
||||
void testNSLockTryLock()
|
||||
{
|
||||
// insert code here...
|
||||
NSLock *lock = [[NSLock alloc] init];
|
||||
[lock tryLock];
|
||||
[lock tryLock];
|
||||
[lock unlock];
|
||||
[lock release];
|
||||
NS_DURING
|
||||
{
|
||||
// insert code here...
|
||||
NSLock *lock = [[NSLock alloc] init];
|
||||
[lock tryLock];
|
||||
[lock tryLock];
|
||||
[lock unlock];
|
||||
[lock release];
|
||||
NSLog(@"[NSLock tryLock] test passed");
|
||||
}
|
||||
NS_HANDLER
|
||||
{
|
||||
NSLog(@"[NSLock tryLock] test failed");
|
||||
}
|
||||
NS_ENDHANDLER;
|
||||
}
|
||||
|
||||
|
||||
void testNSConditionLockTryLock()
|
||||
{
|
||||
// insert code here...
|
||||
NSConditionLock *lock = [[NSConditionLock alloc] init];
|
||||
[lock tryLock];
|
||||
[lock tryLock];
|
||||
[lock unlock];
|
||||
[lock release];
|
||||
NS_DURING
|
||||
{
|
||||
// insert code here...
|
||||
NSConditionLock *lock = [[NSConditionLock alloc] init];
|
||||
[lock tryLock];
|
||||
[lock tryLock];
|
||||
[lock unlock];
|
||||
[lock release];
|
||||
NSLog(@"[NSConditionLock tryLock] test passed");
|
||||
}
|
||||
NS_HANDLER
|
||||
{
|
||||
NSLog(@"[NSConditionLock tryLock] test failed");
|
||||
}
|
||||
NS_ENDHANDLER;
|
||||
}
|
||||
|
||||
void testNSRecursiveLockTryLock()
|
||||
{
|
||||
// insert code here...
|
||||
NSRecursiveLock *lock = [[NSRecursiveLock alloc] init];
|
||||
[lock tryLock];
|
||||
[lock tryLock];
|
||||
[lock unlock];
|
||||
[lock unlock];
|
||||
[lock release];
|
||||
NS_DURING
|
||||
{
|
||||
// insert code here...
|
||||
NSRecursiveLock *lock = [[NSRecursiveLock alloc] init];
|
||||
[lock tryLock];
|
||||
[lock tryLock];
|
||||
[lock unlock];
|
||||
[lock unlock];
|
||||
[lock release];
|
||||
NSLog(@"[NSRecursiveLock tryLock] test passed");
|
||||
}
|
||||
NS_HANDLER
|
||||
{
|
||||
NSLog(@"[NSRecursiveLock tryLock] test failed");
|
||||
}
|
||||
NS_ENDHANDLER;
|
||||
}
|
||||
|
||||
void singleThreadedTests()
|
||||
{
|
||||
NS_DURING
|
||||
{
|
||||
// single threaded tests...
|
||||
testNSLockTryLock();
|
||||
testNSConditionLockTryLock();
|
||||
testNSRecursiveLockTryLock();
|
||||
}
|
||||
NS_HANDLER
|
||||
{
|
||||
NSLog(@"Test failed");
|
||||
pass = NO;
|
||||
}
|
||||
NS_ENDHANDLER
|
||||
// single threaded tests...
|
||||
NSLog(@"======== SINGLE THREADED TESTS");
|
||||
|
||||
// lock
|
||||
testNSLockLock();
|
||||
testNSConditionLockLock();
|
||||
testNSRecursiveLockLock();
|
||||
|
||||
// tryLock
|
||||
testNSLockTryLock();
|
||||
testNSConditionLockTryLock();
|
||||
testNSRecursiveLockTryLock();
|
||||
}
|
||||
|
||||
|
||||
void multiThreadedTests()
|
||||
{
|
||||
NSLog(@"======== MULTI THREADED TESTS");
|
||||
}
|
||||
|
||||
int main (int argc, const char * argv[]) {
|
||||
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
|
||||
|
||||
pass = YES;
|
||||
// single threaded tests...
|
||||
singleThreadedTests();
|
||||
// multi threaded tests...
|
||||
multiThreadedTests();
|
||||
assert(pass == YES);
|
||||
[pool drain];
|
||||
return 0;
|
||||
int main (int argc, const char * argv[])
|
||||
{
|
||||
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
|
||||
|
||||
// pass = YES;
|
||||
// single threaded tests...
|
||||
singleThreadedTests();
|
||||
// multi threaded tests...
|
||||
multiThreadedTests();
|
||||
[pool drain];
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue