69 lines
2.3 KiB
Go
69 lines
2.3 KiB
Go
package proto_test
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
|
|
"github.com/admin-else/strom/proto"
|
|
"github.com/admin-else/strom/proto_generated/v1_21_11"
|
|
"github.com/admin-else/strom/proto_generated/v1_21_8"
|
|
"github.com/admin-else/strom/proto_generated/v1_21_9"
|
|
)
|
|
|
|
func TestCanSmartConvert(t *testing.T) {
|
|
packet := &v1_21_9.PlayToClientPacketPosition{Flags: v1_21_9.PlayToClientPositionUpdateRelatives{Val: 2}, X: 5}
|
|
can := proto.SmartConvertibleTo(reflect.TypeOf(packet), reflect.TypeFor[*v1_21_8.PlayToClientPacketPosition]())
|
|
if !can {
|
|
t.Fatal("can't smart convert")
|
|
}
|
|
ret := proto.SmartConvert(reflect.ValueOf(packet), reflect.TypeFor[*v1_21_8.PlayToClientPacketPosition]())
|
|
t.Logf("%#v", ret)
|
|
}
|
|
|
|
func TestCanSmartConvertTags(t *testing.T) {
|
|
packet := &v1_21_9.ConfigurationToClientPacketTags{}
|
|
targetType := reflect.TypeFor[*v1_21_8.ConfigurationToClientPacketTags]()
|
|
can := proto.SmartConvertibleTo(reflect.TypeOf(packet), targetType)
|
|
if !can {
|
|
t.Fatal("can't smart convert")
|
|
}
|
|
ret := proto.SmartConvert(reflect.ValueOf(packet), targetType)
|
|
t.Logf("%#v", ret)
|
|
}
|
|
|
|
func TestRegisterUntilLatest(t *testing.T) {
|
|
conn := proto.NewConn()
|
|
ok := false
|
|
conn.RegisterCriticalUntilLatest(func(p *v1_21_8.ConfigurationToServerPacketFinishConfiguration) error {
|
|
ok = true
|
|
return nil
|
|
})
|
|
err := conn.Fire(&v1_21_11.ConfigurationToServerPacketFinishConfiguration{})
|
|
if err != nil {
|
|
t.Errorf("fire failed err: %v", err)
|
|
}
|
|
if !ok {
|
|
t.Errorf("handler not called")
|
|
}
|
|
}
|
|
|
|
var TestData = []struct{ V, T, E any }{
|
|
{V: &v1_21_9.PlayToClientPacketPosition{Flags: v1_21_9.PlayToClientPositionUpdateRelatives{Val: 2}, X: 5}, T: &v1_21_8.PlayToClientPacketPosition{}},
|
|
{V: &v1_21_9.ConfigurationToClientPacketTags{}, T: &v1_21_8.ConfigurationToClientPacketTags{}},
|
|
{V: &v1_21_11.PlayToServerPacketChatMessage{Signature: &[256]byte{}}, T: &v1_21_8.PlayToServerPacketChatMessage{}},
|
|
}
|
|
|
|
func TestSmartConvert(t *testing.T) {
|
|
for _, d := range TestData {
|
|
can := proto.SmartConvertibleTo(reflect.TypeOf(d.V), reflect.TypeOf(d.T))
|
|
if !can {
|
|
t.Errorf("can't smart convert %#v to %#v", d.V, d.T)
|
|
continue
|
|
}
|
|
got := proto.SmartConvert(reflect.ValueOf(d.V), reflect.TypeOf(d.T))
|
|
if d.E != nil && !reflect.DeepEqual(got.Interface(), d.E) {
|
|
t.Errorf("got %#v, want %#v", got.Interface(), d.E)
|
|
}
|
|
}
|
|
}
|