         
         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

		
		XCTAssertTrue(completed)
	}
	
	func testScrollViewDidEndDragging() {
		var completed = false

        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
