ObjFW  Check-in [3791ec8e42]

Overview
Comment:Improve OFKernelEventObserverTests
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 3791ec8e4216fff03ef2e7f67f09362b22146a377c8ba7f04a0d143ec895163d
User & Date: js on 2015-05-03 09:39:03
Other Links: manifest | tags
Context
2015-05-03
10:16
OFTCPSocket: Add -[setTCPNoDelayEnabled:] check-in: 12fbe85aab user: js tags: trunk
09:39
Improve OFKernelEventObserverTests check-in: 3791ec8e42 user: js tags: trunk
2015-05-02
23:52
OF_ENSURE: Wrap in do / while (0) check-in: e1b2c4bb1e user: js tags: trunk
Changes

Modified tests/OFKernelEventObserverTests.m from [ce29c0174f] to [5bcda94d87].

23
24
25
26
27
28
29
30

31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53

54
55
56


57

58
59
60
61
62
63
64

#import "TestsAppDelegate.h"

static OFString *module = @"OFKernelEventObserverSocket";
static OFKernelEventObserver *observer;
static int events = 0;
static id expectedObject;
static bool readData = false;


@interface ObserverDelegate: OFObject
- (void)objectIsReadyForReading: (id)object;
@end

@implementation ObserverDelegate
- (void)objectIsReadyForReading: (id)object
{
	events++;

	OF_ENSURE(object == expectedObject);

	if ([object isListening]) {
		OFTCPSocket *client = [object accept];

		[observer addObjectForReading: client];
		[client writeBuffer: "0"
			     length: 1];

		return;
	} else if (readData) {
		char buf;


		[object readIntoBuffer: &buf
				length: 1];



		OF_ENSURE(buf == '0');

	}
}
@end

@implementation TestsAppDelegate (OFKernelEventObserverTests)
- (void)kernelEventObserverTests
{







|
>













|

<
|
|
<
<



>
|
|
|
>
>
|
>







23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46

47
48


49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66

#import "TestsAppDelegate.h"

static OFString *module = @"OFKernelEventObserverSocket";
static OFKernelEventObserver *observer;
static int events = 0;
static id expectedObject;
static bool readData = false, expectEOS = false;
static OFTCPSocket *accepted = nil;

@interface ObserverDelegate: OFObject
- (void)objectIsReadyForReading: (id)object;
@end

@implementation ObserverDelegate
- (void)objectIsReadyForReading: (id)object
{
	events++;

	OF_ENSURE(object == expectedObject);

	if ([object isListening]) {
		accepted = [[object accept] retain];


		[accepted writeBuffer: "0"
			       length: 1];


	} else if (readData) {
		char buf;

		if (expectEOS)
			OF_ENSURE([object readIntoBuffer: &buf
						  length: 1] == 0);
		else {
			OF_ENSURE([object readIntoBuffer: &buf
						  length: 1] == 1);
			OF_ENSURE(buf == '0');
		}
	}
}
@end

@implementation TestsAppDelegate (OFKernelEventObserverTests)
- (void)kernelEventObserverTests
{
80
81
82
83
84
85
86
87

88
89
90
91
92
93
94
95
96
97





98
99
100
101
102
103
104
	TEST(@"-[addObjectForReading:]",
	    R([observer addObjectForReading: sock1]))

	[sock2 connectToHost: @"127.0.0.1"
			port: port];
	TEST(@"-[observe] waiting for connection",
	    (expectedObject = sock1) &&
	    [observer observeForTimeInterval: 0.01] == 1)


	TEST(@"-[observe] waiting for data",
	    (expectedObject = sock2) &&
	    R([observer addObjectForReading: sock2]) &&
	    [observer observeForTimeInterval: 0.01] == 1)

	TEST(@"-[observe] keeping event until read",
	    R(readData = true) && [observer observeForTimeInterval: 0.01] == 1)

	TEST(@"-[observe] time out due to no events",





	    R(readData = false) && [observer observeForTimeInterval: 0.01] == 0)

	TEST(@"-[observe] correct number of events", events == 3)

	[pool drain];
}
@end







|
>




|


|


>
>
>
>
>
|

|




82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
	TEST(@"-[addObjectForReading:]",
	    R([observer addObjectForReading: sock1]))

	[sock2 connectToHost: @"127.0.0.1"
			port: port];
	TEST(@"-[observe] waiting for connection",
	    (expectedObject = sock1) &&
	    [observer observeForTimeInterval: 0.01])
	[accepted autorelease];

	TEST(@"-[observe] waiting for data",
	    (expectedObject = sock2) &&
	    R([observer addObjectForReading: sock2]) &&
	    [observer observeForTimeInterval: 0.01])

	TEST(@"-[observe] keeping event until read",
	    R(readData = true) && [observer observeForTimeInterval: 0.01])

	TEST(@"-[observe] time out due to no events",
	    R(readData = false) && ![observer observeForTimeInterval: 0.01])

	[accepted close];
	TEST(@"-[observe] closed connection",
	    R(readData = true) && R(expectEOS = true) &&
	    [observer observeForTimeInterval: 0.01])

	TEST(@"-[observe] correct number of events", events == 4)

	[pool drain];
}
@end