move gotd fork into repo. (#111)

- update to latest telegram layer
- remove some references to fields in tg.Entities that don't exist in
the schema
- originally added here:
https://github.com/beeper/td/commit/820929062a2ba0104397bc01235ab58a9cff780e
  - referenced here
-
https://github.com/mautrix/telegramgo/commit/124f0967ed195b5a380c9bd02e170ada9710dde3
-
https://github.com/mautrix/telegramgo/commit/4205047aab2e0639217148b5d125bfaab668bd8e
This commit is contained in:
Adam Van Ymeren
2025-06-27 20:03:37 -07:00
committed by GitHub
parent 0952df0244
commit 7a04f298d2
19264 changed files with 1539697 additions and 84 deletions
@@ -0,0 +1,98 @@
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)
})
}
}