Files
mautrix-telegram/pkg/gotd/telegram/message/entity/fix_test.go
T
2025-06-27 20:03:37 -07:00

99 lines
2.2 KiB
Go

package entity
import (
"testing"
"github.com/stretchr/testify/require"
"go.mau.fi/mautrix-telegram/pkg/gotd/tg"
)
func TestEnsureTrim(t *testing.T) {
a := require.New(t)
prefix := "pre"
expected := "abc\nabc"
b := Builder{}
b.Plain(prefix)
b.Format(expected+"\n\n\n", Bold(), Italic())
msg, ent := b.Complete()
a.Equal(prefix+expected, msg)
a.Equal([]tg.MessageEntityClass{
&tg.MessageEntityBold{
Offset: len(prefix),
Length: ComputeLength(expected),
},
&tg.MessageEntityItalic{
Offset: len(prefix),
Length: ComputeLength(expected),
},
}, ent)
}
func TestComplete(t *testing.T) {
tests := []struct {
name string
format func(e *Builder)
msg string
entities []tg.MessageEntityClass
}{
{"PlainBold", func(e *Builder) {
e.Plain("plain").Bold("bold")
}, "plainbold", []tg.MessageEntityClass{
&tg.MessageEntityBold{
Offset: ComputeLength("plain"),
Length: ComputeLength("bold"),
},
}},
{"PlainBoldAndStrike", func(e *Builder) {
e.Plain("plain").Format("10\n\n\n\n", Bold(), Strike())
}, "plain10", []tg.MessageEntityClass{
&tg.MessageEntityBold{
Offset: ComputeLength("plain"),
Length: ComputeLength("10"),
},
&tg.MessageEntityStrike{
Offset: ComputeLength("plain"),
Length: ComputeLength("10"),
},
}},
{"BoldPlainBold", func(e *Builder) {
e.Bold("bold").Plain("plain").Bold("bold2\n\n\n\n")
}, "boldplainbold2", []tg.MessageEntityClass{
&tg.MessageEntityBold{
Offset: ComputeLength("boldplain"),
Length: ComputeLength("bold2"),
},
&tg.MessageEntityBold{
Offset: 0,
Length: ComputeLength("bold"),
},
}},
{"BoldBold", func(e *Builder) {
e.Bold("bold\n\n\n\n").Bold("bold2\n\n\n\n")
}, "bold\n\n\n\nbold2", []tg.MessageEntityClass{
&tg.MessageEntityBold{
Offset: 0,
Length: ComputeLength("bold\n\n\n\n"),
},
&tg.MessageEntityBold{
Offset: ComputeLength("bold\n\n\n\n"),
Length: ComputeLength("bold2"),
},
}},
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
a := require.New(t)
b := Builder{}
test.format(&b)
msg, entities := b.Complete()
a.Equal(test.msg, msg)
a.Equal(test.entities, entities)
})
}
}