fix: sync latest Android and langpack updates
This commit is contained in:
parent
20b388eeaa
commit
4570df5939
20 changed files with 12384 additions and 27 deletions
60
internal/app/bots/service_bot_entities_test.go
Normal file
60
internal/app/bots/service_bot_entities_test.go
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
package bots
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"telesrv/internal/domain"
|
||||
)
|
||||
|
||||
func TestServiceBotReplyEntitiesCommandsAndURLsUseUTF16Offsets(t *testing.T) {
|
||||
text := "🙂 Send /cancel or https://telesrv.net/addstickers/fun_pack."
|
||||
entities := serviceBotReplyEntities(text, nil)
|
||||
|
||||
assertEntity := func(typ domain.MessageEntityType, offset, length int) {
|
||||
t.Helper()
|
||||
for _, entity := range entities {
|
||||
if entity.Type == typ && entity.Offset == offset && entity.Length == length {
|
||||
return
|
||||
}
|
||||
}
|
||||
t.Fatalf("entities %+v missing %s at offset=%d length=%d", entities, typ, offset, length)
|
||||
}
|
||||
|
||||
assertEntity(domain.MessageEntityBotCommand, 8, len("/cancel"))
|
||||
assertEntity(domain.MessageEntityURL, 19, len("https://telesrv.net/addstickers/fun_pack"))
|
||||
}
|
||||
|
||||
func TestServiceBotReplyEntitiesSkipCommandsInsideURLsAndExplicitEntities(t *testing.T) {
|
||||
text := "Token: abc/def\nhttps://telesrv.net/addstickers/fun_pack\nUse /help"
|
||||
entities := serviceBotReplyEntities(text, []domain.MessageEntity{{
|
||||
Type: domain.MessageEntityCode,
|
||||
Offset: len("Token: "),
|
||||
Length: len("abc/def"),
|
||||
}})
|
||||
|
||||
commandCount := 0
|
||||
for _, entity := range entities {
|
||||
if entity.Type == domain.MessageEntityBotCommand {
|
||||
commandCount++
|
||||
}
|
||||
if entity.Type == domain.MessageEntityBotCommand && entity.Offset < len("Token: abc/def\nhttps://telesrv.net/") {
|
||||
t.Fatalf("unexpected command entity inside code/url: %+v in %+v", entity, entities)
|
||||
}
|
||||
}
|
||||
if commandCount != 1 {
|
||||
t.Fatalf("bot command entities = %d in %+v, want only /help", commandCount, entities)
|
||||
}
|
||||
}
|
||||
|
||||
func TestServiceBotReplyEntitiesIgnoreBareSlashBeforeEmoji(t *testing.T) {
|
||||
entities := serviceBotReplyEntities("not a command /🙂 but /help is", nil)
|
||||
commandCount := 0
|
||||
for _, entity := range entities {
|
||||
if entity.Type == domain.MessageEntityBotCommand {
|
||||
commandCount++
|
||||
}
|
||||
}
|
||||
if commandCount != 1 {
|
||||
t.Fatalf("bot command entities = %d in %+v, want only /help", commandCount, entities)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue