github.com/Mrs4s/go-cqhttp@v1.2.0/internal/msg/parse_test.go (about) 1 package msg 2 3 import ( 4 "fmt" 5 "strings" 6 "testing" 7 8 "github.com/Mrs4s/MiraiGo/utils" 9 "github.com/stretchr/testify/assert" 10 "github.com/tidwall/gjson" 11 ) 12 13 func TestParseString(_ *testing.T) { 14 // TODO: add more text 15 for _, v := range ParseString(`[CQ:face,id=115,text=111][CQ:face,id=217]] [CQ:text,text=123] [`) { 16 fmt.Println(v) 17 } 18 } 19 20 var ( 21 bench = `asdfqwerqwerqwer[CQ:face,id=115,text=111]asdfasdfasdfasdfasdfasdfasd[CQ:face,id=217]] 123 [` 22 benchArray = gjson.Parse(`[{"type":"text","data":{"text":"asdfqwerqwerqwer"}},{"type":"face","data":{"id":"115","text":"111"}},{"type":"text","data":{"text":"asdfasdfasdfasdfasdfasdfasd"}},{"type":"face","data":{"id":"217"}},{"type":"text","data":{"text":"] "}},{"type":"text","data":{"text":"123"}},{"type":"text","data":{"text":" ["}}]`) 23 ) 24 25 func BenchmarkParseString(b *testing.B) { 26 for i := 0; i < b.N; i++ { 27 ParseString(bench) 28 } 29 b.SetBytes(int64(len(bench))) 30 } 31 32 func BenchmarkParseObject(b *testing.B) { 33 for i := 0; i < b.N; i++ { 34 ParseObject(benchArray) 35 } 36 b.SetBytes(int64(len(benchArray.Raw))) 37 } 38 39 const bText = `123456789[]&987654321[]&987654321[]&987654321[]&987654321[]&987654321[]&` 40 41 func BenchmarkCQCodeEscapeText(b *testing.B) { 42 for i := 0; i < b.N; i++ { 43 ret := bText 44 EscapeText(ret) 45 } 46 } 47 48 func TestCQCodeEscapeText(t *testing.T) { 49 for i := 0; i < 200; i++ { 50 rs := utils.RandomStringRange(3000, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890[]&") 51 ret := rs 52 ret = strings.ReplaceAll(ret, "&", "&") 53 ret = strings.ReplaceAll(ret, "[", "[") 54 ret = strings.ReplaceAll(ret, "]", "]") 55 assert.Equal(t, ret, EscapeText(rs)) 56 } 57 }