mirror of
https://github.com/CPunch/gopenfusion.git
synced 2024-11-21 15:00:07 +00:00
start packet_test.go; minor packet.go refactoring
This commit is contained in:
parent
7d83732e44
commit
9df5a3d0d5
@ -61,12 +61,11 @@ func (pkt Packet) encodeStructField(field reflect.StructField, value reflect.Val
|
||||
// write padding bytes
|
||||
pad, err := strconv.Atoi(field.Tag.Get("pad"))
|
||||
if err == nil {
|
||||
for i := 0; i < pad; i++ {
|
||||
if _, err := pkt.readWriter.Write([]byte{0}); err != nil {
|
||||
dummy := make([]byte, pad)
|
||||
if _, err := pkt.readWriter.Write(dummy); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
@ -126,12 +125,11 @@ func (pkt Packet) decodeStructField(field reflect.StructField, value reflect.Val
|
||||
// consume padding bytes
|
||||
pad, err := strconv.Atoi(field.Tag.Get("pad"))
|
||||
if err == nil {
|
||||
for i := 0; i < pad; i++ {
|
||||
if _, err := pkt.readWriter.Read([]byte{0}); err != nil {
|
||||
dummy := make([]byte, pad)
|
||||
if _, err := pkt.readWriter.Read(dummy); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
35
internal/protocol/packet_test.go
Normal file
35
internal/protocol/packet_test.go
Normal file
@ -0,0 +1,35 @@
|
||||
package protocol
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
)
|
||||
|
||||
type TestPacketData struct {
|
||||
A int32
|
||||
B int32
|
||||
UTF16Str string `size:"32"`
|
||||
Pad int16 `pad:"2"`
|
||||
C int32
|
||||
}
|
||||
|
||||
func TestPacket(t *testing.T) {
|
||||
pkt := NewPacket(&bytes.Buffer{})
|
||||
if err := pkt.Encode(TestPacketData{
|
||||
A: 1,
|
||||
B: 2,
|
||||
UTF16Str: "hello world",
|
||||
C: 3,
|
||||
}); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
var test TestPacketData
|
||||
if err := pkt.Decode(&test); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
if test.A != 1 || test.B != 2 || test.C != 3 || test.UTF16Str != "hello world" {
|
||||
t.Error("packet data does not match!")
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user