diff --git a/SignalKit/Utilities/DisposableBag.swift b/SignalKit/Utilities/DisposableBag.swift index b979e68..0abfa2d 100644 --- a/SignalKit/Utilities/DisposableBag.swift +++ b/SignalKit/Utilities/DisposableBag.swift @@ -47,3 +47,11 @@ extension DisposableBag { return bag.count } } + +extension DisposableBag: Disposable { + + public func dispose() { + + removeAll() + } +} diff --git a/SignalKitTests/Utilities/DisposableBagTests.swift b/SignalKitTests/Utilities/DisposableBagTests.swift index 5eaf9ec..1dc9ae4 100644 --- a/SignalKitTests/Utilities/DisposableBagTests.swift +++ b/SignalKitTests/Utilities/DisposableBagTests.swift @@ -59,4 +59,16 @@ class DisposableBagTests: XCTestCase { XCTAssertEqual(disposable.isDisposeCalled, true, "Should remove and dispose all disposables on deinit") } + + func testDispose() { + + let signalTwo = MockSignal() + + bag.addDisposable(signal) + bag.addDisposable(signalTwo) + + bag.dispose() + + XCTAssertEqual(bag.count, 0, "Should remove all signals from the bag") + } }