package entity

import (
	"testing"

	"github.com/stretchr/testify/require"

	"go.mau.fi/mautrix-telegram/pkg/gotd/tg"
)

func TestToken_Apply(t *testing.T) {
	var (
		a = require.New(t)
		b = &Builder{}
	)
	_ = b.WriteByte('a')
	tok := b.Token()
	a.Equal(1, tok.UTF8Offset())
	a.Equal(1, tok.UTF16Offset())

	a.Zero(tok.UTF8Length(b))
	a.Zero(tok.UTF16Length(b))
	a.Empty(tok.Text(b))

	text := "abc🏳"
	_, _ = b.WriteString(text)
	a.Equal(text, tok.Text(b))
	utf16Len := ComputeLength(tok.Text(b))

	a.Equal(b.message.Len()-tok.UTF8Offset(), tok.UTF8Length(b))
	a.Equal(utf16Len, tok.UTF16Length(b))

	tok.Apply(b, Bold())
	a.Equal(1, b.EntitiesLen())
	e, ok := b.LastEntity()
	a.True(ok)
	a.Equal(&tg.MessageEntityBold{Offset: 1, Length: utf16Len}, e)
}
