Example #1
0
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)
}
Example #2
0
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
	}
}
Example #3
0
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)
}