From fcf3be2896640909005925b907b6b56bfd177f05 Mon Sep 17 00:00:00 2001 From: Aaron Jacobs Date: Thu, 5 Mar 2015 19:26:24 +1100 Subject: [PATCH] PosixTest.ReadsPastEndOfFile --- samples/memfs/posix_test.go | 38 +++++++++++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 8 deletions(-) diff --git a/samples/memfs/posix_test.go b/samples/memfs/posix_test.go index 4f4d68f..f48be48 100644 --- a/samples/memfs/posix_test.go +++ b/samples/memfs/posix_test.go @@ -218,14 +218,36 @@ func (t *PosixTest) WriteAtDoesntChangeOffset_AppendMode() { ExpectEq(4, offset) } -func (t *PosixTest) ReadOverlapsEndOfFile() { - AssertTrue(false, "TODO") -} +func (t *PosixTest) ReadsPastEndOfFile() { + var err error + var n int + buf := make([]byte, 1024) -func (t *PosixTest) ReadStartsAtEndOfFile() { - AssertTrue(false, "TODO") -} + // Create a file. + f, err := os.Create(path.Join(t.dir, "foo")) + t.toClose = append(t.toClose, f) + AssertEq(nil, err) -func (t *PosixTest) ReadStartsPastEndOfFile() { - AssertTrue(false, "TODO") + // Give it some contents. + n, err = f.Write([]byte("taco")) + AssertEq(nil, err) + AssertEq(4, n) + + // Read a range overlapping EOF. + n, err = f.ReadAt(buf[:4], 2) + AssertEq(io.EOF, err) + ExpectEq(2, n) + ExpectEq("co", string(buf[:n])) + + // Read a range starting at EOF. + n, err = f.ReadAt(buf[:4], 4) + AssertEq(io.EOF, err) + ExpectEq(0, n) + ExpectEq("", string(buf[:n])) + + // Read a range starting past EOF. + n, err = f.ReadAt(buf[:4], 100) + AssertEq(io.EOF, err) + ExpectEq(0, n) + ExpectEq("", string(buf[:n])) }