func encode_pos(wr *stream.Stream, pos *pbPos) { wr.SetSize(0) wr.Seek(0, 0) e := binutil.NewProtobufEncoder(wr) e.PutInt32(1, pos.X) e.PutInt32(2, pos.Y) }
func encode_door(t *testing.T, wr *stream.Stream) { wr.SetSize(0) wr.Seek(0, 0) e := binutil.NewProtobufEncoder(wr) door := comp e.PutInt32(1, door.I32) e.PutInt64(2, door.I64) e.PutSint32(3, door.S32) e.PutSint64(4, door.S64) e.PutSfixed32(5, door.D32) e.PutSfixed64(6, door.D64) e.PutUint32(10, door.U32) e.PutUint64(11, door.U64) e.PutFixed32(12, door.X32) e.PutFixed64(13, door.X64) e.PutFloat32(20, door.F32) e.PutFloat64(21, door.F64) e.PutBool(30, door.B) e.PutString(31, door.S) e.PutEnum(32, door.E) encode_pos(dm, &door.Poslist[0]) e.PutBytes(40, dm.Buf()[:dm.Position()]) encode_pos(dm, &door.Poslist[1]) e.PutBytes(40, dm.Buf()[:dm.Position()]) }
func testByteOrder(t *testing.T, s *stream.Stream, in *byteorderSample) { s.SetSize(256) s.Seek(0, 0) data := s.Buf() whint := in.order.String() var m, n int m = in.order.PutUint8(data, byte(0x09)) n = in.order.PutUint32(data[m:], uint32(0x1310)) n += m L := len(in.output) if n != L { t.Fatalf("%s: outsize must %v, but got %v\n", whint, L, n) } for i, b := range in.output { if b != data[i] { t.Fatalf("%s: output[%d] must %2X, but got %2X\n", whint, i, b, data[i]) } } for _, read := range in.reads { s.Seek(0, 0) rhint := read.order.String() var b byte var i uint32 b, m = read.order.Uint8(data) i, n = read.order.Uint32(data[m:]) n += m if n != L { t.Errorf("%s: read by %s: final position must be %v, but got %v\n", whint, rhint, L, n) } else if b != read.b { t.Errorf("%s: read by %s: expect %.2X, but got %.2X\n", whint, rhint, read.b, b) } else if i != read.i { t.Errorf("%s: read by %s: expect %.8X, but got %.8X\n", whint, rhint, read.i, i) } } }
func testMarshal(t *testing.T, s *stream.Stream, in *marshalTestData) { var dummy = &datatype{} var n int var err error // println("*** encoding ***") s.SetSize(0) w := binutil.NewEncoder2(s, in.order, in.intNs) hint := w.String() n, err = w.Write(in.data) if err != nil { t.Errorf("encode(%s) error: %v\n", hint, err) } if n != in.outsize { t.Errorf("encode(%s) size must %v, but got %v\n", hint, in.outsize, n) } n = len(in.out) if n != in.outsize { t.Errorf("encode(%s) len(test) must %v, but got %v\n", hint, in.outsize, n) } b := s.Buf() n = len(b) if n != in.outsize { t.Errorf("encode(%s) len(dump) must %v, but got %v\n", hint, in.outsize, n) } for i, v := range in.out { if v != b[i] { t.Fatalf("marshal(%s) out[%v] must %2X, but got %2X\n", hint, i, v, b[i]) } } //* // println("*** decoding ***") s.Seek(0, 0) r := binutil.NewDecoder2(s, in.order, in.intNs) n, err = r.Read(dummy) if err != nil { t.Errorf("decode(%s) error: %v\n", hint, err) } if n != in.outsize { t.Errorf("decode(%s) size must %v, but got %v\n", hint, in.outsize, n) } if !DeepEqual(in.data, dummy) { t.Fatalf("decode(%s) DeepEqual false\n", hint) } //*/ }
func testSetSize(t *testing.T, s *stream.Stream, size int64, want_err error) { err := s.SetSize(size) if err != want_err { t.Errorf("SetSize(%v) want error `%v`, got `%v`\n", size, want_err, err) } }