44 lines
2.1 KiB
Swift
44 lines
2.1 KiB
Swift
import AppKit
|
|
import Testing
|
|
@testable import Conjure
|
|
|
|
@Test @MainActor func emojiBordersFollowSelectionAndHover() throws {
|
|
_ = NSApplication.shared
|
|
let suite = "EmojiBorders.\(UUID().uuidString)"
|
|
let defaults = UserDefaults(suiteName: suite)!
|
|
defer { defaults.removePersistentDomain(forName: suite) }
|
|
let picker = EmojiPickerController(defaults: defaults)
|
|
picker.input = { "face" }
|
|
let window = NSWindow(contentRect: NSRect(x: 0, y: 0, width: 750, height: 400),
|
|
styleMask: [.borderless], backing: .buffered, defer: false)
|
|
window.contentView = picker.view
|
|
picker.view.layoutSubtreeIfNeeded()
|
|
let scroll = try #require(picker.view.subviews.compactMap { $0 as? NSScrollView }.first)
|
|
let grid = try #require(scroll.documentView as? NSCollectionView)
|
|
let first = try #require(grid.item(at: IndexPath(item: 0, section: 0))?.view as? NSButton)
|
|
let second = try #require(grid.item(at: IndexPath(item: 1, section: 0))?.view as? NSButton)
|
|
let enter = try #require(NSEvent.enterExitEvent(with: .mouseEntered, location: .zero,
|
|
modifierFlags: [], timestamp: 0, windowNumber: window.windowNumber,
|
|
context: nil, eventNumber: 0, trackingNumber: 0, userData: nil))
|
|
let exit = try #require(NSEvent.enterExitEvent(with: .mouseExited, location: .zero,
|
|
modifierFlags: [], timestamp: 0, windowNumber: window.windowNumber,
|
|
context: nil, eventNumber: 0, trackingNumber: 0, userData: nil))
|
|
first.mouseExited(with: exit)
|
|
second.mouseExited(with: exit)
|
|
#expect(first.layer?.borderWidth == 0.5)
|
|
#expect(second.layer?.borderWidth == 0)
|
|
second.mouseEntered(with: enter)
|
|
#expect(second.layer?.borderWidth == 0.5)
|
|
picker.moveSelection(by: 1)
|
|
#expect(first.layer?.borderWidth == 0)
|
|
second.mouseExited(with: exit)
|
|
#expect(second.layer?.borderWidth == 0.5)
|
|
picker.moveSelection(by: -1)
|
|
#expect(second.layer?.borderWidth == 0)
|
|
first.mouseEntered(with: enter)
|
|
picker.moveSelection(by: 1)
|
|
#expect(first.layer?.borderWidth == 0.5)
|
|
first.mouseExited(with: exit)
|
|
#expect(first.layer?.borderWidth == 0)
|
|
}
|