RxSwift/RxTests/RxSwiftTests/Tests/Observable+MultipleTest+Com...

2692 lines
68 KiB
Swift

// This file is autogenerated.
// Take a look at `Preprocessor` target in RxSwift project
//
// Observable+MultipleTest+CombineLatest.tt
// RxSwift
//
// Created by Krunoslav Zaher on 4/25/15.
// Copyright (c) 2015 Krunoslav Zaher. All rights reserved.
//
import Foundation
import XCTest
import RxSwift
// combine latest
extension ObservableMultipleTest {
// 2
func testCombineLatest_Never2() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1)
])
let e1 = scheduler.createHotObservable([
next(150, 1)
])
let res = scheduler.start { () -> Observable<Int> in
let result: Observable<Int> = combineLatest(e0, e1) { (_, _) -> Int in
return (42)
}
return result
}
XCTAssertEqual(res.messages, [])
let subscriptions = [Subscription(200, 1000)]
XCTAssertEqual(e0.subscriptions, subscriptions)
XCTAssertEqual(e1.subscriptions, subscriptions)
}
func testCombineLatest_Empty2() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
completed(210)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
completed(220)
])
let res = scheduler.start { () -> Observable<Int> in
let result: Observable<Int> = combineLatest(e0, e1) { (_, _) -> Int in
return (42)
}
return result
}
XCTAssertEqual(res.messages, [completed(220)])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 210)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])
}
func testCombineLatest_SelectorThrows2() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
next(210, 1),
completed(400)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
next(220, 2),
completed(400)
])
let res = scheduler.start { () -> Observable<Int> in
let result: Observable<Int> = combineLatest(e0, e1) { (_, _) throws -> Int in
throw testError
}
return result
}
XCTAssertEqual(res.messages, [
error(220, testError)
])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])
}
func testCombineLatest_WillNeverBeAbleToCombine2() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
completed(250)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
next(500, 2),
completed(800)
])
let res = scheduler.start { () -> Observable<Int> in
let result: Observable<Int> = combineLatest(e0, e1) { (_, _) -> Int in
return (42)
}
return result
}
XCTAssertEqual(res.messages, [
completed(500)
])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 250)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 500)])
}
func testCombineLatest_Typical2() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
next(210, 1),
next(410, 3),
completed(800)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
next(220, 2),
next(420, 4),
completed(800)
])
let res = scheduler.start { () -> Observable<Int> in
let result: Observable<Int> = combineLatest(e0, e1) {
return ($0 + $1)
}
return result
}
XCTAssertEqual(res.messages, [
next(220, 3),
next(410, 5),
next(420, 7),
completed(800)
])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 800)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 800)])
}
// 3
func testCombineLatest_Never3() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1)
])
let e1 = scheduler.createHotObservable([
next(150, 1)
])
let e2 = scheduler.createHotObservable([
next(150, 1)
])
let res = scheduler.start { () -> Observable<Int> in
let result: Observable<Int> = combineLatest(e0, e1, e2) { (_, _, _) -> Int in
return (42)
}
return result
}
XCTAssertEqual(res.messages, [])
let subscriptions = [Subscription(200, 1000)]
XCTAssertEqual(e0.subscriptions, subscriptions)
XCTAssertEqual(e1.subscriptions, subscriptions)
XCTAssertEqual(e2.subscriptions, subscriptions)
}
func testCombineLatest_Empty3() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
completed(210)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
completed(220)
])
let e2 = scheduler.createHotObservable([
next(150, 1),
completed(230)
])
let res = scheduler.start { () -> Observable<Int> in
let result: Observable<Int> = combineLatest(e0, e1, e2) { (_, _, _) -> Int in
return (42)
}
return result
}
XCTAssertEqual(res.messages, [completed(230)])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 210)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])
XCTAssertEqual(e2.subscriptions, [Subscription(200, 230)])
}
func testCombineLatest_SelectorThrows3() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
next(210, 1),
completed(400)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
next(220, 2),
completed(400)
])
let e2 = scheduler.createHotObservable([
next(150, 1),
next(230, 3),
completed(400)
])
let res = scheduler.start { () -> Observable<Int> in
let result: Observable<Int> = combineLatest(e0, e1, e2) { (_, _, _) throws -> Int in
throw testError
}
return result
}
XCTAssertEqual(res.messages, [
error(230, testError)
])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 230)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 230)])
XCTAssertEqual(e2.subscriptions, [Subscription(200, 230)])
}
func testCombineLatest_WillNeverBeAbleToCombine3() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
completed(250)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
completed(260)
])
let e2 = scheduler.createHotObservable([
next(150, 1),
next(500, 2),
completed(800)
])
let res = scheduler.start { () -> Observable<Int> in
let result: Observable<Int> = combineLatest(e0, e1, e2) { (_, _, _) -> Int in
return (42)
}
return result
}
XCTAssertEqual(res.messages, [
completed(500)
])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 250)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 260)])
XCTAssertEqual(e2.subscriptions, [Subscription(200, 500)])
}
func testCombineLatest_Typical3() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
next(210, 1),
next(410, 4),
completed(800)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
next(220, 2),
next(420, 5),
completed(800)
])
let e2 = scheduler.createHotObservable([
next(150, 1),
next(230, 3),
next(430, 6),
completed(800)
])
let res = scheduler.start { () -> Observable<Int> in
let result: Observable<Int> = combineLatest(e0, e1, e2) {
return ($0 + $1 + $2)
}
return result
}
XCTAssertEqual(res.messages, [
next(230, 6),
next(410, 9),
next(420, 12),
next(430, 15),
completed(800)
])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 800)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 800)])
XCTAssertEqual(e2.subscriptions, [Subscription(200, 800)])
}
// 4
func testCombineLatest_Never4() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1)
])
let e1 = scheduler.createHotObservable([
next(150, 1)
])
let e2 = scheduler.createHotObservable([
next(150, 1)
])
let e3 = scheduler.createHotObservable([
next(150, 1)
])
let res = scheduler.start { () -> Observable<Int> in
let result: Observable<Int> = combineLatest(e0, e1, e2, e3) { (_, _, _, _) -> Int in
return (42)
}
return result
}
XCTAssertEqual(res.messages, [])
let subscriptions = [Subscription(200, 1000)]
XCTAssertEqual(e0.subscriptions, subscriptions)
XCTAssertEqual(e1.subscriptions, subscriptions)
XCTAssertEqual(e2.subscriptions, subscriptions)
XCTAssertEqual(e3.subscriptions, subscriptions)
}
func testCombineLatest_Empty4() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
completed(210)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
completed(220)
])
let e2 = scheduler.createHotObservable([
next(150, 1),
completed(230)
])
let e3 = scheduler.createHotObservable([
next(150, 1),
completed(240)
])
let res = scheduler.start { () -> Observable<Int> in
let result: Observable<Int> = combineLatest(e0, e1, e2, e3) { (_, _, _, _) -> Int in
return (42)
}
return result
}
XCTAssertEqual(res.messages, [completed(240)])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 210)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])
XCTAssertEqual(e2.subscriptions, [Subscription(200, 230)])
XCTAssertEqual(e3.subscriptions, [Subscription(200, 240)])
}
func testCombineLatest_SelectorThrows4() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
next(210, 1),
completed(400)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
next(220, 2),
completed(400)
])
let e2 = scheduler.createHotObservable([
next(150, 1),
next(230, 3),
completed(400)
])
let e3 = scheduler.createHotObservable([
next(150, 1),
next(240, 4),
completed(400)
])
let res = scheduler.start { () -> Observable<Int> in
let result: Observable<Int> = combineLatest(e0, e1, e2, e3) { (_, _, _, _) throws -> Int in
throw testError
}
return result
}
XCTAssertEqual(res.messages, [
error(240, testError)
])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 240)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 240)])
XCTAssertEqual(e2.subscriptions, [Subscription(200, 240)])
XCTAssertEqual(e3.subscriptions, [Subscription(200, 240)])
}
func testCombineLatest_WillNeverBeAbleToCombine4() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
completed(250)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
completed(260)
])
let e2 = scheduler.createHotObservable([
next(150, 1),
completed(270)
])
let e3 = scheduler.createHotObservable([
next(150, 1),
next(500, 2),
completed(800)
])
let res = scheduler.start { () -> Observable<Int> in
let result: Observable<Int> = combineLatest(e0, e1, e2, e3) { (_, _, _, _) -> Int in
return (42)
}
return result
}
XCTAssertEqual(res.messages, [
completed(500)
])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 250)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 260)])
XCTAssertEqual(e2.subscriptions, [Subscription(200, 270)])
XCTAssertEqual(e3.subscriptions, [Subscription(200, 500)])
}
func testCombineLatest_Typical4() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
next(210, 1),
next(410, 5),
completed(800)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
next(220, 2),
next(420, 6),
completed(800)
])
let e2 = scheduler.createHotObservable([
next(150, 1),
next(230, 3),
next(430, 7),
completed(800)
])
let e3 = scheduler.createHotObservable([
next(150, 1),
next(240, 4),
next(440, 8),
completed(800)
])
let res = scheduler.start { () -> Observable<Int> in
let result: Observable<Int> = combineLatest(e0, e1, e2, e3) {
return ($0 + $1 + $2 + $3)
}
return result
}
XCTAssertEqual(res.messages, [
next(240, 10),
next(410, 14),
next(420, 18),
next(430, 22),
next(440, 26),
completed(800)
])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 800)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 800)])
XCTAssertEqual(e2.subscriptions, [Subscription(200, 800)])
XCTAssertEqual(e3.subscriptions, [Subscription(200, 800)])
}
// 5
func testCombineLatest_Never5() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1)
])
let e1 = scheduler.createHotObservable([
next(150, 1)
])
let e2 = scheduler.createHotObservable([
next(150, 1)
])
let e3 = scheduler.createHotObservable([
next(150, 1)
])
let e4 = scheduler.createHotObservable([
next(150, 1)
])
let res = scheduler.start { () -> Observable<Int> in
let result: Observable<Int> = combineLatest(e0, e1, e2, e3, e4) { (_, _, _, _, _) -> Int in
return (42)
}
return result
}
XCTAssertEqual(res.messages, [])
let subscriptions = [Subscription(200, 1000)]
XCTAssertEqual(e0.subscriptions, subscriptions)
XCTAssertEqual(e1.subscriptions, subscriptions)
XCTAssertEqual(e2.subscriptions, subscriptions)
XCTAssertEqual(e3.subscriptions, subscriptions)
XCTAssertEqual(e4.subscriptions, subscriptions)
}
func testCombineLatest_Empty5() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
completed(210)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
completed(220)
])
let e2 = scheduler.createHotObservable([
next(150, 1),
completed(230)
])
let e3 = scheduler.createHotObservable([
next(150, 1),
completed(240)
])
let e4 = scheduler.createHotObservable([
next(150, 1),
completed(250)
])
let res = scheduler.start { () -> Observable<Int> in
let result: Observable<Int> = combineLatest(e0, e1, e2, e3, e4) { (_, _, _, _, _) -> Int in
return (42)
}
return result
}
XCTAssertEqual(res.messages, [completed(250)])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 210)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])
XCTAssertEqual(e2.subscriptions, [Subscription(200, 230)])
XCTAssertEqual(e3.subscriptions, [Subscription(200, 240)])
XCTAssertEqual(e4.subscriptions, [Subscription(200, 250)])
}
func testCombineLatest_SelectorThrows5() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
next(210, 1),
completed(400)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
next(220, 2),
completed(400)
])
let e2 = scheduler.createHotObservable([
next(150, 1),
next(230, 3),
completed(400)
])
let e3 = scheduler.createHotObservable([
next(150, 1),
next(240, 4),
completed(400)
])
let e4 = scheduler.createHotObservable([
next(150, 1),
next(250, 5),
completed(400)
])
let res = scheduler.start { () -> Observable<Int> in
let result: Observable<Int> = combineLatest(e0, e1, e2, e3, e4) { (_, _, _, _, _) throws -> Int in
throw testError
}
return result
}
XCTAssertEqual(res.messages, [
error(250, testError)
])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 250)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 250)])
XCTAssertEqual(e2.subscriptions, [Subscription(200, 250)])
XCTAssertEqual(e3.subscriptions, [Subscription(200, 250)])
XCTAssertEqual(e4.subscriptions, [Subscription(200, 250)])
}
func testCombineLatest_WillNeverBeAbleToCombine5() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
completed(250)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
completed(260)
])
let e2 = scheduler.createHotObservable([
next(150, 1),
completed(270)
])
let e3 = scheduler.createHotObservable([
next(150, 1),
completed(280)
])
let e4 = scheduler.createHotObservable([
next(150, 1),
next(500, 2),
completed(800)
])
let res = scheduler.start { () -> Observable<Int> in
let result: Observable<Int> = combineLatest(e0, e1, e2, e3, e4) { (_, _, _, _, _) -> Int in
return (42)
}
return result
}
XCTAssertEqual(res.messages, [
completed(500)
])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 250)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 260)])
XCTAssertEqual(e2.subscriptions, [Subscription(200, 270)])
XCTAssertEqual(e3.subscriptions, [Subscription(200, 280)])
XCTAssertEqual(e4.subscriptions, [Subscription(200, 500)])
}
func testCombineLatest_Typical5() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
next(210, 1),
next(410, 6),
completed(800)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
next(220, 2),
next(420, 7),
completed(800)
])
let e2 = scheduler.createHotObservable([
next(150, 1),
next(230, 3),
next(430, 8),
completed(800)
])
let e3 = scheduler.createHotObservable([
next(150, 1),
next(240, 4),
next(440, 9),
completed(800)
])
let e4 = scheduler.createHotObservable([
next(150, 1),
next(250, 5),
next(450, 10),
completed(800)
])
let res = scheduler.start { () -> Observable<Int> in
let result: Observable<Int> = combineLatest(e0, e1, e2, e3, e4) {
return ($0 + $1 + $2 + $3 + $4)
}
return result
}
XCTAssertEqual(res.messages, [
next(250, 15),
next(410, 20),
next(420, 25),
next(430, 30),
next(440, 35),
next(450, 40),
completed(800)
])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 800)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 800)])
XCTAssertEqual(e2.subscriptions, [Subscription(200, 800)])
XCTAssertEqual(e3.subscriptions, [Subscription(200, 800)])
XCTAssertEqual(e4.subscriptions, [Subscription(200, 800)])
}
// 6
func testCombineLatest_Never6() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1)
])
let e1 = scheduler.createHotObservable([
next(150, 1)
])
let e2 = scheduler.createHotObservable([
next(150, 1)
])
let e3 = scheduler.createHotObservable([
next(150, 1)
])
let e4 = scheduler.createHotObservable([
next(150, 1)
])
let e5 = scheduler.createHotObservable([
next(150, 1)
])
let res = scheduler.start { () -> Observable<Int> in
let result: Observable<Int> = combineLatest(e0, e1, e2, e3, e4, e5) { (_, _, _, _, _, _) -> Int in
return (42)
}
return result
}
XCTAssertEqual(res.messages, [])
let subscriptions = [Subscription(200, 1000)]
XCTAssertEqual(e0.subscriptions, subscriptions)
XCTAssertEqual(e1.subscriptions, subscriptions)
XCTAssertEqual(e2.subscriptions, subscriptions)
XCTAssertEqual(e3.subscriptions, subscriptions)
XCTAssertEqual(e4.subscriptions, subscriptions)
XCTAssertEqual(e5.subscriptions, subscriptions)
}
func testCombineLatest_Empty6() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
completed(210)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
completed(220)
])
let e2 = scheduler.createHotObservable([
next(150, 1),
completed(230)
])
let e3 = scheduler.createHotObservable([
next(150, 1),
completed(240)
])
let e4 = scheduler.createHotObservable([
next(150, 1),
completed(250)
])
let e5 = scheduler.createHotObservable([
next(150, 1),
completed(260)
])
let res = scheduler.start { () -> Observable<Int> in
let result: Observable<Int> = combineLatest(e0, e1, e2, e3, e4, e5) { (_, _, _, _, _, _) -> Int in
return (42)
}
return result
}
XCTAssertEqual(res.messages, [completed(260)])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 210)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])
XCTAssertEqual(e2.subscriptions, [Subscription(200, 230)])
XCTAssertEqual(e3.subscriptions, [Subscription(200, 240)])
XCTAssertEqual(e4.subscriptions, [Subscription(200, 250)])
XCTAssertEqual(e5.subscriptions, [Subscription(200, 260)])
}
func testCombineLatest_SelectorThrows6() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
next(210, 1),
completed(400)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
next(220, 2),
completed(400)
])
let e2 = scheduler.createHotObservable([
next(150, 1),
next(230, 3),
completed(400)
])
let e3 = scheduler.createHotObservable([
next(150, 1),
next(240, 4),
completed(400)
])
let e4 = scheduler.createHotObservable([
next(150, 1),
next(250, 5),
completed(400)
])
let e5 = scheduler.createHotObservable([
next(150, 1),
next(260, 6),
completed(400)
])
let res = scheduler.start { () -> Observable<Int> in
let result: Observable<Int> = combineLatest(e0, e1, e2, e3, e4, e5) { (_, _, _, _, _, _) throws -> Int in
throw testError
}
return result
}
XCTAssertEqual(res.messages, [
error(260, testError)
])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 260)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 260)])
XCTAssertEqual(e2.subscriptions, [Subscription(200, 260)])
XCTAssertEqual(e3.subscriptions, [Subscription(200, 260)])
XCTAssertEqual(e4.subscriptions, [Subscription(200, 260)])
XCTAssertEqual(e5.subscriptions, [Subscription(200, 260)])
}
func testCombineLatest_WillNeverBeAbleToCombine6() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
completed(250)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
completed(260)
])
let e2 = scheduler.createHotObservable([
next(150, 1),
completed(270)
])
let e3 = scheduler.createHotObservable([
next(150, 1),
completed(280)
])
let e4 = scheduler.createHotObservable([
next(150, 1),
completed(290)
])
let e5 = scheduler.createHotObservable([
next(150, 1),
next(500, 2),
completed(800)
])
let res = scheduler.start { () -> Observable<Int> in
let result: Observable<Int> = combineLatest(e0, e1, e2, e3, e4, e5) { (_, _, _, _, _, _) -> Int in
return (42)
}
return result
}
XCTAssertEqual(res.messages, [
completed(500)
])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 250)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 260)])
XCTAssertEqual(e2.subscriptions, [Subscription(200, 270)])
XCTAssertEqual(e3.subscriptions, [Subscription(200, 280)])
XCTAssertEqual(e4.subscriptions, [Subscription(200, 290)])
XCTAssertEqual(e5.subscriptions, [Subscription(200, 500)])
}
func testCombineLatest_Typical6() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
next(210, 1),
next(410, 7),
completed(800)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
next(220, 2),
next(420, 8),
completed(800)
])
let e2 = scheduler.createHotObservable([
next(150, 1),
next(230, 3),
next(430, 9),
completed(800)
])
let e3 = scheduler.createHotObservable([
next(150, 1),
next(240, 4),
next(440, 10),
completed(800)
])
let e4 = scheduler.createHotObservable([
next(150, 1),
next(250, 5),
next(450, 11),
completed(800)
])
let e5 = scheduler.createHotObservable([
next(150, 1),
next(260, 6),
next(460, 12),
completed(800)
])
let res = scheduler.start { () -> Observable<Int> in
let result: Observable<Int> = combineLatest(e0, e1, e2, e3, e4, e5) {
return ($0 + $1 + $2 + $3 + $4 + $5)
}
return result
}
XCTAssertEqual(res.messages, [
next(260, 21),
next(410, 27),
next(420, 33),
next(430, 39),
next(440, 45),
next(450, 51),
next(460, 57),
completed(800)
])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 800)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 800)])
XCTAssertEqual(e2.subscriptions, [Subscription(200, 800)])
XCTAssertEqual(e3.subscriptions, [Subscription(200, 800)])
XCTAssertEqual(e4.subscriptions, [Subscription(200, 800)])
XCTAssertEqual(e5.subscriptions, [Subscription(200, 800)])
}
// 7
func testCombineLatest_Never7() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1)
])
let e1 = scheduler.createHotObservable([
next(150, 1)
])
let e2 = scheduler.createHotObservable([
next(150, 1)
])
let e3 = scheduler.createHotObservable([
next(150, 1)
])
let e4 = scheduler.createHotObservable([
next(150, 1)
])
let e5 = scheduler.createHotObservable([
next(150, 1)
])
let e6 = scheduler.createHotObservable([
next(150, 1)
])
let res = scheduler.start { () -> Observable<Int> in
let result: Observable<Int> = combineLatest(e0, e1, e2, e3, e4, e5, e6) { (_, _, _, _, _, _, _) -> Int in
return (42)
}
return result
}
XCTAssertEqual(res.messages, [])
let subscriptions = [Subscription(200, 1000)]
XCTAssertEqual(e0.subscriptions, subscriptions)
XCTAssertEqual(e1.subscriptions, subscriptions)
XCTAssertEqual(e2.subscriptions, subscriptions)
XCTAssertEqual(e3.subscriptions, subscriptions)
XCTAssertEqual(e4.subscriptions, subscriptions)
XCTAssertEqual(e5.subscriptions, subscriptions)
XCTAssertEqual(e6.subscriptions, subscriptions)
}
func testCombineLatest_Empty7() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
completed(210)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
completed(220)
])
let e2 = scheduler.createHotObservable([
next(150, 1),
completed(230)
])
let e3 = scheduler.createHotObservable([
next(150, 1),
completed(240)
])
let e4 = scheduler.createHotObservable([
next(150, 1),
completed(250)
])
let e5 = scheduler.createHotObservable([
next(150, 1),
completed(260)
])
let e6 = scheduler.createHotObservable([
next(150, 1),
completed(270)
])
let res = scheduler.start { () -> Observable<Int> in
let result: Observable<Int> = combineLatest(e0, e1, e2, e3, e4, e5, e6) { (_, _, _, _, _, _, _) -> Int in
return (42)
}
return result
}
XCTAssertEqual(res.messages, [completed(270)])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 210)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])
XCTAssertEqual(e2.subscriptions, [Subscription(200, 230)])
XCTAssertEqual(e3.subscriptions, [Subscription(200, 240)])
XCTAssertEqual(e4.subscriptions, [Subscription(200, 250)])
XCTAssertEqual(e5.subscriptions, [Subscription(200, 260)])
XCTAssertEqual(e6.subscriptions, [Subscription(200, 270)])
}
func testCombineLatest_SelectorThrows7() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
next(210, 1),
completed(400)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
next(220, 2),
completed(400)
])
let e2 = scheduler.createHotObservable([
next(150, 1),
next(230, 3),
completed(400)
])
let e3 = scheduler.createHotObservable([
next(150, 1),
next(240, 4),
completed(400)
])
let e4 = scheduler.createHotObservable([
next(150, 1),
next(250, 5),
completed(400)
])
let e5 = scheduler.createHotObservable([
next(150, 1),
next(260, 6),
completed(400)
])
let e6 = scheduler.createHotObservable([
next(150, 1),
next(270, 7),
completed(400)
])
let res = scheduler.start { () -> Observable<Int> in
let result: Observable<Int> = combineLatest(e0, e1, e2, e3, e4, e5, e6) { (_, _, _, _, _, _, _) throws -> Int in
throw testError
}
return result
}
XCTAssertEqual(res.messages, [
error(270, testError)
])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 270)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 270)])
XCTAssertEqual(e2.subscriptions, [Subscription(200, 270)])
XCTAssertEqual(e3.subscriptions, [Subscription(200, 270)])
XCTAssertEqual(e4.subscriptions, [Subscription(200, 270)])
XCTAssertEqual(e5.subscriptions, [Subscription(200, 270)])
XCTAssertEqual(e6.subscriptions, [Subscription(200, 270)])
}
func testCombineLatest_WillNeverBeAbleToCombine7() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
completed(250)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
completed(260)
])
let e2 = scheduler.createHotObservable([
next(150, 1),
completed(270)
])
let e3 = scheduler.createHotObservable([
next(150, 1),
completed(280)
])
let e4 = scheduler.createHotObservable([
next(150, 1),
completed(290)
])
let e5 = scheduler.createHotObservable([
next(150, 1),
completed(300)
])
let e6 = scheduler.createHotObservable([
next(150, 1),
next(500, 2),
completed(800)
])
let res = scheduler.start { () -> Observable<Int> in
let result: Observable<Int> = combineLatest(e0, e1, e2, e3, e4, e5, e6) { (_, _, _, _, _, _, _) -> Int in
return (42)
}
return result
}
XCTAssertEqual(res.messages, [
completed(500)
])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 250)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 260)])
XCTAssertEqual(e2.subscriptions, [Subscription(200, 270)])
XCTAssertEqual(e3.subscriptions, [Subscription(200, 280)])
XCTAssertEqual(e4.subscriptions, [Subscription(200, 290)])
XCTAssertEqual(e5.subscriptions, [Subscription(200, 300)])
XCTAssertEqual(e6.subscriptions, [Subscription(200, 500)])
}
func testCombineLatest_Typical7() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
next(210, 1),
next(410, 8),
completed(800)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
next(220, 2),
next(420, 9),
completed(800)
])
let e2 = scheduler.createHotObservable([
next(150, 1),
next(230, 3),
next(430, 10),
completed(800)
])
let e3 = scheduler.createHotObservable([
next(150, 1),
next(240, 4),
next(440, 11),
completed(800)
])
let e4 = scheduler.createHotObservable([
next(150, 1),
next(250, 5),
next(450, 12),
completed(800)
])
let e5 = scheduler.createHotObservable([
next(150, 1),
next(260, 6),
next(460, 13),
completed(800)
])
let e6 = scheduler.createHotObservable([
next(150, 1),
next(270, 7),
next(470, 14),
completed(800)
])
let res = scheduler.start { () -> Observable<Int> in
let result: Observable<Int> = combineLatest(e0, e1, e2, e3, e4, e5, e6) {
return ($0 + $1 + $2 + $3 + $4 + $5 + $6)
}
return result
}
XCTAssertEqual(res.messages, [
next(270, 28),
next(410, 35),
next(420, 42),
next(430, 49),
next(440, 56),
next(450, 63),
next(460, 70),
next(470, 77),
completed(800)
])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 800)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 800)])
XCTAssertEqual(e2.subscriptions, [Subscription(200, 800)])
XCTAssertEqual(e3.subscriptions, [Subscription(200, 800)])
XCTAssertEqual(e4.subscriptions, [Subscription(200, 800)])
XCTAssertEqual(e5.subscriptions, [Subscription(200, 800)])
XCTAssertEqual(e6.subscriptions, [Subscription(200, 800)])
}
// 8
func testCombineLatest_Never8() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1)
])
let e1 = scheduler.createHotObservable([
next(150, 1)
])
let e2 = scheduler.createHotObservable([
next(150, 1)
])
let e3 = scheduler.createHotObservable([
next(150, 1)
])
let e4 = scheduler.createHotObservable([
next(150, 1)
])
let e5 = scheduler.createHotObservable([
next(150, 1)
])
let e6 = scheduler.createHotObservable([
next(150, 1)
])
let e7 = scheduler.createHotObservable([
next(150, 1)
])
let res = scheduler.start { () -> Observable<Int> in
let result: Observable<Int> = combineLatest(e0, e1, e2, e3, e4, e5, e6, e7) { (_, _, _, _, _, _, _, _) -> Int in
return (42)
}
return result
}
XCTAssertEqual(res.messages, [])
let subscriptions = [Subscription(200, 1000)]
XCTAssertEqual(e0.subscriptions, subscriptions)
XCTAssertEqual(e1.subscriptions, subscriptions)
XCTAssertEqual(e2.subscriptions, subscriptions)
XCTAssertEqual(e3.subscriptions, subscriptions)
XCTAssertEqual(e4.subscriptions, subscriptions)
XCTAssertEqual(e5.subscriptions, subscriptions)
XCTAssertEqual(e6.subscriptions, subscriptions)
XCTAssertEqual(e7.subscriptions, subscriptions)
}
func testCombineLatest_Empty8() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
completed(210)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
completed(220)
])
let e2 = scheduler.createHotObservable([
next(150, 1),
completed(230)
])
let e3 = scheduler.createHotObservable([
next(150, 1),
completed(240)
])
let e4 = scheduler.createHotObservable([
next(150, 1),
completed(250)
])
let e5 = scheduler.createHotObservable([
next(150, 1),
completed(260)
])
let e6 = scheduler.createHotObservable([
next(150, 1),
completed(270)
])
let e7 = scheduler.createHotObservable([
next(150, 1),
completed(280)
])
let res = scheduler.start { () -> Observable<Int> in
let result: Observable<Int> = combineLatest(e0, e1, e2, e3, e4, e5, e6, e7) { (_, _, _, _, _, _, _, _) -> Int in
return (42)
}
return result
}
XCTAssertEqual(res.messages, [completed(280)])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 210)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])
XCTAssertEqual(e2.subscriptions, [Subscription(200, 230)])
XCTAssertEqual(e3.subscriptions, [Subscription(200, 240)])
XCTAssertEqual(e4.subscriptions, [Subscription(200, 250)])
XCTAssertEqual(e5.subscriptions, [Subscription(200, 260)])
XCTAssertEqual(e6.subscriptions, [Subscription(200, 270)])
XCTAssertEqual(e7.subscriptions, [Subscription(200, 280)])
}
func testCombineLatest_SelectorThrows8() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
next(210, 1),
completed(400)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
next(220, 2),
completed(400)
])
let e2 = scheduler.createHotObservable([
next(150, 1),
next(230, 3),
completed(400)
])
let e3 = scheduler.createHotObservable([
next(150, 1),
next(240, 4),
completed(400)
])
let e4 = scheduler.createHotObservable([
next(150, 1),
next(250, 5),
completed(400)
])
let e5 = scheduler.createHotObservable([
next(150, 1),
next(260, 6),
completed(400)
])
let e6 = scheduler.createHotObservable([
next(150, 1),
next(270, 7),
completed(400)
])
let e7 = scheduler.createHotObservable([
next(150, 1),
next(280, 8),
completed(400)
])
let res = scheduler.start { () -> Observable<Int> in
let result: Observable<Int> = combineLatest(e0, e1, e2, e3, e4, e5, e6, e7) { (_, _, _, _, _, _, _, _) throws -> Int in
throw testError
}
return result
}
XCTAssertEqual(res.messages, [
error(280, testError)
])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 280)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 280)])
XCTAssertEqual(e2.subscriptions, [Subscription(200, 280)])
XCTAssertEqual(e3.subscriptions, [Subscription(200, 280)])
XCTAssertEqual(e4.subscriptions, [Subscription(200, 280)])
XCTAssertEqual(e5.subscriptions, [Subscription(200, 280)])
XCTAssertEqual(e6.subscriptions, [Subscription(200, 280)])
XCTAssertEqual(e7.subscriptions, [Subscription(200, 280)])
}
func testCombineLatest_WillNeverBeAbleToCombine8() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
completed(250)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
completed(260)
])
let e2 = scheduler.createHotObservable([
next(150, 1),
completed(270)
])
let e3 = scheduler.createHotObservable([
next(150, 1),
completed(280)
])
let e4 = scheduler.createHotObservable([
next(150, 1),
completed(290)
])
let e5 = scheduler.createHotObservable([
next(150, 1),
completed(300)
])
let e6 = scheduler.createHotObservable([
next(150, 1),
completed(310)
])
let e7 = scheduler.createHotObservable([
next(150, 1),
next(500, 2),
completed(800)
])
let res = scheduler.start { () -> Observable<Int> in
let result: Observable<Int> = combineLatest(e0, e1, e2, e3, e4, e5, e6, e7) { (_, _, _, _, _, _, _, _) -> Int in
return (42)
}
return result
}
XCTAssertEqual(res.messages, [
completed(500)
])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 250)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 260)])
XCTAssertEqual(e2.subscriptions, [Subscription(200, 270)])
XCTAssertEqual(e3.subscriptions, [Subscription(200, 280)])
XCTAssertEqual(e4.subscriptions, [Subscription(200, 290)])
XCTAssertEqual(e5.subscriptions, [Subscription(200, 300)])
XCTAssertEqual(e6.subscriptions, [Subscription(200, 310)])
XCTAssertEqual(e7.subscriptions, [Subscription(200, 500)])
}
func testCombineLatest_Typical8() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
next(210, 1),
next(410, 9),
completed(800)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
next(220, 2),
next(420, 10),
completed(800)
])
let e2 = scheduler.createHotObservable([
next(150, 1),
next(230, 3),
next(430, 11),
completed(800)
])
let e3 = scheduler.createHotObservable([
next(150, 1),
next(240, 4),
next(440, 12),
completed(800)
])
let e4 = scheduler.createHotObservable([
next(150, 1),
next(250, 5),
next(450, 13),
completed(800)
])
let e5 = scheduler.createHotObservable([
next(150, 1),
next(260, 6),
next(460, 14),
completed(800)
])
let e6 = scheduler.createHotObservable([
next(150, 1),
next(270, 7),
next(470, 15),
completed(800)
])
let e7 = scheduler.createHotObservable([
next(150, 1),
next(280, 8),
next(480, 16),
completed(800)
])
let res = scheduler.start { () -> Observable<Int> in
let result: Observable<Int> = combineLatest(e0, e1, e2, e3, e4, e5, e6, e7) {
return ($0 + $1 + $2 + $3 + $4 + $5 + $6 + $7)
}
return result
}
XCTAssertEqual(res.messages, [
next(280, 36),
next(410, 44),
next(420, 52),
next(430, 60),
next(440, 68),
next(450, 76),
next(460, 84),
next(470, 92),
next(480, 100),
completed(800)
])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 800)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 800)])
XCTAssertEqual(e2.subscriptions, [Subscription(200, 800)])
XCTAssertEqual(e3.subscriptions, [Subscription(200, 800)])
XCTAssertEqual(e4.subscriptions, [Subscription(200, 800)])
XCTAssertEqual(e5.subscriptions, [Subscription(200, 800)])
XCTAssertEqual(e6.subscriptions, [Subscription(200, 800)])
XCTAssertEqual(e7.subscriptions, [Subscription(200, 800)])
}
func testCombineLatest_NeverEmpty() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
completed(210)
])
let res = scheduler.start {
combineLatest(e0, e1) { (x1, x2) -> Int in
return (x1 + x2)
}
}
XCTAssertEqual(res.messages, [])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 1000)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 210)])
}
func testCombineLatest_EmptyNever() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
completed(210)
])
let e1 = scheduler.createHotObservable([
next(150, 1)
])
let res = scheduler.start {
combineLatest(e0, e1) { (x1, x2) -> Int in
return (x1 + x2)
}
}
XCTAssertEqual(res.messages, [])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 210)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 1000)])
}
func testCombineLatest_EmptyReturn() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
completed(210)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
next(215, 2),
completed(220)
])
let res = scheduler.start {
combineLatest(e0, e1) { (x1, x2) -> Int in
return (x1 + x2)
}
}
XCTAssertEqual(res.messages, [completed(215)])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 210)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 215)])
}
func testCombineLatest_ReturnEmpty() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
next(215, 2),
completed(220)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
completed(210)
])
let res = scheduler.start {
combineLatest(e0, e1) { (x1, x2) -> Int in
return (x1 + x2)
}
}
XCTAssertEqual(res.messages, [completed(215)])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 215)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 210)])
}
func testCombineLatest_NeverReturn() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
next(215, 2),
completed(220)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
])
let res = scheduler.start {
combineLatest(e0, e1) { (x1, x2) -> Int in
return (x1 + x2)
}
}
XCTAssertEqual(res.messages, [])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 1000)])
}
func testCombineLatest_ReturnNever() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
])
let e1 = scheduler.createHotObservable([
next(150, 1),
next(215, 2),
completed(220)
])
let res = scheduler.start {
combineLatest(e0, e1) { (x1, x2) -> Int in
return (x1 + x2)
}
}
XCTAssertEqual(res.messages, [])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 1000)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])
}
func testCombineLatest_ReturnReturn1() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
next(215, 2),
completed(230)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
next(220, 3),
completed(240)
])
let res = scheduler.start {
combineLatest(e0, e1) { (x1, x2) -> Int in
return (x1 + x2)
}
}
XCTAssertEqual(res.messages, [next(220, (2 + 3)), completed(240)])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 230)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 240)])
}
func testCombineLatest_ReturnReturn2() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
next(220, 3),
completed(240)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
next(215, 2),
completed(230)
])
let res = scheduler.start {
combineLatest(e0, e1) { (x1, x2) -> Int in
return (x1 + x2)
}
}
XCTAssertEqual(res.messages, [next(220, (2 + 3)), completed(240)])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 240)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 230)])
}
func testCombineLatest_EmptyError() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
completed(230)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
error(220, testError)
])
let res = scheduler.start {
combineLatest(e0, e1) { (x1, x2) -> Int in
return (x1 + x2)
}
}
XCTAssertEqual(res.messages, [error(220, testError)])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])
}
func testCombineLatest_ErrorEmpty() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
error(220, testError)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
completed(230)
])
let res = scheduler.start {
combineLatest(e0, e1) { (x1, x2) -> Int in
return (x1 + x2)
}
}
XCTAssertEqual(res.messages, [error(220, testError)])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])
}
func testCombineLatest_ReturnThrow() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
next(210, 2),
completed(230)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
error(220, testError)
])
let res = scheduler.start {
combineLatest(e0, e1) { (x1, x2) -> Int in
return (x1 + x2)
}
}
XCTAssertEqual(res.messages, [error(220, testError)])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])
}
func testCombineLatest_ThrowReturn() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
error(220, testError)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
next(210, 2),
completed(230)
])
let res = scheduler.start {
combineLatest(e0, e1) { (x1, x2) -> Int in
return (x1 + x2)
}
}
XCTAssertEqual(res.messages, [error(220, testError)])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])
}
func testCombineLatest_ThrowThrow1() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
error(220, testError1),
])
let e1 = scheduler.createHotObservable([
next(150, 1),
error(230, testError2),
])
let res = scheduler.start {
combineLatest(e0, e1) { (x1, x2) -> Int in
return (x1 + x2)
}
}
XCTAssertEqual(res.messages, [error(220, testError1)])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])
}
func testCombineLatest_ThrowThrow2() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
error(230, testError1),
])
let e1 = scheduler.createHotObservable([
next(150, 1),
error(220, testError2),
])
let res = scheduler.start {
combineLatest(e0, e1) { (x1, x2) -> Int in
return (x1 + x2)
}
}
XCTAssertEqual(res.messages, [error(220, testError2)])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])
}
func testCombineLatest_ErrorThrow() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
next(210, 2),
error(220, testError1),
])
let e1 = scheduler.createHotObservable([
next(150, 1),
error(230, testError2),
])
let res = scheduler.start {
combineLatest(e0, e1) { (x1, x2) -> Int in
return (x1 + x2)
}
}
XCTAssertEqual(res.messages, [error(220, testError1)])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])
}
func testCombineLatest_ThrowError() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
error(230, testError2),
])
let e1 = scheduler.createHotObservable([
next(150, 1),
next(210, 2),
error(220, testError1),
])
let res = scheduler.start {
combineLatest(e0, e1) { (x1, x2) -> Int in
return (x1 + x2)
}
}
XCTAssertEqual(res.messages, [error(220, testError1)])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])
}
func testCombineLatest_SomeThrow() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
next(215, 2),
completed(230)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
error(220, testError),
])
let res = scheduler.start {
combineLatest(e0, e1) { (x1, x2) -> Int in
return (x1 + x2)
}
}
XCTAssertEqual(res.messages, [error(220, testError)])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])
}
func testCombineLatest_ThrowSome() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
error(220, testError),
])
let e1 = scheduler.createHotObservable([
next(150, 1),
next(215, 2),
completed(230)
])
let res = scheduler.start {
combineLatest(e0, e1) { (x1, x2) -> Int in
return (x1 + x2)
}
}
XCTAssertEqual(res.messages, [error(220, testError)])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])
}
func testCombineLatest_ThrowAfterCompleteLeft() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
next(215, 2),
completed(220)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
error(230, testError),
])
let res = scheduler.start {
combineLatest(e0, e1) { (x1, x2) -> Int in
return (x1 + x2)
}
}
XCTAssertEqual(res.messages, [error(230, testError)])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 230)])
}
func testCombineLatest_ThrowAfterCompleteRight() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
error(230, testError),
])
let e1 = scheduler.createHotObservable([
next(150, 1),
next(215, 2),
completed(220)
])
let res = scheduler.start {
combineLatest(e0, e1) { (x1, x2) -> Int in
return (x1 + x2)
}
}
XCTAssertEqual(res.messages, [error(230, testError)])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 230)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])
}
func testCombineLatest_TestInterleavedWithTail() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
next(215, 2),
next(225, 4),
completed(230)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
next(220, 3),
next(230, 5),
next(235, 6),
next(240, 7),
completed(250)
])
let res = scheduler.start {
combineLatest(e0, e1) { (x1, x2) -> Int in
return (x1 + x2)
}
}
let messages = [
next(220, 2 + 3),
next(225, 3 + 4),
next(230, 4 + 5),
next(235, 4 + 6),
next(240, 4 + 7),
completed(250)
]
XCTAssertEqual(res.messages, messages)
XCTAssertEqual(e0.subscriptions, [Subscription(200, 230)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 250)])
}
func testCombineLatest_Consecutive() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
next(215, 2),
next(225, 4),
completed(230)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
next(235, 6),
next(240, 7),
completed(250)
])
let res = scheduler.start {
combineLatest(e0, e1) { (x1, x2) -> Int in
return (x1 + x2)
}
}
let messages = [
next(235, 4 + 6),
next(240, 4 + 7),
completed(250)
]
XCTAssertEqual(res.messages, messages)
XCTAssertEqual(e0.subscriptions, [Subscription(200, 230)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 250)])
}
func testCombineLatest_ConsecutiveEndWithErrorLeft() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
next(215, 2),
next(225, 4),
error(230, testError)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
next(235, 6),
next(240, 7),
completed(250)
])
let res = scheduler.start {
combineLatest(e0, e1) { (x1, x2) -> Int in
return (x1 + x2)
}
}
XCTAssertEqual(res.messages, [error(230, testError)])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 230)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 230)])
}
func testCombineLatest_ConsecutiveEndWithErrorRight() {
let scheduler = TestScheduler(initialClock: 0)
let e0 = scheduler.createHotObservable([
next(150, 1),
next(215, 2),
next(225, 4),
completed(250)
])
let e1 = scheduler.createHotObservable([
next(150, 1),
next(235, 6),
next(240, 7),
error(245, testError)
])
let res = scheduler.start {
combineLatest(e0, e1) { (x1, x2) -> Int in
return (x1 + x2)
}
}
XCTAssertEqual(res.messages, [
next(235, 4 + 6),
next(240, 4 + 7),
error(245, testError)
])
XCTAssertEqual(e0.subscriptions, [Subscription(200, 245)])
XCTAssertEqual(e1.subscriptions, [Subscription(200, 245)])
}
}