Skip to content

Commit

Permalink
Add UIScrollViewDelegate control event tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Nolan Warner authored and kzaher committed Jun 29, 2017
1 parent b7d1bdd commit 4e06fc8
Showing 1 changed file with 101 additions and 0 deletions.
101 changes: 101 additions & 0 deletions Tests/RxCocoaTests/UIScrollView+RxTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,28 @@ extension UIScrollViewTests {
XCTAssertTrue(completed)
}

func testScrollViewWillBeginDecelerating() {
var completed = false

autoreleasepool {
let scrollView = UIScrollView()
var willBeginDecelerating = false

_ = scrollView.rx.willBeginDecelerating.subscribe(onNext: {
willBeginDecelerating = true
}, onCompleted: {
completed = true
})

XCTAssertFalse(willBeginDecelerating)

scrollView.delegate!.scrollViewWillBeginDecelerating!(scrollView)

XCTAssertTrue(willBeginDecelerating)
}

XCTAssertTrue(completed)
}

func testScrollViewDidEndDecelerating() {
var completed = false
Expand All @@ -85,6 +107,29 @@ extension UIScrollViewTests {

XCTAssertTrue(completed)
}

func testScrollViewWillBeginDragging() {
var completed = false

autoreleasepool {
let scrollView = UIScrollView()
var willBeginDragging = false

_ = scrollView.rx.willBeginDragging.subscribe(onNext: {
willBeginDragging = true
}, onCompleted: {
completed = true
})

XCTAssertFalse(willBeginDragging)

scrollView.delegate!.scrollViewWillBeginDragging!(scrollView)

XCTAssertTrue(willBeginDragging)
}

XCTAssertTrue(completed)
}

func testScrollViewDidEndDragging() {
var completed = false
Expand Down Expand Up @@ -191,6 +236,62 @@ extension UIScrollViewTests {

XCTAssertTrue(completed)
}

func testScrollViewWillBeginZooming() {
var completed = false

autoreleasepool {
let scrollView = UIScrollView()
let zoomView = UIView()
var results: [UIView?] = []

_ = scrollView.rx.willBeginZooming.subscribe(onNext: { value in
results.append(value)
}, onCompleted: {
completed = true
})

XCTAssertTrue(results.isEmpty)

scrollView.delegate!.scrollViewWillBeginZooming!(scrollView, with: zoomView)
scrollView.delegate!.scrollViewWillBeginZooming!(scrollView, with: nil)

XCTAssertEqual(results[0], zoomView)
XCTAssertNil(results[1])
}

XCTAssertTrue(completed)
}

func testScrollViewDidEndZooming() {
var completed = false

autoreleasepool {
let scrollView = UIScrollView()
let zoomView = UIView()
var viewResults: [UIView?] = []
var scaleResults: [CGFloat] = []

_ = scrollView.rx.didEndZooming.subscribe(onNext: { (view, scale) in
viewResults.append(view)
scaleResults.append(scale)
}, onCompleted: {
completed = true
})

XCTAssertTrue(viewResults.isEmpty)
XCTAssertTrue(scaleResults.isEmpty)

scrollView.delegate!.scrollViewDidEndZooming!(scrollView, with: zoomView, atScale: 0)
scrollView.delegate!.scrollViewDidEndZooming!(scrollView, with: nil, atScale: 2)

XCTAssertEqual(viewResults[0], zoomView)
XCTAssertNil(viewResults[1])
XCTAssertEqual(scaleResults, [0, 2])
}

XCTAssertTrue(completed)
}
}

@objc final class MockScrollViewDelegate
Expand Down

0 comments on commit 4e06fc8

Please sign in to comment.