Files
MyGoNavi/internal/nativewindow/window_visibility_test.go
Syngnat 5c3535c85d feat(native-window): 支持 macOS Dock 管理独立窗口
- 在主程序 Dock 菜单动态列出并聚焦已就绪的独立窗口
- 在 Wails 启动前固定子进程为 Accessory,消除临时 Dock 图标闪现
- 按多显示器可见区域修正越界窗口并回写实际坐标
- 将自定义 AI 面板快捷键同步到独立窗口并转交主窗口处理
- 补齐 Go、Objective-C、前端及 Wails 绑定回归测试
2026-07-21 18:52:54 +08:00

70 lines
2.2 KiB
Go

package nativewindow
import "testing"
func TestNormalizeDetachedWindowBoundsForDisplaysRecentersOffscreenWindow(t *testing.T) {
displays := []WindowBounds{{X: 0, Y: 24, Width: 2048, Height: 1128}}
got := normalizeDetachedWindowBoundsForDisplays(
WindowBounds{X: 0, Y: 1152, Width: 921, Height: 812},
displays,
)
want := WindowBounds{X: 563, Y: 182, Width: 921, Height: 812}
if got != want {
t.Fatalf("normalized bounds = %#v, want %#v", got, want)
}
}
func TestNormalizeDetachedWindowBoundsForDisplaysPreservesVisibleSecondaryDisplay(t *testing.T) {
displays := []WindowBounds{
{X: 0, Y: 24, Width: 2048, Height: 1128},
{X: -1920, Y: 0, Width: 1920, Height: 1080},
}
want := WindowBounds{X: -1600, Y: 120, Width: 921, Height: 812}
if got := normalizeDetachedWindowBoundsForDisplays(want, displays); got != want {
t.Fatalf("normalized bounds = %#v, want unchanged %#v", got, want)
}
}
func TestNormalizeDetachedWindowBoundsForDisplaysPreservesDisplayAbovePrimary(t *testing.T) {
displays := []WindowBounds{
{X: 0, Y: 24, Width: 2048, Height: 1128},
{X: 224, Y: -900, Width: 1600, Height: 900},
}
want := WindowBounds{X: 420, Y: -820, Width: 921, Height: 812}
if got := normalizeDetachedWindowBoundsForDisplays(want, displays); got != want {
t.Fatalf("normalized bounds = %#v, want unchanged %#v", got, want)
}
}
func TestNormalizeDetachedWindowBoundsForDisplaysFitsOversizedWindow(t *testing.T) {
displays := []WindowBounds{{X: 0, Y: 24, Width: 1280, Height: 696}}
got := normalizeDetachedWindowBoundsForDisplays(
WindowBounds{X: 2200, Y: 200, Width: 1600, Height: 900},
displays,
)
want := WindowBounds{X: 0, Y: 24, Width: 1280, Height: 696}
if got != want {
t.Fatalf("normalized bounds = %#v, want %#v", got, want)
}
}
func TestNormalizeDetachedWindowBoundsForDisplaysFitsVisibleOversizedWindow(t *testing.T) {
displays := []WindowBounds{{X: 0, Y: 24, Width: 1280, Height: 696}}
got := normalizeDetachedWindowBoundsForDisplays(
WindowBounds{X: 0, Y: 24, Width: 1600, Height: 900},
displays,
)
want := WindowBounds{X: 0, Y: 24, Width: 1280, Height: 696}
if got != want {
t.Fatalf("normalized bounds = %#v, want %#v", got, want)
}
}