diff --git a/internal/integration/regex_config_test.go b/internal/integration/regex_config_test.go index d15f0a5..1018c9f 100644 --- a/internal/integration/regex_config_test.go +++ b/internal/integration/regex_config_test.go @@ -47,7 +47,7 @@ func TestPrefixPriorityNotRegex(t *testing.T) { t.Fatal(err) } - result := engine.Match("/images/logo.png") + result := engine.Match([]byte("/images/logo.png")) if result == nil { t.Error("^~ should match prefix") } diff --git a/internal/matcher/integration_test.go b/internal/matcher/integration_test.go index c2b72a0..ff729f3 100644 --- a/internal/matcher/integration_test.go +++ b/internal/matcher/integration_test.go @@ -20,13 +20,13 @@ func TestLocationEngine_NginxPriority(t *testing.T) { engine.MarkInitialized() // 测试精确匹配优先 - result := engine.Match("/api") + result := engine.Match([]byte("/api")) if result.LocationType != "exact" { t.Errorf("expected exact, got %s", result.LocationType) } // 测试 ^~ 阻止正则 - result = engine.Match("/api/test.php") + result = engine.Match([]byte("/api/test.php")) if result.LocationType != "prefix_priority" { t.Errorf("^~ should block regex, got %s", result.LocationType) } @@ -42,7 +42,7 @@ func TestLocationEngine_RegexMatch(t *testing.T) { engine.MarkInitialized() // 正则匹配(^~ 不匹配 /index.php) - result := engine.Match("/index.php") + result := engine.Match([]byte("/index.php")) if result.LocationType != "regex" { t.Errorf("expected regex for /index.php, got %s", result.LocationType) } @@ -55,7 +55,7 @@ func TestLocationEngine_PrefixFallback(t *testing.T) { engine.AddPrefix("/", handler, false) engine.MarkInitialized() - result := engine.Match("/any/path") + result := engine.Match([]byte("/any/path")) if result == nil || result.LocationType != "prefix" { t.Errorf("expected prefix match, got %v", result) } @@ -65,7 +65,7 @@ func TestLocationEngine_NoMatch(t *testing.T) { engine := NewLocationEngine() engine.MarkInitialized() - result := engine.Match("/nonexistent") + result := engine.Match([]byte("/nonexistent")) if result != nil { t.Errorf("expected nil for no match, got %+v", result) } @@ -78,7 +78,7 @@ func TestLocationEngine_RegexCaptures(t *testing.T) { engine.AddRegex(`^/user/(?P[0-9]+)$`, handler, false, false) engine.MarkInitialized() - result := engine.Match("/user/42") + result := engine.Match([]byte("/user/42")) if result.LocationType != "regex" { t.Errorf("expected regex, got %s", result.LocationType) } diff --git a/internal/matcher/location_test.go b/internal/matcher/location_test.go index 948ec2b..8512cb6 100644 --- a/internal/matcher/location_test.go +++ b/internal/matcher/location_test.go @@ -37,7 +37,7 @@ func TestLocationEngine_AddExact(t *testing.T) { t.Fatalf("unexpected error: %v", err) } - result := engine.Match("/api") + result := engine.Match([]byte("/api")) if result == nil { t.Fatal("expected match") } @@ -80,7 +80,7 @@ func TestLocationEngine_AddPrefixPriority(t *testing.T) { t.Fatalf("unexpected error: %v", err) } - result := engine.Match("/static/css/style.css") + result := engine.Match([]byte("/static/css/style.css")) if result == nil { t.Fatal("expected match") } @@ -112,7 +112,7 @@ func TestLocationEngine_AddPrefix(t *testing.T) { t.Fatalf("unexpected error: %v", err) } - result := engine.Match("/api/users") + result := engine.Match([]byte("/api/users")) if result == nil { t.Fatal("expected match") } @@ -141,7 +141,7 @@ func TestLocationEngine_AddRegex(t *testing.T) { t.Fatalf("unexpected error: %v", err) } - result := engine.Match("/index.php") + result := engine.Match([]byte("/index.php")) if result == nil { t.Fatal("expected match") } @@ -159,7 +159,7 @@ func TestLocationEngine_AddRegex_CaseInsensitive(t *testing.T) { t.Fatalf("unexpected error: %v", err) } - result := engine.Match("/index.PHP") + result := engine.Match([]byte("/index.PHP")) if result == nil { t.Fatal("expected match for case insensitive") } @@ -187,7 +187,7 @@ func TestLocationEngine_AddRegex_Captures(t *testing.T) { t.Fatalf("unexpected error: %v", err) } - result := engine.Match("/user/123") + result := engine.Match([]byte("/user/123")) if result == nil { t.Fatal("expected match") } @@ -213,7 +213,7 @@ func TestLocationEngine_Match_PriorityOrder(t *testing.T) { engine.AddPrefix("/api/path", hPrefix, false) // Exact should win (priority 1) - result := engine.Match("/api/path") + result := engine.Match([]byte("/api/path")) if result == nil { t.Fatal("expected match") } @@ -232,7 +232,7 @@ func TestLocationEngine_Match_PrefixPriorityBeatsRegex(t *testing.T) { engine.AddRegex(`\.css$`, hRegex, false, false) // ^~ prefix priority should beat regex - result := engine.Match("/static/style.css") + result := engine.Match([]byte("/static/style.css")) if result == nil { t.Fatal("expected match") } @@ -250,7 +250,7 @@ func TestLocationEngine_Match_RegexBeatsPrefix(t *testing.T) { engine.AddPrefix("/", hPrefix, false) // Regex should win over plain prefix - result := engine.Match("/index.php") + result := engine.Match([]byte("/index.php")) if result == nil { t.Fatal("expected match") } @@ -265,7 +265,7 @@ func TestLocationEngine_Match_FallbackToPrefix(t *testing.T) { engine.AddPrefix("/api", hPrefix, false) - result := engine.Match("/api/users") + result := engine.Match([]byte("/api/users")) if result == nil { t.Fatal("expected prefix match") } @@ -280,7 +280,7 @@ func TestLocationEngine_Match_NoMatch(t *testing.T) { engine.AddPrefix("/api", hPrefix, false) - result := engine.Match("/other") + result := engine.Match([]byte("/other")) if result != nil { t.Errorf("expected no match, got %+v", result) } @@ -292,7 +292,7 @@ func TestLocationEngine_Match_EmptyString(t *testing.T) { engine.AddPrefix("/api", hPrefix, false) - result := engine.Match("") + result := engine.Match([]byte("")) if result != nil { t.Errorf("expected no match for empty string, got %+v", result) } @@ -304,7 +304,7 @@ func TestLocationEngine_Match_UnicodePath(t *testing.T) { engine.AddPrefixPriority("/文档", handler, false) - result := engine.Match("/文档/报告") + result := engine.Match([]byte("/文档/报告")) if result == nil { t.Fatal("expected unicode prefix match") } diff --git a/internal/matcher/radix_bench_test.go b/internal/matcher/radix_bench_test.go index 7e608c5..c3772dd 100644 --- a/internal/matcher/radix_bench_test.go +++ b/internal/matcher/radix_bench_test.go @@ -18,7 +18,7 @@ func BenchmarkRadixTreeFindLongestPrefix(b *testing.B) { b.ResetTimer() b.ReportAllocs() for b.Loop() { - result := tree.FindLongestPrefix("/api/v1/users") + result := tree.FindLongestPrefix([]byte("/api/v1/users")) ReleaseMatchResult(result) } } @@ -36,7 +36,7 @@ func BenchmarkRadixTreeFindLongestPrefixParallel(b *testing.B) { b.ReportAllocs() b.RunParallel(func(pb *testing.PB) { for pb.Next() { - result := tree.FindLongestPrefix("/api/v1/users") + result := tree.FindLongestPrefix([]byte("/api/v1/users")) ReleaseMatchResult(result) } }) diff --git a/internal/matcher/radix_test.go b/internal/matcher/radix_test.go index 5d14db8..88ed1ec 100644 --- a/internal/matcher/radix_test.go +++ b/internal/matcher/radix_test.go @@ -16,7 +16,7 @@ func TestRadixTree_Insert_EmptyNode(t *testing.T) { t.Fatalf("insert failed: %v", err) } - result := tree.FindLongestPrefix("/api") + result := tree.FindLongestPrefix([]byte("/api")) if result == nil { t.Error("should find inserted path") } @@ -34,7 +34,7 @@ func TestRadixTree_Insert_CommonPrefix(t *testing.T) { tree.Insert("/api", handler1, 1, "prefix", false) tree.Insert("/api/users", handler2, 2, "prefix", false) - result := tree.FindLongestPrefix("/api/users") + result := tree.FindLongestPrefix([]byte("/api/users")) if result == nil { t.Fatal("expected match") } @@ -57,7 +57,7 @@ func TestRadixTree_Insert_NodeSplit(t *testing.T) { tree.Insert("/abx", handler2, 2, "prefix", false) // 应该正确分割 /ab 公共前缀 - result := tree.FindLongestPrefix("/abc") + result := tree.FindLongestPrefix([]byte("/abc")) if result == nil { t.Error("should find /abc after split") } @@ -73,7 +73,7 @@ func TestRadixTree_FindLongestPrefix(t *testing.T) { // "/" has priority 1 (wins), "/api" has 2, "/api/v1" has 3 // Lower number = higher priority - result := tree.FindLongestPrefix("/api/v1/users") + result := tree.FindLongestPrefix([]byte("/api/v1/users")) if result == nil { t.Fatal("expected match") } @@ -112,7 +112,7 @@ func TestRadixTree_FindLongestPrefix_NoMatch(t *testing.T) { tree.Insert("/api", handler, 1, "prefix", false) - result := tree.FindLongestPrefix("/other") + result := tree.FindLongestPrefix([]byte("/other")) if result != nil { t.Errorf("expected nil for no match, got %+v", result) } @@ -127,7 +127,7 @@ func TestRadixTree_PriorityComparison(t *testing.T) { tree.Insert("/api/users", h2, 2, "prefix", false) // Lower priority number wins - result := tree.FindLongestPrefix("/api/users") + result := tree.FindLongestPrefix([]byte("/api/users")) if result == nil { t.Fatal("expected match") } @@ -151,7 +151,7 @@ func TestRadixTree_Insert_ExactMatch(t *testing.T) { } // 验证原 handler 未被覆盖 - result := tree.FindLongestPrefix("/api") + result := tree.FindLongestPrefix([]byte("/api")) if result == nil || result.Priority != 1 { t.Errorf("original handler should not be overwritten, got priority %d", result.Priority) }