| // | |
| // RACBlockTrampolineSpec.m | |
| // ReactiveCocoa | |
| // | |
| // Created by Josh Abernathy on 10/28/12. | |
| // Copyright (c) 2012 GitHub, Inc. All rights reserved. | |
| // | |
| #import "RACBlockTrampoline.h" | |
| #import "RACTuple.h" | |
| SpecBegin(RACBlockTrampoline) | |
| it(@"should invoke the block with the given arguments", ^{ | |
| __block NSString *stringArg; | |
| __block NSNumber *numberArg; | |
| id (^block)(NSString *, NSNumber *) = ^ id (NSString *string, NSNumber *number) { | |
| stringArg = string; | |
| numberArg = number; | |
| return nil; | |
| }; | |
| [RACBlockTrampoline invokeBlock:block withArguments:RACTuplePack(@"hi", @1)]; | |
| expect(stringArg).to.equal(@"hi"); | |
| expect(numberArg).to.equal(@1); | |
| }); | |
| it(@"should return the result of the block invocation", ^{ | |
| NSString * (^block)(NSString *) = ^(NSString *string) { | |
| return string.uppercaseString; | |
| }; | |
| NSString *result = [RACBlockTrampoline invokeBlock:block withArguments:RACTuplePack(@"hi")]; | |
| expect(result).to.equal(@"HI"); | |
| }); | |
| it(@"should pass RACTupleNils as nil", ^{ | |
| __block id arg; | |
| id (^block)(id) = ^ id (id obj) { | |
| arg = obj; | |
| return nil; | |
| }; | |
| [RACBlockTrampoline invokeBlock:block withArguments:RACTuplePack(nil)]; | |
| expect(arg).to.beNil(); | |
| }); | |
| SpecEnd |