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 }