Adds `rx_enabled` to `NSControl`.

This commit is contained in:
mrahmiao 2016-01-01 17:51:02 +08:00
parent 96aef6e47a
commit 2ea5b73bd0
3 changed files with 55 additions and 1 deletions

View File

@ -93,5 +93,23 @@ extension NSControl {
}
})
}
/**
Bindable sink for `enabled` property.
*/
public var rx_enabled: AnyObserver<Bool> {
return AnyObserver { [weak self] event in
MainScheduler.ensureExecutingOnScheduler()
switch event {
case .Next(let value):
self?.enabled = value
case .Error(let error):
bindingErrorToInterface(error)
break
case .Completed:
break
}
}
}
}

View File

@ -0,0 +1,32 @@
//
// NSControl+RxTests.swift
// Tests
//
// Created by mrahmiao on 1/1/16.
//
//
import Foundation
import RxSwift
import RxCocoa
import Cocoa
import XCTest
class NSControlTests : RxTest {
}
extension NSControlTests {
func testEnabled_False() {
let subject = NSButton(frame: CGRectMake(0, 0, 1, 1))
just(false).subscribe(subject.rx_enabled).dispose()
XCTAssertTrue(subject.enabled == false)
}
func testEnabled_True() {
let subject = NSButton(frame: CGRectMake(0, 0, 1, 1))
just(true).subscribe(subject.rx_enabled).dispose()
XCTAssertFalse(subject.enabled == true)
}
}

View File

@ -7,6 +7,7 @@
objects = {
/* Begin PBXBuildFile section */
4F0B0B231C36810E00BD0534 /* NSControl+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F0B0B221C36810E00BD0534 /* NSControl+RxTests.swift */; };
5E5D10BB1B48355200432B25 /* Control+RxTests+UIKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E5D10BA1B48355200432B25 /* Control+RxTests+UIKit.swift */; };
C69B65001BA88FAC00A7FA73 /* ObserverTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C69B64FF1BA88FAC00A7FA73 /* ObserverTests.swift */; };
C69B65011BA8957C00A7FA73 /* ObserverTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C69B64FF1BA88FAC00A7FA73 /* ObserverTests.swift */; };
@ -212,6 +213,7 @@
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
4F0B0B221C36810E00BD0534 /* NSControl+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSControl+RxTests.swift"; sourceTree = "<group>"; };
5E5D10BA1B48355200432B25 /* Control+RxTests+UIKit.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = "Control+RxTests+UIKit.swift"; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
C69B64FF1BA88FAC00A7FA73 /* ObserverTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ObserverTests.swift; sourceTree = "<group>"; };
C801EB591B97951100C4D8C4 /* Observable+CreationTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = "Observable+CreationTest.swift"; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
@ -417,6 +419,7 @@
C8BCD3F81C14B901005F1280 /* UIView+RxTests.swift */,
C8BCD3FD1C14BCAD005F1280 /* NSLayoutConstraint+RxTests.swift */,
C8CF47651C1DA04700C3FA6E /* CLLocationManager+RxTests.swift */,
4F0B0B221C36810E00BD0534 /* NSControl+RxTests.swift */,
);
path = RxCocoaTests;
sourceTree = SOURCE_ROOT;
@ -765,6 +768,7 @@
C8BCD3FC1C14B914005F1280 /* NSView+RxTests.swift in Sources */,
C897EC3C1B10E000009C2CB0 /* BehaviorSubjectTest.swift in Sources */,
C88BB8A51B07E64B0064D411 /* QueueTests.swift in Sources */,
4F0B0B231C36810E00BD0534 /* NSControl+RxTests.swift in Sources */,
C8E3812C1B2083C2008CDC33 /* PrimitiveMockObserver.swift in Sources */,
C88BB8A61B07E64B0064D411 /* Observable+SingleTest.swift in Sources */,
C897EC4B1B1123DA009C2CB0 /* Observable+MultipleTest+Zip.swift in Sources */,