Files
Artemis-Plugins/plugins/cua-driver/coordinates_test.go
T
chenmingxuan b780a60e8d feat(cua): release 0.38.0+artemis.1 with verified shell observation
Upgrade the pinned driver, validate menu and taskbar focus ownership, patch untitled Shell resolution, and remove duplicate scroll scaling. Publish package provenance, verification boundaries and matching marketplace checksum. Go tests, vet, build and byte-level package verification passed.
2026-10-27 01:13:43 +08:00

102 lines
2.9 KiB
Go

package main
import (
"math"
"testing"
)
func fixtureFrame(w, h int) pointerFrame {
return pointerFrame{"current", w, h, obj{"left": -2560, "top": 120, "width": 2560, "height": 1540}}
}
func TestScrollPixelsReachUpstreamWithoutDoubleScaling(t *testing.T) {
for _, size := range [][2]int{{1280, 770}, {2558, 1538}, {2560, 1540}} {
frame := fixtureFrame(size[0], size[1])
args := obj{"pid": 1, "window_id": 2, "capture_id": "current", "x": 900.5, "y": 600.25, "direction": "down"}
if err := frame.validate("scroll", args); err != nil {
t.Fatal(err)
}
got := withoutCaptureBinding(args)
if got["x"] != 900.5 || got["y"] != 600.25 || got["pid"] != 1 || got["window_id"] != 2 {
t.Fatal(got)
}
if _, ok := got["capture_id"]; ok {
t.Fatal("upstream scroll rejects capture_id")
}
if args["capture_id"] != "current" {
t.Fatal("input evidence mutated")
}
}
}
func TestInvalidScrollCoordinatesAreRejectedBeforeDispatch(t *testing.T) {
frame := fixtureFrame(1280, 770)
for _, bad := range []obj{
{"capture_id": "current", "x": 1700, "y": 1000},
{"capture_id": "old", "x": 900, "y": 600},
{"x": 900, "y": 600},
{"capture_id": "current", "x": -1, "y": 0},
{"capture_id": "current", "x": 1280, "y": 0},
{"capture_id": "current", "x": 0, "y": 770},
{"capture_id": "current", "x": "900", "y": 600},
{"capture_id": "current", "x": math.NaN(), "y": 600},
{"capture_id": "current", "x": 900, "y": math.Inf(1)},
} {
if frame.validate("scroll", bad) == nil {
t.Fatalf("accepted %v", bad)
}
}
}
func TestMovedOrResizedWindowInvalidatesFrame(t *testing.T) {
frame := fixtureFrame(1280, 770)
for _, key := range []string{"left", "top", "width", "height"} {
changed := copyArgs(frame.window)
changed[key] = num(changed[key]) + 1
if sameWindow(frame.window, changed) {
t.Fatal("accepted changed " + key)
}
}
}
func TestClickAndBothDragEndpointsUseLatestFrame(t *testing.T) {
f := fixtureFrame(1280, 770)
click := obj{"capture_id": "current", "x": 1279, "y": 769}
if err := f.validate("click_at", click); err != nil {
t.Fatal(err)
}
if click["x"] != 1279 || click["y"] != 769 {
t.Fatal("click scaled twice")
}
drag := obj{"capture_id": "current", "from_x": 0, "from_y": 0, "to_x": 1279, "to_y": 769}
if err := f.validate("drag", drag); err != nil {
t.Fatal(err)
}
for _, key := range []string{"from_x", "from_y", "to_x", "to_y"} {
bad := copyArgs(drag)
bad[key] = 3000
if f.validate("drag", bad) == nil {
t.Fatal("accepted out of bounds " + key)
}
}
drag["capture_id"] = "old"
if f.validate("drag", drag) == nil {
t.Fatal("accepted stale drag")
}
}
func TestAllPixelSchemasRequireCapture(t *testing.T) {
a := newAdapter(nil)
for _, name := range []string{"click_at", "scroll", "drag"} {
found := false
for _, key := range items(a.schemas[name]["required"]) {
if key == "capture_id" {
found = true
}
}
if !found {
t.Fatal(name + " lacks capture binding")
}
}
}