@@ -354,10 +354,19 @@ extension DelegateProxyTest {
354
354
let mock = MockPureSwiftDelegate ( )
355
355
356
356
view. delegate = mock
357
-
357
+
358
358
let proxy = view. rx. proxy
359
359
XCTAssertTrue ( view. delegate === proxy)
360
360
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 )
361
370
}
362
371
}
363
372
@@ -628,10 +637,16 @@ class ExtendClassViewDelegateProxy_b: InitialClassViewDelegateProxy {
628
637
}
629
638
630
639
631
- protocol PureSwiftDelegate : class { }
640
+ protocol PureSwiftDelegate : class {
641
+ func delegateTestIt( with: Int )
642
+ }
632
643
633
644
class PureSwiftView : ReactiveCompatible {
634
645
weak var delegate : PureSwiftDelegate ?
646
+
647
+ func testIt( with: Int ) {
648
+ self . delegate? . delegateTestIt ( with: with)
649
+ }
635
650
}
636
651
637
652
extension Reactive where Base: PureSwiftView {
@@ -640,11 +655,19 @@ extension Reactive where Base: PureSwiftView {
640
655
}
641
656
}
642
657
658
+ extension Reactive where Base: PureSwiftView {
659
+ var testIt : ControlEvent < Int > {
660
+ return ControlEvent ( events: PureSwiftDelegateProxy . proxy ( for: base) . testItObserver)
661
+ }
662
+ }
663
+
643
664
class PureSwiftDelegateProxy
644
665
: DelegateProxy < PureSwiftView , PureSwiftDelegate >
645
666
, DelegateProxyType
646
667
, PureSwiftDelegate {
647
-
668
+
669
+ fileprivate let testItObserver = PublishSubject < Int > ( )
670
+
648
671
init ( parentObject: PureSwiftView ) {
649
672
super. init ( parentObject: parentObject, delegateProxy: PureSwiftDelegateProxy . self)
650
673
}
@@ -660,9 +683,24 @@ class PureSwiftDelegateProxy
660
683
static func setCurrentDelegate( _ delegate: PureSwiftDelegate ? , to object: ParentObject ) {
661
684
return object. delegate = delegate
662
685
}
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
+ }
663
695
}
664
696
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
+ }
666
704
667
705
// }
668
706
0 commit comments