@@ -107,30 +107,32 @@ final class EffectTests: XCTestCase {
107
107
#if swift(>=5.7) && (canImport(RegexBuilder) || !os(macOS) && !targetEnvironment(macCatalyst))
108
108
func testMerge( ) async {
109
109
if #available( iOS 16 , macOS 13 , tvOS 16 , watchOS 9 , * ) {
110
- let clock = TestClock ( )
110
+ await _withMainSerialExecutor {
111
+ let clock = TestClock ( )
111
112
112
- let effect = EffectPublisher < Int , Never > . merge (
113
- ( 1 ... 3 ) . map { count in
114
- . task {
115
- try await clock. sleep ( for: . seconds( count) )
116
- return count
113
+ let effect = EffectPublisher < Int , Never > . merge (
114
+ ( 1 ... 3 ) . map { count in
115
+ . task {
116
+ try await clock. sleep ( for: . seconds( count) )
117
+ return count
118
+ }
117
119
}
118
- }
119
- )
120
+ )
120
121
121
- var values : [ Int ] = [ ]
122
- effect. sink ( receiveValue: { values. append ( $0) } ) . store ( in: & self . cancellables)
122
+ var values : [ Int ] = [ ]
123
+ effect. sink ( receiveValue: { values. append ( $0) } ) . store ( in: & self . cancellables)
123
124
124
- XCTAssertEqual ( values, [ ] )
125
+ XCTAssertEqual ( values, [ ] )
125
126
126
- await clock. advance ( by: . seconds( 1 ) )
127
- XCTAssertEqual ( values, [ 1 ] )
127
+ await clock. advance ( by: . seconds( 1 ) )
128
+ XCTAssertEqual ( values, [ 1 ] )
128
129
129
- await clock. advance ( by: . seconds( 1 ) )
130
- XCTAssertEqual ( values, [ 1 , 2 ] )
130
+ await clock. advance ( by: . seconds( 1 ) )
131
+ XCTAssertEqual ( values, [ 1 , 2 ] )
131
132
132
- await clock. advance ( by: . seconds( 1 ) )
133
- XCTAssertEqual ( values, [ 1 , 2 , 3 ] )
133
+ await clock. advance ( by: . seconds( 1 ) )
134
+ XCTAssertEqual ( values, [ 1 , 2 , 3 ] )
135
+ }
134
136
}
135
137
}
136
138
#endif
0 commit comments