github.com/Asutorufa/yuhaiin@v0.3.6-0.20240502055049-7984da7023a0/pkg/net/trie/domain/trie_test.go (about)

     1  package domain
     2  
     3  import (
     4  	"bytes"
     5  	"encoding/gob"
     6  	"testing"
     7  	"unsafe"
     8  
     9  	"github.com/Asutorufa/yuhaiin/pkg/protos/config/bypass"
    10  )
    11  
    12  func TestAl(t *testing.T) {
    13  	z := trie[bypass.Mode]{
    14  		Child: map[string]*trie[bypass.Mode]{
    15  			"a": {},
    16  		},
    17  	}
    18  	t.Log(unsafe.Alignof(z), unsafe.Sizeof(z.Child), unsafe.Sizeof(z.Value), unsafe.Sizeof(z))
    19  	zstr := "telegram"
    20  	zmap := map[string]string{
    21  		"tag": "telegram",
    22  	}
    23  
    24  	t.Log(unsafe.Sizeof(zstr), unsafe.Sizeof(zmap), len(zmap), getRealSizeOf(zstr), getRealSizeOf(zmap))
    25  }
    26  
    27  func getRealSizeOf(v any) int {
    28  	b := new(bytes.Buffer)
    29  	if err := gob.NewEncoder(b).Encode(v); err != nil {
    30  		return 0
    31  	}
    32  	return b.Len()
    33  }
    34  
    35  func TestDelete(t *testing.T) {
    36  	x := &trie[string]{Child: map[string]*trie[string]{}}
    37  	insert(x, newReader("www.baidu.com"), "baidu")
    38  	insert(x, newReader("www.google.com"), "google")
    39  	insert(x, newReader("www.twitter.com"), "twitter")
    40  	insert(x, newReader("www.x.twitter.com"), "twitter.x")
    41  	insert(x, newReader("*.x.com"), "*.x")
    42  	insert(x, newReader("www.xvv.*"), "xvv.*")
    43  
    44  	remove(x, newReader("www.baidu.com"))
    45  
    46  	t.Log(search(x, newReader("www.baidu.com")))
    47  
    48  	remove(x, newReader("www.twitter.com"))
    49  	remove(x, newReader("www.vv.x.com"))
    50  
    51  	t.Log(search(x, newReader("www.twitter.com")))
    52  	t.Log(search(x, newReader("www.x.twitter.com")))
    53  	t.Log(search(x, newReader("www.vv.x.com")))
    54  
    55  	remove(x, newReader("*.x.com"))
    56  	t.Log(search(x, newReader("www.vv.x.com")))
    57  	t.Log(search(x, newReader("www.xvv.com.cn")))
    58  
    59  	remove(x, newReader("www.xvv.*"))
    60  	t.Log(search(x, newReader("www.xvv.com.cn")))
    61  }