go-teeworlds-protocol/messages7/sv_emoticon_test.go

89 lines
1.8 KiB
Go

package messages7_test
import (
"testing"
"github.com/teeworlds-go/go-teeworlds-protocol/internal/testutils/require"
"github.com/teeworlds-go/go-teeworlds-protocol/messages7"
"github.com/teeworlds-go/go-teeworlds-protocol/network7"
"github.com/teeworlds-go/go-teeworlds-protocol/packer"
"github.com/teeworlds-go/go-teeworlds-protocol/protocol7"
)
func TestFullPacket(t *testing.T) {
packet := protocol7.Packet{}
packet.Messages = append(
packet.Messages,
&messages7.SvEmoticon{
ClientId: 0,
Emoticon: network7.EmoteGhost,
},
)
{
// if this test breaks because the session tokens are actually used
// this is not necessarily a bad thing
session := &protocol7.Session{
ServerToken: [4]byte{0x55, 0x55, 0x55, 0x55},
ClientToken: [4]byte{0xfa, 0xfa, 0xfa, 0xfa},
}
want := []byte{0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x03, 0x01, 0x14, 0x00, 0x07}
got := packet.Pack(session)
require.Equal(t, want, got)
}
}
func TestSvEmoticonStandalone(t *testing.T) {
// simple pack
emoticon := &messages7.SvEmoticon{
ClientId: 0,
Emoticon: network7.EmoteExclamation,
}
{
want := []byte{0x00, 0x01}
got := emoticon.Pack()
require.Equal(t, want, got)
}
// repack
u := &packer.Unpacker{}
u.Reset(emoticon.Pack())
emoticon.Unpack(u)
{
want := network7.EmoteExclamation
got := emoticon.Emoticon
require.Equal(t, want, got)
}
}
func TestSvEmoticonStandaloneCrazyGirlEdition(t *testing.T) {
// simple pack
emoticon := &messages7.SvEmoticon{
ClientId: -99999,
Emoticon: 999,
}
{
want := []byte{222, 154, 12, 167, 15}
got := emoticon.Pack()
require.Equal(t, want, got)
}
// repack
u := &packer.Unpacker{}
u.Reset(emoticon.Pack())
emoticon.Unpack(u)
{
want := network7.Emote(999)
got := emoticon.Emoticon
require.Equal(t, want, got)
}
}