74 lines
2.2 KiB
Go
74 lines
2.2 KiB
Go
package uiaselector
|
|
|
|
import "testing"
|
|
|
|
func TestMatchSelectorFindsKnownN12RNodes(t *testing.T) {
|
|
root, err := LoadDumpFile("testdata/n12r-2026-07-09-uia-redacted.json")
|
|
if err != nil {
|
|
t.Fatalf("LoadDumpFile: %v", err)
|
|
}
|
|
|
|
tests := []struct {
|
|
selectorID string
|
|
path string
|
|
control string
|
|
autoID string
|
|
}{
|
|
{selectorID: "main_window", path: "root", control: "Window", autoID: "frmMain"},
|
|
{selectorID: "left_panel", path: "root/4", control: "Pane", autoID: "panelLeft"},
|
|
{selectorID: "fuzzy_search_edit", path: "root/4/1/0/0/2", control: "Edit", autoID: "skinAlphaTxt"},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
result := MatchSelector(root, DefaultCatalog(), tt.selectorID)
|
|
if !result.OK {
|
|
t.Fatalf("%s OK=false: %#v", tt.selectorID, result.Error)
|
|
}
|
|
if !result.Matched {
|
|
t.Fatalf("%s matched=false", tt.selectorID)
|
|
}
|
|
if result.MatchCount != 1 {
|
|
t.Fatalf("%s match_count = %d, want 1", tt.selectorID, result.MatchCount)
|
|
}
|
|
match := result.Matches[0]
|
|
if match.Path != tt.path || match.ControlType != tt.control || match.AutomationID != tt.autoID {
|
|
t.Fatalf("%s match = %#v", tt.selectorID, match)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestMatchSelectorDoesNotReturnVisibleText(t *testing.T) {
|
|
root, err := LoadDumpFile("testdata/n12r-2026-07-09-uia-redacted.json")
|
|
if err != nil {
|
|
t.Fatalf("LoadDumpFile: %v", err)
|
|
}
|
|
result := MatchSelector(root, DefaultCatalog(), "main_window")
|
|
if !result.OK || !result.Matched || len(result.Matches) != 1 {
|
|
t.Fatalf("unexpected result: %#v", result)
|
|
}
|
|
match := result.Matches[0]
|
|
if match.Name != "" {
|
|
t.Fatalf("match returned visible name text %q", match.Name)
|
|
}
|
|
if !match.HasName {
|
|
t.Fatalf("main_window should report has_name=true")
|
|
}
|
|
if match.NameLength == 0 {
|
|
t.Fatalf("main_window should report non-zero name_length")
|
|
}
|
|
}
|
|
|
|
func TestMatchSelectorUnknownSelectorIsStructuredFailure(t *testing.T) {
|
|
root, err := LoadDumpFile("testdata/n12r-2026-07-09-uia-redacted.json")
|
|
if err != nil {
|
|
t.Fatalf("LoadDumpFile: %v", err)
|
|
}
|
|
result := MatchSelector(root, DefaultCatalog(), "missing_selector")
|
|
if result.OK {
|
|
t.Fatalf("OK=true for missing selector: %#v", result)
|
|
}
|
|
if result.Error.Code != "UNKNOWN_SELECTOR" {
|
|
t.Fatalf("error code = %q, want UNKNOWN_SELECTOR", result.Error.Code)
|
|
}
|
|
}
|