2121#import " OCMInvocationStub.h"
2222#import " NSMethodSignature+OCMAdditions.h"
2323
24+ @interface OCClassMockObject ()
25+ @property (nonatomic ) Class mockedClass;
26+ @property (nonatomic ) Class originalMetaClass;
27+ @property (nonatomic ) Class classCreatedForNewMetaClass;
28+ @end
29+
2430@implementation OCClassMockObject
25- {
26- Class mockedClass;
27- Class originalMetaClass;
28- Class classCreatedForNewMetaClass;
29- }
3031
3132#pragma mark Initialisers, description, accessors, etc.
3233
@@ -36,7 +37,7 @@ - (id)initWithClass:(Class)aClass
3637 [NSException raise: NSInvalidArgumentException format: @" Class cannot be Nil." ];
3738
3839 self = [super init ];
39- mockedClass = aClass;
40+ self. mockedClass = aClass;
4041 [self prepareClassForClassMethodMocking ];
4142 return self;
4243}
@@ -49,37 +50,37 @@ - (void)dealloc
4950
5051- (NSString *)description
5152{
52- return [NSString stringWithFormat: @" OCClassMockObject(%@ )" , NSStringFromClass (mockedClass)];
53+ return [NSString stringWithFormat: @" OCClassMockObject(%@ )" , NSStringFromClass (self . mockedClass)];
5354}
5455
5556- (Class )mockedClass
5657{
57- return mockedClass ;
58+ return _mockedClass ;
5859}
5960
6061
6162#pragma mark Extending/overriding superclass behaviour
6263
6364- (void )stopMocking
6465{
65- if (originalMetaClass != nil )
66+ if (self. originalMetaClass != nil )
6667 {
6768 [self stopMockingClassMethods ];
6869 }
69- if (classCreatedForNewMetaClass != nil )
70+ if (self. classCreatedForNewMetaClass != nil )
7071 {
7172 OCMDisposeSubclass (classCreatedForNewMetaClass);
72- classCreatedForNewMetaClass = nil ;
73+ self. classCreatedForNewMetaClass = nil ;
7374 }
7475 [super stopMocking ];
7576}
7677
7778
7879- (void )stopMockingClassMethods
7980{
80- OCMSetAssociatedMockForClass (nil , mockedClass);
81- object_setClass (mockedClass, originalMetaClass);
82- originalMetaClass = nil ;
81+ OCMSetAssociatedMockForClass (nil , self. mockedClass );
82+ object_setClass (self. mockedClass , self. originalMetaClass );
83+ self. originalMetaClass = nil ;
8384 /* created meta class will be disposed later because partial mocks create another subclass depending on it */
8485}
8586
@@ -97,32 +98,32 @@ - (void)addStub:(OCMInvocationStub *)aStub
9798- (void )prepareClassForClassMethodMocking
9899{
99100 /* the runtime and OCMock depend on string and array; we don't intercept methods on them to avoid endless loops */
100- if ([[mockedClass class ] isSubclassOfClass: [NSString class ]] || [[mockedClass class ] isSubclassOfClass: [NSArray class ]])
101+ if ([[self . mockedClass class ] isSubclassOfClass: [NSString class ]] || [[self . mockedClass class ] isSubclassOfClass: [NSArray class ]])
101102 return ;
102103
103104 /* trying to replace class methods on NSManagedObject and subclasses of it doesn't work; see #339 */
104- if ([mockedClass isSubclassOfClass: objc_getClass (" NSManagedObject" )])
105+ if ([self . mockedClass isSubclassOfClass: objc_getClass (" NSManagedObject" )])
105106 return ;
106107
107108 /* if there is another mock for this exact class, stop it */
108- id otherMock = OCMGetAssociatedMockForClass (mockedClass, NO );
109+ id otherMock = OCMGetAssociatedMockForClass (self. mockedClass , NO );
109110 if (otherMock != nil )
110111 [otherMock stopMockingClassMethods ];
111112
112- OCMSetAssociatedMockForClass (self, mockedClass);
113+ OCMSetAssociatedMockForClass (self, self. mockedClass );
113114
114115 /* dynamically create a subclass and use its meta class as the meta class for the mocked class */
115- classCreatedForNewMetaClass = OCMCreateSubclass (mockedClass, mockedClass);
116- originalMetaClass = object_getClass (mockedClass);
117- id newMetaClass = object_getClass (classCreatedForNewMetaClass);
116+ self. classCreatedForNewMetaClass = OCMCreateSubclass (self. mockedClass , self. mockedClass );
117+ self. originalMetaClass = object_getClass (self. mockedClass );
118+ id newMetaClass = object_getClass (self. classCreatedForNewMetaClass );
118119
119120 /* create a dummy initialize method */
120121 Method myDummyInitializeMethod = class_getInstanceMethod ([self mockObjectClass ], @selector (initializeForClassObject ));
121122 const char *initializeTypes = method_getTypeEncoding (myDummyInitializeMethod);
122123 IMP myDummyInitializeIMP = method_getImplementation (myDummyInitializeMethod);
123124 class_addMethod (newMetaClass, @selector (initialize ), myDummyInitializeIMP, initializeTypes);
124125
125- object_setClass (mockedClass, newMetaClass); // only after dummy initialize is installed (iOS9)
126+ object_setClass (self. mockedClass , newMetaClass); // only after dummy initialize is installed (iOS9)
126127
127128 /* point forwardInvocation: of the object to the implementation in the mock */
128129 Method myForwardMethod = class_getInstanceMethod ([self mockObjectClass ], @selector (forwardInvocationForClassObject: ));
@@ -132,7 +133,7 @@ - (void)prepareClassForClassMethodMocking
132133 /* adding forwarder for most class methods (instance methods on meta class) to allow for verify after run */
133134 NSArray *methodBlackList = @[@" class" , @" forwardingTargetForSelector:" , @" methodSignatureForSelector:" , @" forwardInvocation:" , @" isBlock" ,
134135 @" instanceMethodForwarderForSelector:" , @" instanceMethodSignatureForSelector:" , @" resolveClassMethod:" ];
135- [NSObject enumerateMethodsInClass: originalMetaClass usingBlock: ^(Class cls, SEL sel) {
136+ [NSObject enumerateMethodsInClass: self . originalMetaClass usingBlock: ^(Class cls, SEL sel) {
136137 if ((cls == object_getClass ([NSObject class ])) || (cls == [NSObject class ]) || (cls == object_getClass (cls)))
137138 return ;
138139 if (OCMIsApplePrivateMethod (cls, sel))
@@ -154,15 +155,15 @@ - (void)prepareClassForClassMethodMocking
154155- (void )setupForwarderForClassMethodSelector : (SEL )selector
155156{
156157 SEL aliasSelector = OCMAliasForOriginalSelector (selector);
157- if (class_getClassMethod (mockedClass, aliasSelector) != NULL )
158+ if (class_getClassMethod (self. mockedClass , aliasSelector) != NULL )
158159 return ;
159160
160- Method originalMethod = class_getClassMethod (mockedClass, selector);
161+ Method originalMethod = class_getClassMethod (self. mockedClass , selector);
161162 IMP originalIMP = method_getImplementation (originalMethod);
162163 const char *types = method_getTypeEncoding (originalMethod);
163164
164- Class metaClass = object_getClass (mockedClass);
165- IMP forwarderIMP = [originalMetaClass instanceMethodForwarderForSelector: selector];
165+ Class metaClass = object_getClass (self. mockedClass );
166+ IMP forwarderIMP = [self . originalMetaClass instanceMethodForwarderForSelector: selector];
166167 class_addMethod (metaClass, aliasSelector, originalIMP, types);
167168 class_replaceMethod (metaClass, selector, forwarderIMP, types);
168169}
@@ -193,10 +194,10 @@ - (void)initializeForClassObject
193194
194195- (NSMethodSignature *)methodSignatureForSelector : (SEL )aSelector
195196{
196- NSMethodSignature *signature = [mockedClass instanceMethodSignatureForSelector: aSelector];
197+ NSMethodSignature *signature = [self . mockedClass instanceMethodSignatureForSelector: aSelector];
197198 if (signature == nil )
198199 {
199- signature = [NSMethodSignature signatureForDynamicPropertyAccessedWithSelector: aSelector inClass: mockedClass];
200+ signature = [NSMethodSignature signatureForDynamicPropertyAccessedWithSelector: aSelector inClass: self . mockedClass];
200201 }
201202 return signature;
202203}
@@ -208,22 +209,22 @@ - (Class)mockObjectClass
208209
209210- (Class )class
210211{
211- return mockedClass ;
212+ return _mockedClass ;
212213}
213214
214215- (BOOL )respondsToSelector : (SEL )selector
215216{
216- return [mockedClass instancesRespondToSelector: selector];
217+ return [self . mockedClass instancesRespondToSelector: selector];
217218}
218219
219220- (BOOL )isKindOfClass : (Class )aClass
220221{
221- return [mockedClass isSubclassOfClass: aClass];
222+ return [self . mockedClass isSubclassOfClass: aClass];
222223}
223224
224225- (BOOL )conformsToProtocol : (Protocol *)aProtocol
225226{
226- Class clazz = mockedClass;
227+ Class clazz = self. mockedClass ;
227228 while (clazz != nil ) {
228229 if (class_conformsToProtocol (clazz, aProtocol)) {
229230 return YES ;
@@ -259,52 +260,52 @@ @implementation OCClassMockObject(NSIsKindsImplementation)
259260
260261- (BOOL )isNSValue__
261262{
262- return [mockedClass isSubclassOfClass: [NSValue class ]];
263+ return [self . mockedClass isSubclassOfClass: [NSValue class ]];
263264}
264265
265266- (BOOL )isNSTimeZone__
266267{
267- return [mockedClass isSubclassOfClass: [NSTimeZone class ]];
268+ return [self . mockedClass isSubclassOfClass: [NSTimeZone class ]];
268269}
269270
270271- (BOOL )isNSSet__
271272{
272- return [mockedClass isSubclassOfClass: [NSSet class ]];
273+ return [self . mockedClass isSubclassOfClass: [NSSet class ]];
273274}
274275
275276- (BOOL )isNSOrderedSet__
276277{
277- return [mockedClass isSubclassOfClass: [NSOrderedSet class ]];
278+ return [self . mockedClass isSubclassOfClass: [NSOrderedSet class ]];
278279}
279280
280281- (BOOL )isNSNumber__
281282{
282- return [mockedClass isSubclassOfClass: [NSNumber class ]];
283+ return [self . mockedClass isSubclassOfClass: [NSNumber class ]];
283284}
284285
285286- (BOOL )isNSDate__
286287{
287- return [mockedClass isSubclassOfClass: [NSDate class ]];
288+ return [self . mockedClass isSubclassOfClass: [NSDate class ]];
288289}
289290
290291- (BOOL )isNSString__
291292{
292- return [mockedClass isSubclassOfClass: [NSString class ]];
293+ return [self . mockedClass isSubclassOfClass: [NSString class ]];
293294}
294295
295296- (BOOL )isNSDictionary__
296297{
297- return [mockedClass isSubclassOfClass: [NSDictionary class ]];
298+ return [self . mockedClass isSubclassOfClass: [NSDictionary class ]];
298299}
299300
300301- (BOOL )isNSData__
301302{
302- return [mockedClass isSubclassOfClass: [NSData class ]];
303+ return [self . mockedClass isSubclassOfClass: [NSData class ]];
303304}
304305
305306- (BOOL )isNSArray__
306307{
307- return [mockedClass isSubclassOfClass: [NSArray class ]];
308+ return [self . mockedClass isSubclassOfClass: [NSArray class ]];
308309}
309310
310311@end
0 commit comments