@@ -4,6 +4,11 @@ import XCTest
4
4
@testable import Hooks
5
5
6
6
final class UseEffectTests : XCTestCase {
7
+ enum EffectOperation : Equatable {
8
+ case effect( Int )
9
+ case cleanup( Int )
10
+ }
11
+
7
12
func testEffectWithoutPreservationKey( ) {
8
13
var effectCount = 0
9
14
@@ -98,6 +103,30 @@ final class UseEffectTests: XCTestCase {
98
103
XCTAssertEqual ( cleanupCount, 2 )
99
104
}
100
105
106
+ func testEffectOperationsOrder( ) {
107
+ var operations : [ EffectOperation ] = [ ]
108
+ var step = 1
109
+
110
+ let tester = HookTester {
111
+ useEffect ( . preserved( by: step) ) {
112
+ let effectStep = step
113
+ operations. append ( . effect( effectStep) )
114
+ return { operations. append ( . cleanup( effectStep) ) }
115
+ }
116
+ }
117
+
118
+ XCTAssertEqual ( operations, [ . effect( 1 ) ] )
119
+
120
+ step += 1
121
+ tester. update ( )
122
+
123
+ XCTAssertEqual ( operations, [ . effect( 1 ) , . cleanup( 1 ) , . effect( 2 ) ] )
124
+
125
+ tester. dispose ( )
126
+
127
+ XCTAssertEqual ( operations, [ . effect( 1 ) , . cleanup( 1 ) , . effect( 2 ) , . cleanup( 2 ) ] )
128
+ }
129
+
101
130
func testLayoutEffectWithoutPreservationKey( ) {
102
131
var effectCount = 0
103
132
@@ -190,4 +219,28 @@ final class UseEffectTests: XCTestCase {
190
219
tester. dispose ( )
191
220
XCTAssertEqual ( cleanupCount, 2 )
192
221
}
222
+
223
+ func testLayoutEffectOperationsOrder( ) {
224
+ var operations : [ EffectOperation ] = [ ]
225
+ var step = 1
226
+
227
+ let tester = HookTester {
228
+ useLayoutEffect ( . preserved( by: step) ) {
229
+ let effectStep = step
230
+ operations. append ( . effect( effectStep) )
231
+ return { operations. append ( . cleanup( effectStep) ) }
232
+ }
233
+ }
234
+
235
+ XCTAssertEqual ( operations, [ . effect( 1 ) ] )
236
+
237
+ step += 1
238
+ tester. update ( )
239
+
240
+ XCTAssertEqual ( operations, [ . effect( 1 ) , . cleanup( 1 ) , . effect( 2 ) ] )
241
+
242
+ tester. dispose ( )
243
+
244
+ XCTAssertEqual ( operations, [ . effect( 1 ) , . cleanup( 1 ) , . effect( 2 ) , . cleanup( 2 ) ] )
245
+ }
193
246
}
0 commit comments