Created
November 3, 2016 05:09
-
-
Save inamiy/925644779adbfca621ea716770d3865e to your computer and use it in GitHub Desktop.
ReactiveSwift 1.0.0-alpha.3 (RAC5) Bug: Inner signal not interrupted on outer signal disposal
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git Tests/ReactiveSwiftTests/SignalProducerSpec.swift Tests/ReactiveSwiftTests/SignalProducerSpec.swift | |
index 21362e7..a363327 100644 | |
--- Tests/ReactiveSwiftTests/SignalProducerSpec.swift | |
+++ Tests/ReactiveSwiftTests/SignalProducerSpec.swift | |
@@ -1413,13 +1413,14 @@ class SignalProducerSpec: QuickSpec { | |
} | |
} | |
- describe("disposal") { | |
+ fdescribe("disposal") { | |
var completeOuter: (() -> Void)! | |
var disposeOuter: (() -> Void)! | |
var execute: ((FlattenStrategy) -> Void)! | |
var innerDisposable = SimpleDisposable() | |
var interrupted = false | |
+ var innerInterrupted = false | |
beforeEach { | |
execute = { strategy in | |
@@ -1427,8 +1428,10 @@ class SignalProducerSpec: QuickSpec { | |
innerDisposable = SimpleDisposable() | |
let innerProducer = SignalProducer<Int, NoError> { $1.add(innerDisposable) } | |
+ .on(interrupted: { innerInterrupted = true }) | |
interrupted = false | |
+ innerInterrupted = false | |
let outerDisposable = outerProducer.flatten(strategy).startWithInterrupted { | |
interrupted = true | |
} | |
@@ -1445,10 +1448,12 @@ class SignalProducerSpec: QuickSpec { | |
execute(.concat) | |
expect(innerDisposable.isDisposed) == false | |
+ expect(innerInterrupted) == false | |
expect(interrupted) == false | |
disposeOuter() | |
expect(innerDisposable.isDisposed) == true | |
+ expect(innerInterrupted) == true | |
expect(interrupted) == true | |
} | |
@@ -1458,10 +1463,12 @@ class SignalProducerSpec: QuickSpec { | |
completeOuter() | |
expect(innerDisposable.isDisposed) == false | |
+ expect(innerInterrupted) == false | |
expect(interrupted) == false | |
disposeOuter() | |
expect(innerDisposable.isDisposed) == true | |
+ expect(innerInterrupted) == true | |
expect(interrupted) == true | |
} | |
} | |
@@ -1471,10 +1478,12 @@ class SignalProducerSpec: QuickSpec { | |
execute(.latest) | |
expect(innerDisposable.isDisposed) == false | |
+ expect(innerInterrupted) == false | |
expect(interrupted) == false | |
disposeOuter() | |
expect(innerDisposable.isDisposed) == true | |
+ expect(innerInterrupted) == true | |
expect(interrupted) == true | |
} | |
@@ -1484,10 +1493,12 @@ class SignalProducerSpec: QuickSpec { | |
completeOuter() | |
expect(innerDisposable.isDisposed) == false | |
+ expect(innerInterrupted) == false | |
expect(interrupted) == false | |
disposeOuter() | |
expect(innerDisposable.isDisposed) == true | |
+ expect(innerInterrupted) == true | |
expect(interrupted) == true | |
} | |
} | |
@@ -1497,10 +1508,12 @@ class SignalProducerSpec: QuickSpec { | |
execute(.merge) | |
expect(innerDisposable.isDisposed) == false | |
+ expect(innerInterrupted) == false | |
expect(interrupted) == false | |
disposeOuter() | |
expect(innerDisposable.isDisposed) == true | |
+ expect(innerInterrupted) == true | |
expect(interrupted) == true | |
} | |
@@ -1510,10 +1523,12 @@ class SignalProducerSpec: QuickSpec { | |
completeOuter() | |
expect(innerDisposable.isDisposed) == false | |
+ expect(innerInterrupted) == false | |
expect(interrupted) == false | |
disposeOuter() | |
expect(innerDisposable.isDisposed) == true | |
+ expect(innerInterrupted) == true | |
expect(interrupted) == true | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment