mirror of
https://github.com/divkit/divkit.git
synced 2026-06-06 20:07:59 +00:00
82 lines
2.2 KiB
Swift
82 lines
2.2 KiB
Swift
import LayoutKit
|
|
import XCTest
|
|
|
|
final class ScrollableContentPagerTests: XCTestCase {
|
|
private var pager = ScrollableContentPager()
|
|
private var isHorizontal = true
|
|
|
|
override func invokeTest() {
|
|
for isHorizontal in [false, true] {
|
|
self.isHorizontal = isHorizontal
|
|
super.invokeTest()
|
|
}
|
|
}
|
|
|
|
override func setUp() {
|
|
pager.setPageOrigins([0, 100, 250, 300], withPagingEnabled: true, isHorizontal: isHorizontal)
|
|
}
|
|
|
|
func test_WhenMovingForward_SnapsToNextPage() {
|
|
pager.setInitialOffset(20)
|
|
|
|
let resultOffset = pager.targetPageOffset(forProposedOffset: 170, velocity: 0.1)!
|
|
|
|
XCTAssertEqual(resultOffset, 100)
|
|
}
|
|
|
|
func test_WhenMovingForwardAndResultPageIsSame_ForcesToNextPage() {
|
|
pager.setInitialOffset(20)
|
|
|
|
let resultOffset = pager.targetPageOffset(forProposedOffset: 49, velocity: 0.1)!
|
|
|
|
XCTAssertEqual(resultOffset, 100)
|
|
}
|
|
|
|
func test_WhenMovingBackward_SnapsToPreviousPage() {
|
|
pager.setInitialOffset(260)
|
|
|
|
let resultOffset = pager.targetPageOffset(forProposedOffset: 49, velocity: -0.1)!
|
|
|
|
XCTAssertEqual(resultOffset, 0) // over one page
|
|
}
|
|
|
|
func test_WhenMovingBackwardAndResultPageIsSame_ForcesToPreviousPage() {
|
|
pager.setInitialOffset(110)
|
|
|
|
let resultOffset = pager.targetPageOffset(forProposedOffset: 51, velocity: -0.1)!
|
|
|
|
XCTAssertEqual(resultOffset, 0)
|
|
}
|
|
|
|
func test_WhenBouncingLeft_SnapsToFirstPage() {
|
|
pager.setInitialOffset(110)
|
|
|
|
let resultOffset = pager.targetPageOffset(forProposedOffset: -10, velocity: -0.1)!
|
|
|
|
XCTAssertEqual(resultOffset, 0)
|
|
}
|
|
|
|
func test_WhenBouncingRight_SnapsToLastPage() {
|
|
pager.setInitialOffset(300)
|
|
|
|
let resultOffset = pager.targetPageOffset(forProposedOffset: 400, velocity: 0.1)!
|
|
|
|
XCTAssertEqual(resultOffset, 300)
|
|
}
|
|
|
|
func test_ForDisabledPaging_TargetPageOffsetFails() {
|
|
pager.setPageOrigins([100, 250], withPagingEnabled: false, isHorizontal: isHorizontal)
|
|
pager.setInitialOffset(100)
|
|
|
|
let resultOffset = pager.targetPageOffset(forProposedOffset: 150, velocity: -1)
|
|
|
|
XCTAssertNil(resultOffset)
|
|
}
|
|
|
|
func test_WithNoInitialOffset_TargetPageOffsetFails() {
|
|
let resultOffset = pager.targetPageOffset(forProposedOffset: 150, velocity: 1)
|
|
|
|
XCTAssertNil(resultOffset)
|
|
}
|
|
}
|