mirror of
https://gitclone.com/github.com/MetaCubeX/Clash.Meta
synced 2025-02-23 11:43:20 +08:00
fix: normal rule not working in fake-ip-filter
This commit is contained in:
parent
7fd0467aef
commit
4c10d42fbf
@ -152,7 +152,8 @@ func TestPool_CycleUsed(t *testing.T) {
|
|||||||
func TestPool_Skip(t *testing.T) {
|
func TestPool_Skip(t *testing.T) {
|
||||||
ipnet := netip.MustParsePrefix("192.168.0.1/29")
|
ipnet := netip.MustParsePrefix("192.168.0.1/29")
|
||||||
tree := trie.New[struct{}]()
|
tree := trie.New[struct{}]()
|
||||||
tree.Insert("example.com", struct{}{})
|
assert.NoError(t, tree.Insert("example.com", struct{}{}))
|
||||||
|
assert.False(t, tree.IsEmpty())
|
||||||
pools, tempfile, err := createPools(Options{
|
pools, tempfile, err := createPools(Options{
|
||||||
IPNet: ipnet,
|
IPNet: ipnet,
|
||||||
Size: 10,
|
Size: 10,
|
||||||
|
@ -126,7 +126,7 @@ func (t *DomainTrie[T]) Optimize() {
|
|||||||
func (t *DomainTrie[T]) Foreach(fn func(domain string, data T) bool) {
|
func (t *DomainTrie[T]) Foreach(fn func(domain string, data T) bool) {
|
||||||
for key, data := range t.root.getChildren() {
|
for key, data := range t.root.getChildren() {
|
||||||
recursion([]string{key}, data, fn)
|
recursion([]string{key}, data, fn)
|
||||||
if data != nil && data.inited {
|
if !data.isEmpty() {
|
||||||
if !fn(joinDomain([]string{key}), data.data) {
|
if !fn(joinDomain([]string{key}), data.data) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -135,16 +135,16 @@ func (t *DomainTrie[T]) Foreach(fn func(domain string, data T) bool) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (t *DomainTrie[T]) IsEmpty() bool {
|
func (t *DomainTrie[T]) IsEmpty() bool {
|
||||||
if t == nil {
|
if t == nil || t.root == nil {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
return t.root.isEmpty()
|
return len(t.root.getChildren()) == 0
|
||||||
}
|
}
|
||||||
|
|
||||||
func recursion[T any](items []string, node *Node[T], fn func(domain string, data T) bool) bool {
|
func recursion[T any](items []string, node *Node[T], fn func(domain string, data T) bool) bool {
|
||||||
for key, data := range node.getChildren() {
|
for key, data := range node.getChildren() {
|
||||||
newItems := append([]string{key}, items...)
|
newItems := append([]string{key}, items...)
|
||||||
if data != nil && data.inited {
|
if !data.isEmpty() {
|
||||||
domain := joinDomain(newItems)
|
domain := joinDomain(newItems)
|
||||||
if domain[0] == domainStepByte {
|
if domain[0] == domainStepByte {
|
||||||
domain = complexWildcard + domain
|
domain = complexWildcard + domain
|
||||||
|
@ -40,6 +40,7 @@ func TestDomainSet(t *testing.T) {
|
|||||||
for _, domain := range domainSet {
|
for _, domain := range domainSet {
|
||||||
assert.NoError(t, tree.Insert(domain, struct{}{}))
|
assert.NoError(t, tree.Insert(domain, struct{}{}))
|
||||||
}
|
}
|
||||||
|
assert.False(t, tree.IsEmpty())
|
||||||
set := tree.NewDomainSet()
|
set := tree.NewDomainSet()
|
||||||
assert.NotNil(t, set)
|
assert.NotNil(t, set)
|
||||||
assert.True(t, set.Has("test.cn"))
|
assert.True(t, set.Has("test.cn"))
|
||||||
@ -68,6 +69,7 @@ func TestDomainSetComplexWildcard(t *testing.T) {
|
|||||||
for _, domain := range domainSet {
|
for _, domain := range domainSet {
|
||||||
assert.NoError(t, tree.Insert(domain, struct{}{}))
|
assert.NoError(t, tree.Insert(domain, struct{}{}))
|
||||||
}
|
}
|
||||||
|
assert.False(t, tree.IsEmpty())
|
||||||
set := tree.NewDomainSet()
|
set := tree.NewDomainSet()
|
||||||
assert.NotNil(t, set)
|
assert.NotNil(t, set)
|
||||||
assert.False(t, set.Has("google.com"))
|
assert.False(t, set.Has("google.com"))
|
||||||
@ -90,6 +92,7 @@ func TestDomainSetWildcard(t *testing.T) {
|
|||||||
for _, domain := range domainSet {
|
for _, domain := range domainSet {
|
||||||
assert.NoError(t, tree.Insert(domain, struct{}{}))
|
assert.NoError(t, tree.Insert(domain, struct{}{}))
|
||||||
}
|
}
|
||||||
|
assert.False(t, tree.IsEmpty())
|
||||||
set := tree.NewDomainSet()
|
set := tree.NewDomainSet()
|
||||||
assert.NotNil(t, set)
|
assert.NotNil(t, set)
|
||||||
assert.True(t, set.Has("www.baidu.com"))
|
assert.True(t, set.Has("www.baidu.com"))
|
||||||
|
Loading…
Reference in New Issue
Block a user