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 }