Upstream version 11.40.277.0
[platform/framework/web/crosswalk.git] / src / third_party / ocmock / OCMock / OCMReturnValueProvider.m
1 //---------------------------------------------------------------------------------------
2 //  $Id$
3 //  Copyright (c) 2009 by Mulle Kybernetik. See License file for details.
4 //---------------------------------------------------------------------------------------
5
6 #import "NSMethodSignature+OCMAdditions.h"
7 #import "OCMReturnValueProvider.h"
8
9
10 @implementation OCMReturnValueProvider
11
12 - (id)initWithValue:(id)aValue
13 {
14         self = [super init];
15         returnValue = [aValue retain];
16         return self;
17 }
18
19 - (void)dealloc
20 {
21         [returnValue release];
22         [super dealloc];
23 }
24
25 - (void)handleInvocation:(NSInvocation *)anInvocation
26 {
27         const char *returnType = [[anInvocation methodSignature] methodReturnTypeWithoutQualifiers];
28         if(strcmp(returnType, @encode(id)) != 0)
29                 @throw [NSException exceptionWithName:NSInvalidArgumentException reason:@"Expected invocation with object return type. Did you mean to use andReturnValue: instead?" userInfo:nil];
30         [anInvocation setReturnValue:&returnValue];     
31 }
32
33 @end