func TestDecoder(t *testing.T) {
for _, p := range pairs {
- decoder := NewDecoder(StdEncoding, io.NewByteReader(strings.Bytes(p.encoded)));
+ decoder := NewDecoder(StdEncoding, bytes.NewBuffer(strings.Bytes(p.encoded)));
dbuf := make([]byte, StdEncoding.DecodedLen(len(p.encoded)));
count, err := decoder.Read(dbuf);
if err != nil && err != os.EOF {
func TestDecoderBuffering(t *testing.T) {
input := strings.Bytes(bigtest.encoded);
for bs := 1; bs <= 12; bs++ {
- decoder := NewDecoder(StdEncoding, io.NewByteReader(input));
+ decoder := NewDecoder(StdEncoding, bytes.NewBuffer(input));
buf := make([]byte, len(bigtest.decoded) + 12);
var total int;
for total = 0; total < len(bigtest.decoded); {
func TestReaderSimple(t *testing.T) {
data := strings.Bytes("hello world");
- b := NewReader(io.NewByteReader(data));
+ b := NewReader(bytes.NewBuffer(data));
if s := readBytes(b); s != "hello world" {
t.Errorf("simple hello world test failed: got %q", s);
}
- b = NewReader(newRot13Reader(io.NewByteReader(data)));
+ b = NewReader(newRot13Reader(bytes.NewBuffer(data)));
if s := readBytes(b); s != "uryyb jbeyq" {
t.Error("rot13 hello world test failed: got %q", s);
}
readmaker := readMakers[i];
bufreader := bufreaders[j];
bufsize := bufsizes[k];
- read := readmaker.fn(io.NewByteReader(textbytes));
+ read := readmaker.fn(bytes.NewBuffer(textbytes));
buf, e := NewReaderSize(read, bufsize);
s := bufreader.fn(buf);
if s != text {
func TestNewReaderSizeIdempotent(t *testing.T) {
const BufSize = 1000;
- b, err := NewReaderSize(io.NewByteReader(strings.Bytes("hello world")), BufSize);
+ b, err := NewReaderSize(bytes.NewBuffer(strings.Bytes("hello world")), BufSize);
if err != nil {
t.Error("NewReaderSize create fail", err);
}
var HeaderError os.Error = os.ErrorString("invalid gzip header")
var ChecksumError os.Error = os.ErrorString("gzip checksum error")
-// A GzipInflater is an io.Reader that can be read to retrieve
+// An Inflater is an io.Reader that can be read to retrieve
// uncompressed data from a gzip-format compressed file.
// The gzip file stores a header giving metadata about the compressed file.
-// That header is exposed as the fields of the GzipInflater struct.
+// That header is exposed as the fields of the Inflater struct.
//
// In general, a gzip file can be a concatenation of gzip files,
-// each with its own header. Reads from the GzipInflater
+// each with its own header. Reads from the Inflater
// return the concatenation of the uncompressed data of each.
-// Only the first header is recorded in the GzipInflater fields.
+// Only the first header is recorded in the Inflater fields.
//
// Gzip files store a length and checksum of the uncompressed data.
-// The GzipInflater will return a ChecksumError when Read
+// The Inflater will return a ChecksumError when Read
// reaches the end of the uncompressed data if it does not
// have the expected length or checksum. Clients should treat data
// returned by Read as tentative until they receive the successful
// (zero length, nil error) Read marking the end of the data.
-type GzipInflater struct {
+type Inflater struct {
Comment string; // comment
Extra []byte; // "extra data"
Mtime uint32; // modification time (seconds since January 1, 1970)
eof bool;
}
-// NewGzipInflater creates a new GzipInflater reading the given reader.
+// NewInflater creates a new Inflater reading the given reader.
// The implementation buffers input and may read more data than necessary from r.
-func NewGzipInflater(r io.Reader) (*GzipInflater, os.Error) {
- z := new(GzipInflater);
+func NewInflater(r io.Reader) (*Inflater, os.Error) {
+ z := new(Inflater);
z.r = makeReader(r);
z.digest = crc32.NewIEEE();
if err := z.readHeader(true); err != nil {
return uint32(p[0]) | uint32(p[1])<<8 | uint32(p[2])<<16 | uint32(p[3])<<24;
}
-func (z *GzipInflater) readString() (string, os.Error) {
+func (z *Inflater) readString() (string, os.Error) {
var err os.Error;
for i := 0;; i++ {
if i >= len(z.buf) {
panic("not reached");
}
-func (z *GzipInflater) read2() (uint32, os.Error) {
+func (z *Inflater) read2() (uint32, os.Error) {
_, err := z.r.Read(z.buf[0:2]);
if err != nil {
return 0, err;
return uint32(z.buf[0]) | uint32(z.buf[1])<<8, nil;
}
-func (z *GzipInflater) readHeader(save bool) os.Error {
+func (z *Inflater) readHeader(save bool) os.Error {
n, err := io.ReadFull(z.r, z.buf[0:10]);
if err != nil {
return err;
return nil;
}
-func (z *GzipInflater) Read(p []byte) (n int, err os.Error) {
+func (z *Inflater) Read(p []byte) (n int, err os.Error) {
if z.err != nil {
return 0, z.err;
}
},
}
-func TestGzipInflater(t *testing.T) {
+func TestInflater(t *testing.T) {
b := new(bytes.Buffer);
for i, tt := range gzipTests {
- in := io.NewByteReader(tt.gzip);
- gzip, err := NewGzipInflater(in);
+ in := bytes.NewBuffer(tt.gzip);
+ gzip, err := NewInflater(in);
if err != nil {
- t.Errorf("%s: NewGzipInflater: %s", tt.name, err);
+ t.Errorf("%s: NewInflater: %s", tt.name, err);
continue;
}
if tt.name != gzip.Name {
err os.Error;
}
-// NewZlibInflater creates a new io.Reader that satisfies reads by decompressing data read from r.
+// NewInflater creates a new io.Reader that satisfies reads by decompressing data read from r.
// The implementation buffers input and may read more data than necessary from r.
-func NewZlibInflater(r io.Reader) (io.Reader, os.Error) {
+func NewInflater(r io.Reader) (io.Reader, os.Error) {
z := new(reader);
if fr, ok := r.(flate.Reader); ok {
z.r = fr;
},
}
-func TestZlibInflater(t *testing.T) {
+func TestInflater(t *testing.T) {
b := new(bytes.Buffer);
for i, tt := range zlibTests {
- in := io.NewByteReader(tt.compressed);
- zlib, err := NewZlibInflater(in);
+ in := bytes.NewBuffer(tt.compressed);
+ zlib, err := NewInflater(in);
if err != nil {
if err != tt.err {
- t.Errorf("%s: NewZlibInflater: %s", tt.desc, err);
+ t.Errorf("%s: NewInflater: %s", tt.desc, err);
}
continue;
}
var crypt bytes.Buffer;
w := NewCBCEncrypter(c, tt.iv, &crypt);
- var r io.Reader = io.NewByteReader(tt.in);
+ var r io.Reader = bytes.NewBuffer(tt.in);
n, err := io.Copy(r, w);
if n != int64(len(tt.in)) || err != nil {
t.Errorf("%s: CBCEncrypter io.Copy = %d, %v want %d, nil", test, n, err, len(tt.in));
}
var plain bytes.Buffer;
- r = NewCBCDecrypter(c, tt.iv, io.NewByteReader(tt.out));
+ r = NewCBCDecrypter(c, tt.iv, bytes.NewBuffer(tt.out));
w = &plain;
n, err = io.Copy(r, w);
if n != int64(len(tt.out)) || err != nil {
var crypt bytes.Buffer;
w := NewCFBEncrypter(c, tt.s, tt.iv, &crypt);
- var r io.Reader = io.NewByteReader(tt.in);
+ var r io.Reader = bytes.NewBuffer(tt.in);
n, err := io.Copy(r, w);
if n != int64(len(tt.in)) || err != nil {
t.Errorf("%s: CFBEncrypter io.Copy = %d, %v want %d, nil", test, n, err, len(tt.in));
}
var plain bytes.Buffer;
- r = NewCFBDecrypter(c, tt.s, tt.iv, io.NewByteReader(tt.out));
+ r = NewCFBDecrypter(c, tt.s, tt.iv, bytes.NewBuffer(tt.out));
w = &plain;
n, err = io.Copy(r, w);
if n != int64(len(tt.out)) || err != nil {
var crypt bytes.Buffer;
in := tt.in[0:len(tt.in) - j];
w := NewCTRWriter(c, tt.iv, &crypt);
- var r io.Reader = io.NewByteReader(in);
+ var r io.Reader = bytes.NewBuffer(in);
n, err := io.Copy(r, w);
if n != int64(len(in)) || err != nil {
t.Errorf("%s/%d: CTRWriter io.Copy = %d, %v want %d, nil", test, len(in), n, err, len(in));
for j := 0; j <= 7; j += 7 {
var plain bytes.Buffer;
out := tt.out[0:len(tt.out) - j];
- r := NewCTRReader(c, tt.iv, io.NewByteReader(out));
+ r := NewCTRReader(c, tt.iv, bytes.NewBuffer(out));
w := &plain;
n, err := io.Copy(r, w);
if n != int64(len(out)) || err != nil {
}
b.Reset();
enc := NewEAXEncrypter(c, tt.nonce, tt.header, 16, b);
- n, err := io.Copy(io.NewByteReader(tt.msg), enc);
+ n, err := io.Copy(bytes.NewBuffer(tt.msg), enc);
if n != int64(len(tt.msg)) || err != nil {
t.Fatalf("%s: io.Copy into encrypter: %d, %s", test, n, err);
}
t.Fatalf("%s: NewCipher(%d bytes) = %s", test, len(tt.key), err);
}
b.Reset();
- dec := NewEAXDecrypter(c, tt.nonce, tt.header, 16, io.NewByteReader(tt.cipher));
+ dec := NewEAXDecrypter(c, tt.nonce, tt.header, 16, bytes.NewBuffer(tt.cipher));
n, err := io.Copy(dec, b);
if n != int64(len(tt.msg)) || err != nil {
t.Fatalf("%s: io.Copy into decrypter: %d, %s", test, n, err);
var crypt bytes.Buffer;
w := NewECBEncrypter(c, &crypt);
- var r io.Reader = io.NewByteReader(tt.in);
+ var r io.Reader = bytes.NewBuffer(tt.in);
n, err := io.Copy(r, w);
if n != int64(len(tt.in)) || err != nil {
t.Errorf("%s: ECBReader io.Copy = %d, %v want %d, nil", test, n, err, len(tt.in));
}
var plain bytes.Buffer;
- r = NewECBDecrypter(c, io.NewByteReader(tt.out));
+ r = NewECBDecrypter(c, bytes.NewBuffer(tt.out));
w = &plain;
n, err = io.Copy(r, w);
if n != int64(len(tt.out)) || err != nil {
for frag := 0; frag < 2; frag++ {
c := &IncCipher{block, 0, true};
b.Reset();
- r := io.NewByteReader(&plain);
+ r := bytes.NewBuffer(&plain);
w := NewECBEncrypter(c, b);
// copy plain into w in increasingly large chunks: 1, 1, 2, 4, 8, ...
test := fmt.Sprintf("block=%d mode=%d frag=%d maxio=%d", block, mode, frag, maxio);
c := &IncCipher{block, 0, false};
b.Reset();
- r := NewECBDecrypter(c, readers[mode](io.NewByteReader(crypt[0:maxio])));
+ r := NewECBDecrypter(c, readers[mode](bytes.NewBuffer(crypt[0:maxio])));
// read from crypt in increasingly large chunks: 1, 1, 2, 4, 8, ...
// if frag == 1, move the 1 to the end to cause fragmentation.
var crypt bytes.Buffer;
in := tt.in[0:len(tt.in) - j];
w := NewOFBWriter(c, tt.iv, &crypt);
- var r io.Reader = io.NewByteReader(in);
+ var r io.Reader = bytes.NewBuffer(in);
n, err := io.Copy(r, w);
if n != int64(len(in)) || err != nil {
t.Errorf("%s/%d: OFBWriter io.Copy = %d, %v want %d, nil", test, len(in), n, err, len(in));
for j := 0; j <= 7; j += 7 {
var plain bytes.Buffer;
out := tt.out[0:len(tt.out) - j];
- r := NewOFBReader(c, tt.iv, io.NewByteReader(out));
+ r := NewOFBReader(c, tt.iv, bytes.NewBuffer(out));
w := &plain;
n, err := io.Copy(r, w);
if n != int64(len(out)) || err != nil {
for frag := 0; frag < 2; frag++ {
test := fmt.Sprintf("block=%d frag=%d maxio=%d", block, frag, maxio);
b.Reset();
- r := io.NewByteReader(&plain);
+ r := bytes.NewBuffer(&plain);
s := newIncStream(block);
w := newXorWriter(s, b);
test := fmt.Sprintf("block=%d mode=%d frag=%d maxio=%d", block, mode, frag, maxio);
s := newIncStream(block);
b.Reset();
- r := newXorReader(s, readers[mode](io.NewByteReader(crypt[0:maxio])));
+ r := newXorReader(s, readers[mode](bytes.NewBuffer(crypt[0:maxio])));
// read from crypt in increasingly large chunks: 1, 1, 2, 4, 8, ...
// if frag == 1, move the 1 to the end to cause fragmentation.
if err != nil || uint64(n) < length {
return nil, ErrShortBody
}
- req.Body = io.NewByteReader(raw);
+ req.Body = bytes.NewBuffer(raw);
}
return req, nil