fixups for run loop handling

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@39989 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Richard Frith-MacDonald 2016-07-12 17:54:40 +00:00
parent 788c9aa7e2
commit ab5285aaab
4 changed files with 55 additions and 16 deletions

View file

@ -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];

View file

@ -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;

View file

@ -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;
}
}

View file

@ -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);