mirror of
https://github.com/ghostty-org/ghostty.git
synced 2026-05-25 06:18:37 +00:00
feat: add search state unit tests
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
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(
|
||||
name: OSPasteboard.Name(rawValue: UUID().uuidString)
|
||||
)
|
||||
|
||||
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")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user