package network import ( "bytes" "encoding/binary" "testing" ) const ( byteValue byte = 1 uint8Value uint8 = 5 uint16Value uint16 = 6 uint32Value uint32 = 7 uint64Value uint64 = 8 strValue = "91011" ) var ( bytesValue = []byte{2, 3, 4} ) func TestDataReader(t *testing.T) { buffer := &bytes.Buffer{} err := binary.Write(buffer, binary.BigEndian, byteValue) if err != nil { t.Fatal(err) } err = binary.Write(buffer, binary.BigEndian, bytesValue) if err != nil { t.Fatal(err) } err = binary.Write(buffer, binary.BigEndian, uint8Value) if err != nil { t.Fatal(err) } err = binary.Write(buffer, binary.BigEndian, uint16Value) if err != nil { t.Fatal(err) } err = binary.Write(buffer, binary.BigEndian, uint32Value) if err != nil { t.Fatal(err) } err = binary.Write(buffer, binary.BigEndian, uint64Value) if err != nil { t.Fatal(err) } err = binary.Write(buffer, binary.BigEndian, []byte(strValue)) if err != nil { t.Fatal(err) } reader := NewDataReader(buffer) retByteValue, err := reader.Byte() if err != nil { t.Fatal(err) } if retByteValue != byteValue { t.Fatal("byte不正确", err.Error()) } retBytesValue, err := reader.Bytes(len(bytesValue)) if err != nil { t.Fatal(err) } if len(retBytesValue) != len(bytesValue) { t.Fatal("bytes长度不正确") } for i := 0; i < len(retBytesValue); i++ { if retBytesValue[i] != bytesValue[i] { t.Fatal("bytes不正确") } } retUint8Value, err := reader.Uint8() if err != nil { t.Fatal(err) } if retUint8Value != uint8Value { t.Fatal("uint8不正确", err.Error()) } retUint16Value, err := reader.Uint16() if err != nil { t.Fatal(err) } if retUint16Value != uint16Value { t.Fatal("uint16不正确", err.Error()) } retUint32Value, err := reader.Uint32() if err != nil { t.Fatal(err) } if retUint32Value != uint32Value { t.Fatal("uint32不正确", err.Error()) } retUint64Value, err := reader.Uint64() if err != nil { t.Fatal(err) } if retUint64Value != uint64Value { t.Fatal("uint64不正确", err.Error()) } retStringValue, err := reader.String(len(strValue)) if err != nil { t.Fatal(err) } if retStringValue != strValue { t.Fatal("uint64不正确", err.Error()) } }