blob: fcb48379e2b7ecb159497fa476b5262a7e8e0743 [file] [log] [blame]
//
// NSObjectRACAppKitBindingsSpec.m
// ReactiveCocoa
//
// Created by Justin Spahr-Summers on 2013-07-01.
// Copyright (c) 2013 GitHub, Inc. All rights reserved.
//
#import "RACChannelExamples.h"
#import "EXTKeyPathCoding.h"
#import "NSObject+RACAppKitBindings.h"
SpecBegin(NSObjectRACAppKitBindings)
itShouldBehaveLike(RACViewChannelExamples, ^{
return @{
RACViewChannelExampleCreateViewBlock: ^{
return [[NSSlider alloc] initWithFrame:NSZeroRect];
},
RACViewChannelExampleCreateTerminalBlock: ^(NSSlider *view) {
return [view rac_channelToBinding:NSValueBinding];
},
RACViewChannelExampleKeyPath: @keypath(NSSlider.new, objectValue),
RACViewChannelExampleSetViewValueBlock: ^(NSSlider *view, NSNumber *value) {
view.objectValue = value;
// Bindings don't actually trigger from programmatic modification. Do it
// manually.
NSDictionary *bindingInfo = [view infoForBinding:NSValueBinding];
[bindingInfo[NSObservedObjectKey] setValue:value forKeyPath:bindingInfo[NSObservedKeyPathKey]];
}
};
});
SpecEnd