func TestStreamFrom(t *testing.T) { // test reader s := stream.NewStreamFrom(numbers) testSeekAndReadByte(t, s, 3, 0, nil, '3') testSeekAndReadByte(t, s, -2, 1, nil, '2') testReadAt(t, s, 7, nil, "789...") testSeekAndReadByte(t, s, 2, 1, nil, '5') testSeekAndReadByte(t, s, -2, 2, nil, '8') testUnreadByte(t, s, nil) testSeekAndReadByte(t, s, 0, 1, nil, '8') // test resize testTruncate(t, s, 20, stream.ErrNotGrowable) testSetSize(t, s, 20, stream.ErrNotGrowable) testPosition(t, s, 9) pos := 6 s.Seek(int64(pos), 0) testTruncate(t, s, pos+1, nil) testPosition(t, s, pos) testTruncate(t, s, 0, nil) testPosition(t, s, 0) testReadAt(t, s, 5, io.EOF, "......") testSetSize(t, s, 10, nil) testPosition(t, s, 0) testReadAt(t, s, 5, nil, "56789.") }
0x31, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 27+9 sfixed64:fixed64 0x50, 0xFC, 0xFD, 0xFF, 0xFF, 0x0F, // 36+6 uint32:varint 0x58, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, // 42+11 uint64:varint 0x65, 0xFC, 0xFE, 0xFF, 0xFF, // 53+5 fixed32:fixed32 0x69, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 58+9 fixed64:fixed64 0xA5, 0x01, 0x39, 0x8E, 0xE3, 0x3D, // 67+6 float:fixed32 0xA9, 0x01, 0x1C, 0xC7, 0x71, 0x1C, 0xC7, 0x71, 0xBC, 0x3F, // 73+10 double:fixed64 0xF0, 0x01, 0x01, // 83+3 bool:varint 0xFA, 0x01, 0x03, 0x31, 0x32, 0x33, // 86+6 string 0x80, 0x02, 0x1E, // 92+3 enum:varint 0xC2, 0x02, 0x06, 0x08, 0xFF, 0x03, 0x10, 0xFF, 0x11, // 95+9 message 0xC2, 0x02, 0x06, 0x08, 0xFF, 0x11, 0x10, 0xFF, 0x03, //104+9 message } ) var ( rd = stream.NewStreamFrom(pb_data) wr = stream.NewStream(0) dm = stream.NewStream(0) comp = new(pbDoor) ) type pbPos struct { X, Y int32 } type pbDoor struct { I32, S32, D32 int32 I64, S64, D64 int64 U32, X32 uint32 U64, X64 uint64 F32 float32 F64 float64