@@ -12,36 +12,60 @@ import XCTest
12
12
class ReactiveTests : RxTest {
13
13
}
14
14
15
- final class MyObject {
16
- public var
17
- fileprivate var _something : String = " " // this emulates associated objects
15
+ protocol Objecting : ReactiveCompatible {
16
+ var number : Int { get set }
18
17
}
19
18
20
- final class MyObject {
21
- fileprivate var _something : String = " " // this emulates associated objects
19
+ final class MyObject : Objecting {
20
+ public var number = 0
21
+ fileprivate var something = " " // this emulates associated objects
22
22
}
23
23
24
- extension MyObject : ReactiveCompatible {
25
-
24
+ struct MyStruct : ReactiveCompatible {
25
+ public var number = 0
26
26
}
27
27
28
28
extension Reactive where Base: MyObject {
29
29
var somethingPublic : String {
30
- get {
31
- return base. _something
32
- }
33
- set {
34
- base. _something = newValue
35
- }
30
+ get { base. something }
31
+ set { base. something = newValue }
36
32
}
37
33
}
38
34
35
+ extension Reactive where Base: Objecting {
36
+ var numberPublic : Int { base. number }
37
+ }
38
+
39
+ extension Reactive where Base == MyStruct {
40
+ var numberPublic : Int { base. number }
41
+ }
42
+
39
43
extension ReactiveTests {
40
44
func testEnablesMutations( ) {
41
45
var object = MyObject ( )
42
46
object. rx. somethingPublic = " Aha "
43
47
44
- XCTAssertEqual ( object. _something , " Aha " )
48
+ XCTAssertEqual ( object. something , " Aha " )
45
49
XCTAssertEqual ( object. rx. somethingPublic, " Aha " )
46
50
}
51
+
52
+ func testReactiveStruct( ) {
53
+ var strct = MyStruct ( )
54
+ strct. number = 800
55
+ XCTAssertEqual ( strct. rx. numberPublic, 800 )
56
+ }
57
+
58
+ func testReactiveProtocol( ) {
59
+ let object = MyObject ( )
60
+ XCTAssertEqual ( object. number, object. rx. numberPublic)
61
+
62
+ object. number = 1000
63
+ XCTAssertEqual ( object. rx. numberPublic, 1000 )
64
+ }
65
+
66
+ func testDynamicLookup( ) {
67
+ let object = MyObject ( )
68
+ _ = Observable . just ( 10 ) . bind ( to: object. rx. number)
69
+ XCTAssertEqual ( object. number, 10 )
70
+ }
47
71
}
0 commit comments