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
+122
View File
@@ -0,0 +1,122 @@
package tdjson_test
import (
"encoding/json"
"math"
"strconv"
"testing"
"github.com/go-faster/jx"
"github.com/stretchr/testify/require"
"go.mau.fi/mautrix-telegram/pkg/gotd/tdapi"
"go.mau.fi/mautrix-telegram/pkg/gotd/tdjson"
"go.mau.fi/mautrix-telegram/pkg/gotd/tdp"
)
func TestEncodeDecode(t *testing.T) {
type obj interface {
tdjson.TDLibDecoder
tdjson.TDLibEncoder
TypeInfo() tdp.Type
}
test := func(create func() obj) func(t *testing.T) {
return func(t *testing.T) {
a := require.New(t)
req := create()
enc := tdjson.Encoder{
Writer: &jx.Writer{},
}
a.NoError(req.EncodeTDLibJSON(enc))
a.True(json.Valid(enc.Buf))
dec := tdjson.Decoder{
Decoder: jx.DecodeBytes(enc.Buf),
}
a.NoError(req.DecodeTDLibJSON(dec))
}
}
types := []obj{
&tdapi.SetTdlibParametersRequest{
UseTestDC: true,
DatabaseDirectory: "database",
FilesDirectory: "files",
UseFileDatabase: true,
UseChatInfoDatabase: true,
UseMessageDatabase: true,
UseSecretChats: true,
APIID: 10,
APIHash: "russcox",
SystemLanguageCode: "ru",
DeviceModel: "gotd",
SystemVersion: "10",
ApplicationVersion: "10",
},
&tdapi.ProfilePhoto{
ID: 1,
},
&tdapi.ReplyMarkupInlineKeyboard{
Rows: [][]tdapi.InlineKeyboardButton{
{
{
Text: "text",
Type: &tdapi.InlineKeyboardButtonTypeCallback{
Data: []byte("a"),
},
},
{
Text: "text2",
Type: &tdapi.InlineKeyboardButtonTypeCallback{
Data: []byte("b"),
},
},
},
{
{
Text: "text3",
Type: &tdapi.InlineKeyboardButtonTypeCallback{
Data: []byte("c"),
},
},
},
},
},
// Test empty array.
&tdapi.ReplyMarkupInlineKeyboard{
Rows: [][]tdapi.InlineKeyboardButton{},
},
}
for _, typ := range types {
t.Run(typ.TypeInfo().Name, test(func() obj {
return typ
}))
}
}
func TestEncoder_PutLong(t *testing.T) {
for _, tt := range []int64{
-1,
0,
1,
10,
math.MaxInt64,
math.MinInt64,
} {
t.Run(strconv.FormatInt(tt, 10), func(t *testing.T) {
a := require.New(t)
e := tdjson.Encoder{Writer: &jx.Writer{}}
e.PutLong(tt)
data := e.Buf
a.Equal(strconv.Quote(strconv.FormatInt(tt, 10)), string(data))
d := tdjson.Decoder{Decoder: jx.DecodeBytes(data)}
v, err := d.Long()
a.NoError(err)
a.Equal(tt, v)
})
}
}