Files
divkit/client/ios/LayoutKit/LayoutKitTests/UI/Base/ScrollableContentPagerTests.swift
pkurchatov 27a3472171 Enabled blankLinesBetweenImports swiftformat rule
commit_hash:84ea24cbdf21ef89741080f38ec5e583172a2458
2024-12-20 12:41:02 +03:00

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)
}
}