@@ -199,6 +199,7 @@ extension DisposableTest
199
199
}
200
200
}
201
201
202
+ // refCount disposable
202
203
extension DisposableTest {
203
204
func testRefCountDisposable_RefCounting( ) {
204
205
let d = BooleanDisposable ( )
@@ -243,7 +244,69 @@ extension DisposableTest {
243
244
244
245
d2. dispose ( )
245
246
XCTAssertEqual ( d. isDisposed, true )
247
+ }
248
+ }
249
+
250
+ // serial disposable
251
+ extension DisposableTest {
252
+ func testSerialDisposable_firstDisposedThenSet( ) {
253
+ let serialDisposable = SerialDisposable ( )
254
+ XCTAssertFalse ( serialDisposable. isDisposed)
255
+
256
+ serialDisposable. dispose ( )
257
+ XCTAssertTrue ( serialDisposable. isDisposed)
258
+
259
+ let testDisposable = TestDisposable ( )
260
+ serialDisposable. disposable = testDisposable
261
+ XCTAssertEqual ( testDisposable. count, 1 )
262
+
263
+ serialDisposable. dispose ( )
264
+ XCTAssertTrue ( serialDisposable. isDisposed)
265
+ XCTAssertEqual ( testDisposable. count, 1 )
266
+ }
267
+
268
+ func testSerialDisposable_firstSetThenDisposed( ) {
269
+ let serialDisposable = SerialDisposable ( )
270
+ XCTAssertFalse ( serialDisposable. isDisposed)
246
271
272
+ let testDisposable = TestDisposable ( )
273
+
274
+ serialDisposable. disposable = testDisposable
275
+ XCTAssertEqual ( testDisposable. count, 0 )
276
+
277
+ serialDisposable. dispose ( )
278
+ XCTAssertTrue ( serialDisposable. isDisposed)
279
+ XCTAssertEqual ( testDisposable. count, 1 )
280
+
281
+ serialDisposable. dispose ( )
282
+ XCTAssertTrue ( serialDisposable. isDisposed)
283
+ XCTAssertEqual ( testDisposable. count, 1 )
284
+ }
285
+
286
+ func testSerialDisposable_firstSetThenSetAnotherThenDisposed( ) {
287
+ let serialDisposable = SerialDisposable ( )
288
+ XCTAssertFalse ( serialDisposable. isDisposed)
289
+
290
+ let testDisposable1 = TestDisposable ( )
291
+ let testDisposable2 = TestDisposable ( )
292
+
293
+ serialDisposable. disposable = testDisposable1
294
+ XCTAssertEqual ( testDisposable1. count, 0 )
295
+ XCTAssertEqual ( testDisposable2. count, 0 )
296
+
297
+ serialDisposable. disposable = testDisposable2
298
+ XCTAssertEqual ( testDisposable1. count, 1 )
299
+ XCTAssertEqual ( testDisposable2. count, 0 )
300
+
301
+ serialDisposable. dispose ( )
302
+ XCTAssertTrue ( serialDisposable. isDisposed)
303
+ XCTAssertEqual ( testDisposable1. count, 1 )
304
+ XCTAssertEqual ( testDisposable2. count, 1 )
305
+
306
+ serialDisposable. dispose ( )
307
+ XCTAssertTrue ( serialDisposable. isDisposed)
308
+ XCTAssertEqual ( testDisposable1. count, 1 )
309
+ XCTAssertEqual ( testDisposable2. count, 1 )
247
310
}
248
311
}
249
312
0 commit comments