Upstream version 11.40.277.0
[platform/framework/web/crosswalk.git] / src / third_party / ocmock / OCMock / OCProtocolMockObject.m
1 //---------------------------------------------------------------------------------------
2 //  $Id$
3 //  Copyright (c) 2005-2008 by Mulle Kybernetik. See License file for details.
4 //---------------------------------------------------------------------------------------
5
6 #import <objc/runtime.h>
7 #import "NSMethodSignature+OCMAdditions.h"
8 #import "OCProtocolMockObject.h"
9
10 @implementation OCProtocolMockObject
11
12 #pragma mark  Initialisers, description, accessors, etc.
13
14 - (id)initWithProtocol:(Protocol *)aProtocol
15 {
16         [super init];
17         mockedProtocol = aProtocol;
18         return self;
19 }
20
21 - (NSString *)description
22 {
23     const char* name = protocol_getName(mockedProtocol);
24     return [NSString stringWithFormat:@"OCMockObject[%s]", name];
25 }
26
27 #pragma mark  Proxy API
28
29 - (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector
30 {
31         struct objc_method_description methodDescription = protocol_getMethodDescription(mockedProtocol, aSelector, YES, YES);
32     if(methodDescription.name == NULL) 
33         {
34         methodDescription = protocol_getMethodDescription(mockedProtocol, aSelector, NO, YES);
35     }
36     if(methodDescription.name == NULL) 
37         {
38         return nil;
39     }
40         return [NSMethodSignature signatureWithObjCTypes:methodDescription.types];
41 }
42
43 - (BOOL)conformsToProtocol:(Protocol *)aProtocol
44 {
45     return protocol_conformsToProtocol(mockedProtocol, aProtocol);
46 }
47
48 - (BOOL)respondsToSelector:(SEL)selector
49 {
50     return ([self methodSignatureForSelector:selector] != nil);
51 }
52
53 @end