From ab5285aaabace28b916764d5cf19871a931fa61f Mon Sep 17 00:00:00 2001 From: Richard Frith-MacDonald Date: Tue, 12 Jul 2016 17:54:40 +0000 Subject: [PATCH] fixups for run loop handling git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@39989 72102866-910b-0410-8b05-ffd578937521 --- Tests/base/NSStream/memandfile_2.m | 23 ++++++++++++++++++---- Tests/base/NSStream/pipe.m | 12 +++++++++--- Tests/base/NSStream/socket.m | 5 +++-- Tests/base/NSStream/socket_cs.m | 31 +++++++++++++++++++++++------- 4 files changed, 55 insertions(+), 16 deletions(-) diff --git a/Tests/base/NSStream/memandfile_2.m b/Tests/base/NSStream/memandfile_2.m index d1c5f8902..7360320ca 100644 --- a/Tests/base/NSStream/memandfile_2.m +++ b/Tests/base/NSStream/memandfile_2.m @@ -114,7 +114,8 @@ int main() { NSAutoreleasePool *arp = [NSAutoreleasePool new]; NSRunLoop *rl = [NSRunLoop currentRunLoop]; - NSData *answer; + NSData *answer = nil; + NSDate *end; // first test, file to memory copy NSString *path = @"memandfile.m"; @@ -128,7 +129,13 @@ int main() [input open]; [output open]; defaultOutput = output; - [rl runUntilDate: [NSDate dateWithTimeIntervalSinceNow: 0.5]]; + end = [NSDate dateWithTimeIntervalSinceNow: 1.0]; + while (NO == [goldData isEqualToData: answer] + && [end timeIntervalSinceNow] > 0.0) + { + [rl runMode: NSDefaultRunLoopMode beforeDate: end]; + answer = [output propertyForKey: NSStreamDataWrittenToMemoryStreamKey]; + } answer = [output propertyForKey: NSStreamDataWrittenToMemoryStreamKey]; PASS([goldData isEqualToData: answer], "file to memory copy ok"); @@ -144,9 +151,17 @@ int main() [input2 open]; [output2 open]; defaultInput = input2; - [rl runUntilDate: [NSDate dateWithTimeIntervalSinceNow: 0.5]]; - NSData *answer2 = [NSData dataWithContentsOfFile: pathO]; + end = [NSDate dateWithTimeIntervalSinceNow: 1.0]; + NSData *answer2 = nil; + while (NO == [goldData isEqualToData: answer2] + && [end timeIntervalSinceNow] > 0.0) + { + [rl runMode: NSDefaultRunLoopMode beforeDate: end]; + answer2 = [NSData dataWithContentsOfFile: pathO]; + } + + answer2 = [NSData dataWithContentsOfFile: pathO]; PASS([goldData isEqualToData: answer2], "memory to file copy ok"); [[NSFileManager defaultManager] removeFileAtPath: pathO handler: nil]; diff --git a/Tests/base/NSStream/pipe.m b/Tests/base/NSStream/pipe.m index 32f878821..68dfa0179 100644 --- a/Tests/base/NSStream/pipe.m +++ b/Tests/base/NSStream/pipe.m @@ -50,7 +50,8 @@ static NSMutableData *testData; } case NSStreamEventErrorOccurred: { - NSAssert1(1, @"Error! code is %d", [[theStream streamError] code]); + NSAssert1(1, @"Error! code is %ld", + (long int)[[theStream streamError] code]); break; } default: @@ -66,6 +67,7 @@ int main() NSRunLoop *rl = [NSRunLoop currentRunLoop]; Listener *li = [[Listener new] autorelease]; NSString *path = @"pipe.m"; + NSDate *end; [NSStream pipeWithInputStream:&defaultInput outputStream:&defaultOutput]; goldData = [NSData dataWithContentsOfFile:path]; @@ -76,8 +78,12 @@ int main() [defaultOutput scheduleInRunLoop:rl forMode:NSDefaultRunLoopMode]; [defaultInput open]; [defaultOutput open]; - [rl run]; - + end = [NSDate dateWithTimeIntervalSinceNow: 0.5]; + while (NO == [goldData isEqualToData:testData] + && [end timeIntervalSinceNow] > 0.0) + { + [rl runMode: NSDefaultRunLoopMode beforeDate: end]; + } PASS([goldData isEqualToData:testData], "Local pipe"); [arp release]; return 0; diff --git a/Tests/base/NSStream/socket.m b/Tests/base/NSStream/socket.m index 1393e041a..03f51f22c 100644 --- a/Tests/base/NSStream/socket.m +++ b/Tests/base/NSStream/socket.m @@ -28,7 +28,7 @@ static BOOL done = NO; static uint8_t buffer[4096]; static BOOL doneWrite = NO; int readSize; -NSLog(@"Got %d on %p", streamEvent, theStream); +NSLog(@"Got %ld on %p", (long int)streamEvent, theStream); switch (streamEvent) { case NSStreamEventOpenCompleted: @@ -98,7 +98,8 @@ NSLog(@"%@", [defaultInput streamError]); } default: { - NSAssert1(1, @"Error! code is %d", [[theStream streamError] code]); + NSAssert1(1, @"Error! code is %ld", + (long int)[[theStream streamError] code]); break; } } diff --git a/Tests/base/NSStream/socket_cs.m b/Tests/base/NSStream/socket_cs.m index 221ba8a6c..f5925f95b 100644 --- a/Tests/base/NSStream/socket_cs.m +++ b/Tests/base/NSStream/socket_cs.m @@ -25,9 +25,10 @@ eventString(NSStream *stream, NSStreamEvent event) case NSStreamEventHasBytesAvailable: return @"bytes available"; case NSStreamEventEndEncountered: return @"end encountered"; case NSStreamEventErrorOccurred: - return [NSString stringWithFormat: @"error %d (%@)", - [[stream streamError] code], [stream streamError]]; - default: return [NSString stringWithFormat: @"unknown event %d", event]; + return [NSString stringWithFormat: @"error %ld (%@)", + (long int)[[stream streamError] code], [stream streamError]]; + default: + return [NSString stringWithFormat: @"unknown event %ld", (long int)event]; } } @@ -331,7 +332,11 @@ int main() [clientOutput open]; end = [NSDate dateWithTimeIntervalSinceNow: 5]; - [rl runUntilDate: end]; + while (NO == [goldData isEqualToData: testData] + && [end timeIntervalSinceNow] > 0.0) + { + [rl runMode: NSDefaultRunLoopMode beforeDate: end]; + } PASS([goldData isEqualToData: testData], "Local tcp"); if ([end timeIntervalSinceNow] < 0.0) NSLog(@"%@ timed out.\n", prefix); @@ -369,7 +374,11 @@ int main() [clientOutput scheduleInRunLoop: rl forMode: NSDefaultRunLoopMode]; end = [NSDate dateWithTimeIntervalSinceNow: 5]; - [rl runUntilDate: end]; + while (NO == [goldData isEqualToData: testData] + && [end timeIntervalSinceNow] > 0.0) + { + [rl runMode: NSDefaultRunLoopMode beforeDate: end]; + } PASS([goldData isEqualToData: testData], "Local tcp (blocking open)"); if ([end timeIntervalSinceNow] < 0.0) NSLog(@"%@ timed out.\n", prefix); @@ -405,7 +414,11 @@ int main() [clientOutput open]; end = [NSDate dateWithTimeIntervalSinceNow: 5]; - [rl runUntilDate: end]; + while (NO == [goldData isEqualToData: testData] + && [end timeIntervalSinceNow] > 0.0) + { + [rl runMode: NSDefaultRunLoopMode beforeDate: end]; + } PASS([goldData isEqualToData: testData], "Local socket"); if ([end timeIntervalSinceNow] < 0.0) NSLog(@"%@ timed out.\n", prefix); @@ -444,7 +457,11 @@ int main() [clientOutput scheduleInRunLoop: rl forMode: NSDefaultRunLoopMode]; end = [NSDate dateWithTimeIntervalSinceNow: 5]; - [rl runUntilDate: end]; + while (NO == [goldData isEqualToData: testData] + && [end timeIntervalSinceNow] > 0.0) + { + [rl runMode: NSDefaultRunLoopMode beforeDate: end]; + } PASS([goldData isEqualToData: testData], "Local socket (blocking open)"); if ([end timeIntervalSinceNow] < 0.0) NSLog(@"%@ timed out.\n", prefix);