mirror of
https://github.com/ghostty-org/ghostty.git
synced 2026-05-29 08:15:20 +00:00
98 lines
2.8 KiB
Swift
98 lines
2.8 KiB
Swift
import AppKit
|
|
import GhosttyKit
|
|
import Testing
|
|
@testable import Ghostty
|
|
|
|
@MainActor struct SurfaceView_SearchStateTests {
|
|
typealias SearchState = Ghostty.OSSurfaceView.SearchState
|
|
typealias StartSearch = Ghostty.Action.StartSearch
|
|
|
|
/// A unique pasteboard for each test case prevents flakiness.
|
|
let pasteboard = OSPasteboard.withUniqueName()
|
|
|
|
init() {
|
|
pasteboard.setString("pb", forType: .string)
|
|
}
|
|
|
|
@Test func init_withNilNeedle_readsPasteboardNeedle() {
|
|
let sut = SearchState(
|
|
from: StartSearch(c: .init(needle: nil)),
|
|
pasteboard: pasteboard
|
|
)
|
|
#expect(sut.needle == "pb")
|
|
}
|
|
|
|
@Test func init_withEmptyNeedle_readsPasteboardNeedle() {
|
|
"".withCString { needle in
|
|
let sut = SearchState(
|
|
from: StartSearch(c: .init(needle: needle)),
|
|
pasteboard: pasteboard
|
|
)
|
|
#expect(sut.needle == "pb")
|
|
}
|
|
}
|
|
|
|
@Test func init_withNeedle_setsNeedle() {
|
|
"start".withCString { needle in
|
|
let sut = SearchState(
|
|
from: StartSearch(c: .init(needle: needle)),
|
|
pasteboard: pasteboard
|
|
)
|
|
#expect(sut.needle == "start")
|
|
}
|
|
}
|
|
|
|
@Test func init_withNeedle_writesPasteboard() {
|
|
"start".withCString { needle in
|
|
_ = SearchState(
|
|
from: StartSearch(c: .init(needle: needle)),
|
|
pasteboard: pasteboard
|
|
)
|
|
#expect(pasteboard.string(forType: .string) == "start")
|
|
}
|
|
}
|
|
|
|
@Test func writePasteboardNeedle_writesPasteboard() {
|
|
let sut = SearchState(
|
|
from: StartSearch(c: .init(needle: nil)),
|
|
pasteboard: pasteboard
|
|
)
|
|
sut.needle = "sut"
|
|
sut.writePasteboardNeedle()
|
|
#expect(pasteboard.string(forType: .string) == "sut")
|
|
}
|
|
|
|
@Test func readPasteboardNeedle_whenPasteboardNeedleIsNil() {
|
|
let sut = SearchState(
|
|
from: StartSearch(c: .init(needle: nil)),
|
|
pasteboard: pasteboard
|
|
)
|
|
pasteboard.clearContents()
|
|
sut.needle = "sut"
|
|
sut.readPasteboardNeedle()
|
|
#expect(sut.needle == "sut")
|
|
}
|
|
|
|
@Test func readPasteboardNeedle_whenPasteboardNeedleIsValid() {
|
|
let sut = SearchState(
|
|
from: StartSearch(c: .init(needle: nil)),
|
|
pasteboard: pasteboard
|
|
)
|
|
sut.needle = "sut"
|
|
sut.readPasteboardNeedle()
|
|
#expect(sut.needle == "pb")
|
|
}
|
|
|
|
@Test func readPasteboardNeedle_setsNeedleSelectionRange() {
|
|
let sut = SearchState(
|
|
from: StartSearch(c: .init(needle: nil)),
|
|
pasteboard: pasteboard
|
|
)
|
|
sut.needle = "sut"
|
|
sut.readPasteboardNeedle()
|
|
|
|
let expected = "pb".startIndex..<"pb".endIndex
|
|
#expect(sut.needleSelection == expected)
|
|
}
|
|
}
|