package parser import ( "reflect" "sort" "strings" "testing" ) func TestAdBlockParser(t *testing.T) { test := `[Adblock Plus 2.0] ! Title: AdRules DNS List ! Homepage: https://github.com/Cats-Team/AdRules ! Powerd by Cats-Team ! Expires: 1 (update frequency) ! Description: The DNS Filters ! Total count: 145270 ! Update: 2025-10-07 02:05:08(GMT+8) /^.+stat\.kugou\.com/ /^admarvel\./ ||*-ad-sign.byteimg.com^ ||*-ad.a.yximgs.com^ ||*-applog.fqnovel.com^ ||*-datareceiver.aki-game.net^ ||*.exaapi.com^` want := []string{"*-ad-sign.byteimg.com", "*-ad.a.yximgs.com", "*-applog.fqnovel.com", "*-datareceiver.aki-game.net", "*.exaapi.com"} parsed, ignored, err := ParseDomains(strings.NewReader(test)) if err != nil { t.Fatal(err) return } sort.Strings(parsed) if !reflect.DeepEqual(parsed, want) { t.Errorf("expected ParseDomains(domains) to return %v, got %v", want, parsed) } if ignored != 2 { t.Errorf("expected 2 ignored, got %d", ignored) } }