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, "&", "&amp;")
    53  		ret = strings.ReplaceAll(ret, "[", "&#91;")
    54  		ret = strings.ReplaceAll(ret, "]", "&#93;")
    55  		assert.Equal(t, ret, EscapeText(rs))
    56  	}
    57  }