Add further scrollback option for longer terminal history

This commit is contained in:
2026-04-27 13:18:27 +10:00
parent 9f6e607e78
commit 507d77a0de
19 changed files with 349 additions and 32 deletions

View File

@@ -0,0 +1,46 @@
import XCTest
@testable import CommandNotch
final class TerminalScrollCoordinatorTests: XCTestCase {
func testScrollAwayFromBottomDisablesOutputFollow() {
let coordinator = TerminalScrollCoordinator()
coordinator.terminalDidScroll(to: 0.42, canScroll: true)
XCTAssertFalse(coordinator.followsOutput)
XCTAssertEqual(coordinator.outputRestorePosition(canScroll: true) ?? .nan, 0.42, accuracy: 0.0001)
}
func testTypingReEnablesFollowAndRequestsJumpToBottom() {
let coordinator = TerminalScrollCoordinator()
coordinator.terminalDidScroll(to: 0.42, canScroll: true)
let shouldJump = coordinator.userDidStartTyping()
XCTAssertTrue(shouldJump)
XCTAssertTrue(coordinator.followsOutput)
XCTAssertNil(coordinator.outputRestorePosition(canScroll: true))
}
func testScrollingBackToBottomReEnablesOutputFollow() {
let coordinator = TerminalScrollCoordinator()
coordinator.terminalDidScroll(to: 0.42, canScroll: true)
coordinator.terminalDidScroll(to: 1, canScroll: true)
XCTAssertTrue(coordinator.followsOutput)
XCTAssertNil(coordinator.outputRestorePosition(canScroll: true))
}
func testSuppressedTrackingIgnoresProgrammaticScrollUpdates() {
let coordinator = TerminalScrollCoordinator()
coordinator.terminalDidScroll(to: 0.42, canScroll: true)
coordinator.suppressTracking {
coordinator.terminalDidScroll(to: 1, canScroll: true)
}
XCTAssertFalse(coordinator.followsOutput)
XCTAssertEqual(coordinator.outputRestorePosition(canScroll: true) ?? .nan, 0.42, accuracy: 0.0001)
}
}