Skip to content

Commit 94b7a40

Browse files
author
Nikita Ermolenko
committed
Add tests for a serial disposable
1 parent bd5a965 commit 94b7a40

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed

Tests/RxSwiftTests/DisposableTest.swift

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,7 @@ extension DisposableTest
199199
}
200200
}
201201

202+
// refCount disposable
202203
extension DisposableTest {
203204
func testRefCountDisposable_RefCounting() {
204205
let d = BooleanDisposable()
@@ -243,7 +244,69 @@ extension DisposableTest {
243244

244245
d2.dispose()
245246
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)
246271

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)
247310
}
248311
}
249312

0 commit comments

Comments
 (0)