|
8 | 8 | import Foundation |
9 | 9 | import Combine |
10 | 10 |
|
11 | | -//final public class BlocTest<S: Equatable, B: Base<S>> { |
12 | | -// public static func execute( |
13 | | -// build: () -> B, |
14 | | -// act: ((B) -> Void)?, |
15 | | -// wait: TimeInterval? = 0, |
16 | | -// expect: (() -> Any)?, |
17 | | -// verify: ((Bool, String) -> Void) |
18 | | -// ) { |
19 | | -// var areEqual = false |
20 | | -// var states = [S]() |
21 | | -// let bloc = build() |
22 | | -// let scheduler = ImmediateScheduler.shared |
23 | | -// let cancellable = bloc.$state |
24 | | -// .subscribe(on: scheduler) |
25 | | -// .delay(for: .seconds(wait ?? 0), scheduler: scheduler) |
26 | | -// .sink(receiveValue: { value in |
27 | | -// states.append(value) |
28 | | -// }) |
29 | | -// act?(bloc) |
30 | | -// if expect != nil { |
31 | | -// let expected = expect!() |
32 | | -// areEqual = "\(states)" == "\(expected)" |
33 | | -// let message = "State received: \(states). \nStates expected: \(expected)" |
34 | | -// verify(areEqual, message) |
35 | | -// } |
36 | | -// cancellable.cancel() |
37 | | -// } |
38 | | -//} |
| 11 | +final public class BlocTest<S: Equatable, B: Base<S>> { |
| 12 | + public static func execute( |
| 13 | + build: () -> B, |
| 14 | + act: ((B) -> Void)?, |
| 15 | + wait: TimeInterval? = 0, |
| 16 | + expect: (() -> Any)?, |
| 17 | + verify: ((Bool, String) -> Void) |
| 18 | + ) { |
| 19 | + var areEqual = false |
| 20 | + var states = [S]() |
| 21 | + let bloc = build() |
| 22 | + let scheduler = ImmediateScheduler.shared |
| 23 | + let cancellable = bloc.$state |
| 24 | + .subscribe(on: scheduler) |
| 25 | + .delay(for: .seconds(wait ?? 0), scheduler: scheduler) |
| 26 | + .sink(receiveValue: { value in |
| 27 | + states.append(value) |
| 28 | + }) |
| 29 | + act?(bloc) |
| 30 | + if expect != nil { |
| 31 | + let expected = expect!() |
| 32 | + areEqual = "\(states)" == "\(expected)" |
| 33 | + let message = "State received: \(states). \nStates expected: \(expected)" |
| 34 | + verify(areEqual, message) |
| 35 | + } |
| 36 | + cancellable.cancel() |
| 37 | + } |
| 38 | +} |
0 commit comments