RACBlockTrampolineSpec.m 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. //
  2. // RACBlockTrampolineSpec.m
  3. // ReactiveCocoa
  4. //
  5. // Created by Josh Abernathy on 10/28/12.
  6. // Copyright (c) 2012 GitHub, Inc. All rights reserved.
  7. //
  8. #import <Quick/Quick.h>
  9. #import <Nimble/Nimble.h>
  10. #import "RACBlockTrampoline.h"
  11. #import "RACTuple.h"
  12. QuickSpecBegin(RACBlockTrampolineSpec)
  13. qck_it(@"should invoke the block with the given arguments", ^{
  14. __block NSString *stringArg;
  15. __block NSNumber *numberArg;
  16. id (^block)(NSString *, NSNumber *) = ^ id (NSString *string, NSNumber *number) {
  17. stringArg = string;
  18. numberArg = number;
  19. return nil;
  20. };
  21. [RACBlockTrampoline invokeBlock:block withArguments:RACTuplePack(@"hi", @1)];
  22. expect(stringArg).to(equal(@"hi"));
  23. expect(numberArg).to(equal(@1));
  24. });
  25. qck_it(@"should return the result of the block invocation", ^{
  26. NSString * (^block)(NSString *) = ^(NSString *string) {
  27. return string.uppercaseString;
  28. };
  29. NSString *result = [RACBlockTrampoline invokeBlock:block withArguments:RACTuplePack(@"hi")];
  30. expect(result).to(equal(@"HI"));
  31. });
  32. qck_it(@"should pass RACTupleNils as nil", ^{
  33. __block id arg;
  34. id (^block)(id) = ^ id (id obj) {
  35. arg = obj;
  36. return nil;
  37. };
  38. [RACBlockTrampoline invokeBlock:block withArguments:RACTuplePack(nil)];
  39. expect(arg).to(beNil());
  40. });
  41. QuickSpecEnd