1
- import Combine
2
1
import ComposableArchitecture
2
+ import ReactiveSwift
3
3
import XCTest
4
4
5
5
final class EffectDeferredTests : XCTestCase {
6
- var cancellables : Set < AnyCancellable > = [ ]
7
-
8
6
func testDeferred( ) {
9
- let scheduler = DispatchQueue . test
7
+ let scheduler = TestScheduler ( )
10
8
var values : [ Int ] = [ ]
11
9
12
10
func runDeferredEffect( value: Int ) {
13
- Just ( value)
14
- . eraseToEffect ( )
11
+ SignalProducer ( value: value)
15
12
. deferred ( for: 1 , scheduler: scheduler)
16
- . sink { values. append ( $0) }
17
- . store ( in: & self . cancellables)
13
+ . startWithValues { values. append ( $0) }
18
14
}
19
15
20
16
runDeferredEffect ( value: 1 )
@@ -23,25 +19,25 @@ final class EffectDeferredTests: XCTestCase {
23
19
XCTAssertEqual ( values, [ ] )
24
20
25
21
// Waiting half the time also emits nothing
26
- scheduler. advance ( by: 0.5 )
22
+ scheduler. advance ( by: . milliseconds ( 500 ) )
27
23
XCTAssertEqual ( values, [ ] )
28
24
29
25
// Run another deferred effect.
30
26
runDeferredEffect ( value: 2 )
31
27
32
28
// Waiting half the time emits first deferred effect received.
33
- scheduler. advance ( by: 0.5 )
29
+ scheduler. advance ( by: . milliseconds ( 500 ) )
34
30
XCTAssertEqual ( values, [ 1 ] )
35
31
36
32
// Run another deferred effect.
37
33
runDeferredEffect ( value: 3 )
38
34
39
35
// Waiting half the time emits second deferred effect received.
40
- scheduler. advance ( by: 0.5 )
36
+ scheduler. advance ( by: . milliseconds ( 500 ) )
41
37
XCTAssertEqual ( values, [ 1 , 2 ] )
42
38
43
39
// Waiting the rest of the time emits the final effect value.
44
- scheduler. advance ( by: 0.5 )
40
+ scheduler. advance ( by: . milliseconds ( 500 ) )
45
41
XCTAssertEqual ( values, [ 1 , 2 , 3 ] )
46
42
47
43
// Running out the scheduler
@@ -50,32 +46,30 @@ final class EffectDeferredTests: XCTestCase {
50
46
}
51
47
52
48
func testDeferredIsLazy( ) {
53
- let scheduler = DispatchQueue . test
49
+ let scheduler = TestScheduler ( )
54
50
var values : [ Int ] = [ ]
55
51
var effectRuns = 0
56
52
57
53
func runDeferredEffect( value: Int ) {
58
- Deferred { ( ) -> Just < Int > in
54
+ Effect . deferred { ( ) -> Effect < Int , Never > in
59
55
effectRuns += 1
60
- return Just ( value)
56
+ return Effect ( value : value)
61
57
}
62
- . eraseToEffect ( )
63
58
. deferred ( for: 1 , scheduler: scheduler)
64
- . sink { values. append ( $0) }
65
- . store ( in: & self . cancellables)
59
+ . startWithValues { values. append ( $0) }
66
60
}
67
61
68
62
runDeferredEffect ( value: 1 )
69
63
70
64
XCTAssertEqual ( values, [ ] )
71
65
XCTAssertEqual ( effectRuns, 0 )
72
66
73
- scheduler. advance ( by: 0.5 )
67
+ scheduler. advance ( by: . milliseconds ( 500 ) )
74
68
75
69
XCTAssertEqual ( values, [ ] )
76
70
XCTAssertEqual ( effectRuns, 0 )
77
71
78
- scheduler. advance ( by: 0.5 )
72
+ scheduler. advance ( by: . milliseconds ( 500 ) )
79
73
80
74
XCTAssertEqual ( values, [ 1 ] )
81
75
XCTAssertEqual ( effectRuns, 1 )
0 commit comments