Skip to content

Commit

Permalink
Tests for Observable/Infallible
Browse files Browse the repository at this point in the history
  • Loading branch information
freak4pc committed Feb 10, 2021
1 parent 35a74aa commit d845ca9
Show file tree
Hide file tree
Showing 4 changed files with 190 additions and 3 deletions.
4 changes: 4 additions & 0 deletions Sources/AllTestz/main.swift
Original file line number Diff line number Diff line change
Expand Up @@ -328,6 +328,8 @@ final class InfallibleTest_ : InfallibleTest, RxTestCase {
("testAnonymousInfallible_detachesOnDispose", InfallibleTest.testAnonymousInfallible_detachesOnDispose),
("testAnonymousInfallible_detachesOnComplete", InfallibleTest.testAnonymousInfallible_detachesOnComplete),
("testAsInfallible_never", InfallibleTest.testAsInfallible_never),
("testSubscribeWithNext", InfallibleTest.testSubscribeWithNext),
("testSubscribeWithError", InfallibleTest.testSubscribeWithError),
] }
}

Expand Down Expand Up @@ -1632,6 +1634,8 @@ final class ObservableTest_ : ObservableTest, RxTestCase {
("testAsObservable_asObservable", ObservableTest.testAsObservable_asObservable),
("testAsObservable_hides", ObservableTest.testAsObservable_hides),
("testAsObservable_never", ObservableTest.testAsObservable_never),
("testSubscribeWithNext", ObservableTest.testSubscribeWithNext),
("testSubscribeWithError", ObservableTest.testSubscribeWithError),
] }
}

Expand Down
2 changes: 1 addition & 1 deletion Tests/RxCocoaTests/Signal+Test.swift
Original file line number Diff line number Diff line change
Expand Up @@ -654,7 +654,7 @@ extension SignalTests {
}
}

// MARK: - Drive with object
// MARK: - Emit with object
extension SignalTests {
func testEmitWithNext() {
let scheduler = TestScheduler(initialClock: 0)
Expand Down
95 changes: 94 additions & 1 deletion Tests/RxSwiftTests/Infallible+Tests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,11 @@ import RxTest
import XCTest

class InfallibleTest: RxTest {

fileprivate var testObject: TestObject!

override func setUp() {
testObject = TestObject()
}
}

extension InfallibleTest {
Expand Down Expand Up @@ -174,3 +178,92 @@ extension InfallibleTest {
}
#endif
}

// MARK: - Subscribe with object
extension InfallibleTest {
func testSubscribeWithNext() {
let scheduler = TestScheduler(initialClock: 0)
var values = [String]()
var disposed: UUID?
var completed: UUID?

let observable = scheduler.createColdObservable([
.next(10, 0),
.next(20, 1),
.next(30, 2),
.next(40, 3),
.completed(50)
])

let inf = observable.asInfallible(onErrorJustReturn: -1)

_ = inf
.subscribe(
with: testObject,
onNext: { object, value in values.append(object.id.uuidString + "\(value)") },
onCompleted: { completed = $0.id },
onDisposed: { disposed = $0.id }
)

scheduler.start()

let uuid = testObject.id
XCTAssertEqual(values, [
uuid.uuidString + "0",
uuid.uuidString + "1",
uuid.uuidString + "2",
uuid.uuidString + "3"
])

XCTAssertEqual(completed, uuid)
XCTAssertEqual(disposed, uuid)

XCTAssertNotNil(testObject)
testObject = nil
XCTAssertNil(testObject)
}

func testSubscribeWithError() {
let scheduler = TestScheduler(initialClock: 0)
var values = [String]()
var disposed: UUID?
var completed: UUID?

let observable = scheduler.createColdObservable([
.next(10, 0),
.next(20, 1),
.error(30, testError),
.next(40, 3),
])

let inf = observable.asInfallible(onErrorJustReturn: -1)

_ = inf
.subscribe(
with: testObject,
onNext: { object, value in values.append(object.id.uuidString + "\(value)") },
onCompleted: { completed = $0.id },
onDisposed: { disposed = $0.id }
)

scheduler.start()

let uuid = testObject.id
XCTAssertEqual(values, [
uuid.uuidString + "0",
uuid.uuidString + "1",
uuid.uuidString + "-1"
])

XCTAssertEqual(completed, uuid)
XCTAssertEqual(disposed, uuid)

XCTAssertNotNil(testObject)
testObject = nil
XCTAssertNil(testObject)
}
}

private class TestObject: NSObject {
var id = UUID()
}
92 changes: 91 additions & 1 deletion Tests/RxSwiftTests/Observable+Tests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,12 @@ import RxCocoa
import RxTest
import XCTest

class ObservableTest : RxTest {
class ObservableTest: RxTest {
fileprivate var testObject: TestObject!

override func setUp() {
testObject = TestObject()
}
}

extension ObservableTest {
Expand Down Expand Up @@ -185,3 +189,89 @@ extension ObservableTest {
}
#endif
}

// MARK: - Subscribe with object
extension ObservableTest {
func testSubscribeWithNext() {
let scheduler = TestScheduler(initialClock: 0)
var values = [String]()
var disposed: UUID?
var completed: UUID?

let observable = scheduler.createColdObservable([
.next(10, 0),
.next(20, 1),
.next(30, 2),
.next(40, 3),
.completed(50)
])

_ = observable
.subscribe(
with: testObject,
onNext: { object, value in values.append(object.id.uuidString + "\(value)") },
onCompleted: { completed = $0.id },
onDisposed: { disposed = $0.id }
)

scheduler.start()

let uuid = testObject.id
XCTAssertEqual(values, [
uuid.uuidString + "0",
uuid.uuidString + "1",
uuid.uuidString + "2",
uuid.uuidString + "3"
])

XCTAssertEqual(completed, uuid)
XCTAssertEqual(disposed, uuid)

XCTAssertNotNil(testObject)
testObject = nil
XCTAssertNil(testObject)
}

func testSubscribeWithError() {
let scheduler = TestScheduler(initialClock: 0)
var values = [String]()
var disposed: UUID?
var error: String?

let observable = scheduler.createColdObservable([
.next(10, 0),
.next(20, 1),
.next(30, 2),
.error(40, testError),
.next(50, 3)
])

_ = observable
.subscribe(
with: testObject,
onNext: { object, value in values.append(object.id.uuidString + "\(value)") },
onError: { object, e in error = object.id.uuidString + "\(e)" },
onDisposed: { disposed = $0.id }
)

scheduler.start()

let uuid = testObject.id
XCTAssertEqual(values, [
uuid.uuidString + "0",
uuid.uuidString + "1",
uuid.uuidString + "2"
])

XCTAssertEqual(disposed, uuid)
XCTAssertEqual(error, uuid.uuidString + "dummyError")

XCTAssertNotNil(testObject)
testObject = nil
XCTAssertNil(testObject)
}
}

private class TestObject: NSObject {
var id = UUID()
}

0 comments on commit d845ca9

Please sign in to comment.