func TestReaderWriter(t *testing.T) { defer test.New(t) var n int f, err := os.Create(root) test.Nil(err) w := NewWriter(f, 1) offset, _ := w.Seek(-1, 1) test.NotEqual(offset, 0) _, err = w.Write([]byte("caoo")) test.Nil(err) defer w.Close() // |caoo _, err = w.Seek(0, 2) test.Equal(err, ErrSeekNotSupport) _, err = w.Seek(1, 0) test.Nil(err) n, err = w.Write([]byte("j")) test.Equals(err, nil, n, 1) // cj|oo r := NewReader(f, 0) defer r.Close() _, err = r.Seek(1, 1) test.Nil(err) // c|joo _, err = r.Seek(0, 2) test.Equal(err, ErrSeekNotSupport) buf := make([]byte, 3) n, err = r.Read(buf) test.Equals(n, 3, err, nil, buf, []byte("joo")) // cjoo| _, err = r.Seek(0, 0) test.Nil(err) }
func TestBlockWriteRead(t *testing.T) { defer test.New(t) f, err := New(root, 0, 4) test.Nil(err) defer f.Close() buf := []byte("abcdefgh") for i := 0; i < 1024; i += 8 { n, err := f.WriteAt(buf, int64(i)) test.Equals(n, 8, err, nil) } buf2 := make([]byte, len(buf)) for i := 0; i < 1024; { n, err := f.ReadAt(buf2, int64(i)) test.Equals(n, len(buf2), buf2, buf, err, nil) i += n } }
func TestBlock(t *testing.T) { defer test.New(t) f, err := New(root, 0, 2) test.Nil(err) test.Nil(f.Delete(false)) defer f.Close() buf := bytes.Repeat([]byte("ha"), 1024) n, err := f.WriteAt(buf, 1) test.Nil(err) test.Equal(n, len(buf)) buf2 := make([]byte, len(buf)) n, err = f.ReadAt(buf2, 0) test.Nil(err) test.Equal(n, len(buf2)) test.Equal(buf[:len(buf)-1], buf2[1:]) n, err = f.ReadAt([]byte(" "), 1024*2+1) test.Equals(n, 0, err, io.EOF) n, err = f.ReadAt([]byte(" "), 0) test.Equals(n, 2, err, nil) n, err = f.ReadAt([]byte(" "), 0) test.Equals(n, 2, err, nil) os.RemoveAll(root) n, err = f.ReadAt([]byte(" "), 4) test.Equals(n, 0) test.CheckError(err, test.StrNotSuchFile) n, err = f.WriteAt([]byte(" "), 4) test.Equals(n, 0) test.CheckError(err, test.StrNotSuchFile) }