/
PanPinchBehaviorTests.swift
47 lines (38 loc) · 1.68 KB
/
PanPinchBehaviorTests.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import XCTest
@testable import MapboxMaps
final class PanPinchBehaviorTests: BasePinchBehaviorTests {
override func setUp() {
super.setUp()
behavior = PanPinchBehavior(
initialPinchMidpoint: initialPinchMidpoint,
mapboxMap: mapboxMap)
}
func testUpdate() {
let pinchMidpoint = CGPoint.random()
let dragCameraOptions = CameraOptions.random()
mapboxMap.dragCameraOptionsStub.defaultReturnValue = dragCameraOptions
behavior.update(pinchMidpoint: pinchMidpoint, pinchScale: .random(in: 0..<2))
// verify camera gets set once
guard mapboxMap.setCameraStub.invocations.count == 1 else {
XCTFail("Did not receive the expected number of setCamera invocations.")
return
}
// verify that dragStart is called once with initial midpoint
XCTAssertEqual(
mapboxMap.dragStartStub.invocations.map(\.parameters),
[initialPinchMidpoint])
// verify that dragCameraOptions is invoked once with expected parameters
XCTAssertEqual(
mapboxMap.dragCameraOptionsStub.invocations.map(\.parameters),
[.init(from: initialPinchMidpoint, to: pinchMidpoint)])
// verify that setCamera is invoked a second time with the return value
// from dragCameraOptions
XCTAssertEqual(
mapboxMap.setCameraStub.invocations[0].parameters,
dragCameraOptions)
// verify drag end is invoked once
XCTAssertEqual(mapboxMap.dragEndStub.invocations.count, 1)
// verify that only one camera changed notification was emitted
XCTAssertEqual(cameraChangedCount, 1)
}
}