NSObjectRACAppKitBindingsSpec.m 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. //
  2. // NSObjectRACAppKitBindingsSpec.m
  3. // ReactiveCocoa
  4. //
  5. // Created by Justin Spahr-Summers on 2013-07-01.
  6. // Copyright (c) 2013 GitHub, Inc. All rights reserved.
  7. //
  8. #import <Quick/Quick.h>
  9. #import <Nimble/Nimble.h>
  10. #import "RACChannelExamples.h"
  11. #import <ReactiveCocoa/EXTKeyPathCoding.h>
  12. #import "NSObject+RACAppKitBindings.h"
  13. QuickSpecBegin(NSObjectRACAppKitBindingsSpec)
  14. qck_itBehavesLike(RACViewChannelExamples, ^{
  15. return @{
  16. RACViewChannelExampleCreateViewBlock: ^{
  17. return [[NSSlider alloc] initWithFrame:NSZeroRect];
  18. },
  19. RACViewChannelExampleCreateTerminalBlock: ^(NSSlider *view) {
  20. return [view rac_channelToBinding:NSValueBinding];
  21. },
  22. RACViewChannelExampleKeyPath: @keypath(NSSlider.new, objectValue),
  23. RACViewChannelExampleSetViewValueBlock: ^(NSSlider *view, NSNumber *value) {
  24. view.objectValue = value;
  25. // Bindings don't actually trigger from programmatic modification. Do it
  26. // manually.
  27. NSDictionary *bindingInfo = [view infoForBinding:NSValueBinding];
  28. [bindingInfo[NSObservedObjectKey] setValue:value forKeyPath:bindingInfo[NSObservedKeyPathKey]];
  29. }
  30. };
  31. });
  32. QuickSpecEnd