blob: 7e410c24734894a14e19068b038ad77bbcff852b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
//---------------------------------------------------------------------------------------
// $Id$
// Copyright (c) 2009 by Mulle Kybernetik. See License file for details.
//---------------------------------------------------------------------------------------
#import "OCObserverMockObject.h"
#import "OCMObserverRecorder.h"
@implementation OCObserverMockObject
#pragma mark Initialisers, description, accessors, etc.
- (id)init
{
[super init];
recorders = [[NSMutableArray alloc] init];
return self;
}
- (void)dealloc
{
[recorders release];
[super dealloc];
}
- (NSString *)description
{
return @"OCMockObserver";
}
- (void)setExpectationOrderMatters:(BOOL)flag
{
expectationOrderMatters = flag;
}
#pragma mark Public API
- (id)expect
{
OCMObserverRecorder *recorder = [[[OCMObserverRecorder alloc] init] autorelease];
[recorders addObject:recorder];
return recorder;
}
- (void)verify
{
if([recorders count] == 1)
{
[NSException raise:NSInternalInconsistencyException format:@"%@: expected notification was not observed: %@",
[self description], [[recorders lastObject] description]];
}
if([recorders count] > 0)
{
[NSException raise:NSInternalInconsistencyException format:@"%@ : %d expected notifications were not observed.",
[self description], [recorders count]];
}
}
#pragma mark Receiving notifications
- (void)handleNotification:(NSNotification *)aNotification
{
int i, limit;
limit = expectationOrderMatters ? 1 : [recorders count];
for(i = 0; i < limit; i++)
{
if([[recorders objectAtIndex:i] matchesNotification:aNotification])
{
[recorders removeObjectAtIndex:i];
return;
}
}
[NSException raise:NSInternalInconsistencyException format:@"%@: unexpected notification observed: %@", [self description],
[aNotification description]];
}
@end
|