feat: create standalone native fnOS repository
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
package proxy
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestNormalizeExitsDefaultsToLocal(t *testing.T) {
|
||||
exits, tunnelID, err := normalizeExits(nil, 0)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if tunnelID != 0 || len(exits) != 1 || exits[0] != ExitLocal {
|
||||
t.Fatalf("默认出口应为 local:%#v tunnel=%d", exits, tunnelID)
|
||||
}
|
||||
}
|
||||
|
||||
func TestNormalizeExitsRequiresTunnelForCloudflare(t *testing.T) {
|
||||
if _, _, err := normalizeExits([]string{ExitCloudflare}, 0); err == nil {
|
||||
t.Fatal("Cloudflare 出口缺少隧道时应报错")
|
||||
}
|
||||
}
|
||||
|
||||
func TestNormalizeExitsDeduplicatesAndSorts(t *testing.T) {
|
||||
exits, tunnelID, err := normalizeExits([]string{ExitCloudflare, ExitLocal, ExitCloudflare}, 12)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if tunnelID != 12 || len(exits) != 2 || exits[0] != ExitCloudflare || exits[1] != ExitLocal {
|
||||
t.Fatalf("出口去重排序不符:%#v tunnel=%d", exits, tunnelID)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRuleUsesExitTreatsEmptyAsLocal(t *testing.T) {
|
||||
rule := Rule{}
|
||||
if !rule.UsesExit(ExitLocal) {
|
||||
t.Fatal("空出口应兼容为本机出口")
|
||||
}
|
||||
if rule.UsesExit(ExitCloudflare) {
|
||||
t.Fatal("空出口不应被视为 Cloudflare")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user