/
ModuleFixtures.h
78 lines (53 loc) · 1.5 KB
/
ModuleFixtures.h
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
#import <Foundation/Foundation.h>
#import "Fixtures.h"
#import "SpecHelper.h"
extern BOOL gEagerSingletonHook;
@protocol MetaCar<NSObject>
- (id)manufacture;
@end
@protocol GearBox<NSObject>
- (void)shiftUp;
- (void)shiftDown;
@optional // ;-)
- (void)engageClutch;
@end
@interface Car(Meta)
// Perfect example of why factories are OK alternatives to class methods.
// Car that manufactures a...car?
+ (id)manufacture;
@end
@interface AfterMarketGearBox : NSObject<GearBox>
@end
@interface EagerSingleton : NSObject
@end
@interface MyModule : JSObjectionModule
{
Engine *_engine;
id<GearBox> _gearBox;
BOOL _instrumentInvalidEagerSingleton;
BOOL _instrumentInvalidMetaClass;
}
@property(nonatomic, readonly) Engine *engine;
@property(nonatomic, readonly) id<GearBox> gearBox;
@property(nonatomic, assign) BOOL instrumentInvalidEagerSingleton;
@property (nonatomic, assign) BOOL instrumentInvalidMetaClass;
- (id)initWithEngine:(Engine *)engine andGearBox:(id<GearBox>)gearBox;
@end
@interface CarProvider : NSObject<JSObjectionProvider>
@end
@interface GearBoxProvider : NSObject<JSObjectionProvider>
@end
@interface ProviderModule : JSObjectionModule
@end
@interface BlockModule : JSObjectionModule
@end
@interface CreditCardValidator : NSObject
@end
@protocol CreditCardProcessor <NSObject>
- (void)processNumber:(NSString *)number;
@end
@interface VisaCCProcessor : NSObject<CreditCardProcessor> {
CreditCardValidator *_validator;
}
@property (nonatomic, retain) CreditCardValidator *validator;
@end