github.com/Mrs4s/MiraiGo@v0.0.0-20240226124653-54bdd873e3fe/message/message_test.go (about)

     1  package message
     2  
     3  import (
     4  	"strings"
     5  	"testing"
     6  )
     7  
     8  func Test_mergeContinuousTextMessages(t *testing.T) {
     9  	msg := NewSendingMessage()
    10  	msg.Append(NewText("短片段一"))
    11  	msg.Append(NewText(strings.Repeat("长一", 800))) // 6*800
    12  	msg.Append(NewText("短片段二"))
    13  	msg.Append(NewText(strings.Repeat("长二", 1200))) // 6*1200
    14  	msg.Append(NewText("短片段三"))
    15  
    16  	// 总长度为 12036
    17  	totalSize := EstimateLength(msg.Elements)
    18  	expectedPart := (totalSize + MaxMessageSize - 1) / MaxMessageSize
    19  
    20  	messages := SplitLongMessage(msg)
    21  	// 应分为 3段
    22  	if len(messages) != expectedPart {
    23  		t.Errorf("should split into %v part", expectedPart)
    24  	}
    25  	partsSize := 0
    26  	for idx, message := range messages {
    27  		partSize := EstimateLength(message.Elements)
    28  		if partSize > MaxMessageSize {
    29  			t.Errorf("part %v size=%v is more than %v", idx, partSize, MaxMessageSize)
    30  		}
    31  		partsSize += partSize
    32  	}
    33  	if partsSize != totalSize {
    34  		t.Errorf("parts size sum=%v is not equal to total size=%v", partsSize, totalSize)
    35  	}
    36  }