@@ -354,10 +354,19 @@ extension DelegateProxyTest {
354354 let mock = MockPureSwiftDelegate ( )
355355
356356 view. delegate = mock
357-
357+
358358 let proxy = view. rx. proxy
359359 XCTAssertTrue ( view. delegate === proxy)
360360 XCTAssertTrue ( view. rx. proxy. forwardToDelegate ( ) === mock)
361+
362+ var latestValue : Int ? = nil
363+ _ = view. rx. testIt. subscribe ( onNext: {
364+ latestValue = $0
365+ } )
366+
367+ XCTAssertEqual ( latestValue, nil )
368+ view. testIt ( with: 3 )
369+ XCTAssertEqual ( latestValue, 3 )
361370 }
362371}
363372
@@ -628,10 +637,16 @@ class ExtendClassViewDelegateProxy_b: InitialClassViewDelegateProxy {
628637}
629638
630639
631- protocol PureSwiftDelegate : class { }
640+ protocol PureSwiftDelegate : class {
641+ func delegateTestIt( with: Int )
642+ }
632643
633644class PureSwiftView : ReactiveCompatible {
634645 weak var delegate : PureSwiftDelegate ?
646+
647+ func testIt( with: Int ) {
648+ self . delegate? . delegateTestIt ( with: with)
649+ }
635650}
636651
637652extension Reactive where Base: PureSwiftView {
@@ -640,11 +655,19 @@ extension Reactive where Base: PureSwiftView {
640655 }
641656}
642657
658+ extension Reactive where Base: PureSwiftView {
659+ var testIt : ControlEvent < Int > {
660+ return ControlEvent ( events: PureSwiftDelegateProxy . proxy ( for: base) . testItObserver)
661+ }
662+ }
663+
643664class PureSwiftDelegateProxy
644665 : DelegateProxy < PureSwiftView , PureSwiftDelegate >
645666 , DelegateProxyType
646667 , PureSwiftDelegate {
647-
668+
669+ fileprivate let testItObserver = PublishSubject < Int > ( )
670+
648671 init ( parentObject: PureSwiftView ) {
649672 super. init ( parentObject: parentObject, delegateProxy: PureSwiftDelegateProxy . self)
650673 }
@@ -660,9 +683,24 @@ class PureSwiftDelegateProxy
660683 static func setCurrentDelegate( _ delegate: PureSwiftDelegate ? , to object: ParentObject ) {
661684 return object. delegate = delegate
662685 }
686+
687+ func delegateTestIt( with: Int ) {
688+ testItObserver. on ( . next( with) )
689+ self . forwardToDelegate ( ) ? . delegateTestIt ( with: with)
690+ }
691+
692+ deinit {
693+ self . testItObserver. on ( . completed)
694+ }
663695}
664696
665- final class MockPureSwiftDelegate : PureSwiftDelegate { }
697+ final class MockPureSwiftDelegate : PureSwiftDelegate {
698+ var latestValue : Int ?
699+
700+ func delegateTestIt( with: Int ) {
701+ latestValue = with
702+ }
703+ }
666704
667705// }
668706
0 commit comments