Fix invalid logic with zip operator and premature termination.

This commit is contained in:
Krunoslav Zaher 2019-04-15 20:31:20 +02:00
parent ff9f4e05b7
commit f962ddd526
5 changed files with 21 additions and 38 deletions

View File

@ -58,22 +58,6 @@ class ZipSink<O: ObserverType> : Sink<O>, ZipSinkProtocol {
self.dispose()
}
}
else {
var allOthersDone = true
let arity = self._isDone.count
for i in 0 ..< arity {
if i != index && !self._isDone[i] {
allOthersDone = false
break
}
}
if allOthersDone {
self.forwardOn(.completed)
self.dispose()
}
}
}
func fail(_ error: Swift.Error) {

View File

@ -81,7 +81,7 @@ extension ObservableCombineLatestTest {
factory(<%= (Array(0..<i).map { "e\($0)" }).joined(separator: ", ") %>)
}
XCTAssertEqual(res.events, [completed(<%= 200 + 10 * i %>)])
XCTAssertEqual(res.events, [.completed(<%= 200 + 10 * i %>)])
<% for j in 0..<i { %>
XCTAssertEqual(e<%= j %>.subscriptions, [Subscription(200, <%= 200 + 10 * (j + 1) %>)])

View File

@ -197,12 +197,12 @@ extension ObservableZipTest {
XCTAssertEqual(res.events, [
.next(210, 10),
.completed(220)
.completed(230)
])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 230)])
}
}
@ -419,13 +419,13 @@ extension ObservableZipTest {
XCTAssertEqual(res.events, [
.next(210, 15),
.completed(230)
.completed(240)
])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 230)])
XCTAssertEqual(e2.subscriptions, [Subscription(200, 230)])
XCTAssertEqual(e2.subscriptions, [Subscription(200, 240)])
}
}
@ -670,14 +670,14 @@ extension ObservableZipTest {
XCTAssertEqual(res.events, [
.next(210, 20),
.completed(240)
.completed(250)
])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 230)])
XCTAssertEqual(e2.subscriptions, [Subscription(200, 240)])
XCTAssertEqual(e3.subscriptions, [Subscription(200, 240)])
XCTAssertEqual(e3.subscriptions, [Subscription(200, 250)])
}
}
@ -951,7 +951,7 @@ extension ObservableZipTest {
XCTAssertEqual(res.events, [
.next(210, 25),
.completed(250)
.completed(260)
])
@ -959,7 +959,7 @@ extension ObservableZipTest {
XCTAssertEqual(e1.subscriptions, [Subscription(200, 230)])
XCTAssertEqual(e2.subscriptions, [Subscription(200, 240)])
XCTAssertEqual(e3.subscriptions, [Subscription(200, 250)])
XCTAssertEqual(e4.subscriptions, [Subscription(200, 250)])
XCTAssertEqual(e4.subscriptions, [Subscription(200, 260)])
}
}
@ -1263,7 +1263,7 @@ extension ObservableZipTest {
XCTAssertEqual(res.events, [
.next(210, 30),
.completed(260)
.completed(270)
])
@ -1272,7 +1272,7 @@ extension ObservableZipTest {
XCTAssertEqual(e2.subscriptions, [Subscription(200, 240)])
XCTAssertEqual(e3.subscriptions, [Subscription(200, 250)])
XCTAssertEqual(e4.subscriptions, [Subscription(200, 260)])
XCTAssertEqual(e5.subscriptions, [Subscription(200, 260)])
XCTAssertEqual(e5.subscriptions, [Subscription(200, 270)])
}
}
@ -1607,7 +1607,7 @@ extension ObservableZipTest {
XCTAssertEqual(res.events, [
.next(210, 35),
.completed(270)
.completed(280)
])
@ -1617,7 +1617,7 @@ extension ObservableZipTest {
XCTAssertEqual(e3.subscriptions, [Subscription(200, 250)])
XCTAssertEqual(e4.subscriptions, [Subscription(200, 260)])
XCTAssertEqual(e5.subscriptions, [Subscription(200, 270)])
XCTAssertEqual(e6.subscriptions, [Subscription(200, 270)])
XCTAssertEqual(e6.subscriptions, [Subscription(200, 280)])
}
}
@ -1984,7 +1984,7 @@ extension ObservableZipTest {
XCTAssertEqual(res.events, [
.next(210, 40),
.completed(280)
.completed(290)
])
@ -1995,7 +1995,7 @@ extension ObservableZipTest {
XCTAssertEqual(e4.subscriptions, [Subscription(200, 260)])
XCTAssertEqual(e5.subscriptions, [Subscription(200, 270)])
XCTAssertEqual(e6.subscriptions, [Subscription(200, 280)])
XCTAssertEqual(e7.subscriptions, [Subscription(200, 280)])
XCTAssertEqual(e7.subscriptions, [Subscription(200, 290)])
}
}

View File

@ -170,12 +170,11 @@ extension ObservableZipTest {
XCTAssertEqual(res.events, [
.next(210, <%= 5 * i %>),
.completed(<%= 220 + (i - 2) * 10 %>)
.completed(<%= 220 + (i - 1) * 10 %>)
])
<% for j in 0..<i-1 { %>
<% for j in 0..<i { %>
XCTAssertEqual(e<%= j %>.subscriptions, [Subscription(200, <%= 220 + 10 * j %>)])<% } %>
XCTAssertEqual(e<%= i-1 %>.subscriptions, [Subscription(200, <%= 220 + 10 * (i - 2) %>)])
}
}

View File

@ -87,7 +87,7 @@ extension ObservableZipTest {
}
let messages = [
Recorded.completed(215, Int.self)
Recorded.completed(220, Int.self)
]
XCTAssertEqual(res.events, messages)
@ -96,7 +96,7 @@ extension ObservableZipTest {
])
XCTAssertEqual(o.subscriptions, [
Subscription(200, 215)
Subscription(200, 220)
])
}
@ -119,7 +119,7 @@ extension ObservableZipTest {
}
let messages = [
Recorded.completed(215, Int.self)
Recorded.completed(220, Int.self)
]
XCTAssertEqual(res.events, messages)
@ -128,7 +128,7 @@ extension ObservableZipTest {
])
XCTAssertEqual(o.subscriptions, [
Subscription(200, 215)
Subscription(200, 220)
])
}