From 49bead83fa38cb8e67459fb6a479122e38388e34 Mon Sep 17 00:00:00 2001 From: Aaron Jacobs Date: Thu, 5 Mar 2015 19:21:20 +1100 Subject: [PATCH] PosixTest.WriteAtDoesntChangeOffset_NotAppendMode --- samples/memfs/posix_test.go | 40 ++++++++++++++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/samples/memfs/posix_test.go b/samples/memfs/posix_test.go index 93564e9..ab78985 100644 --- a/samples/memfs/posix_test.go +++ b/samples/memfs/posix_test.go @@ -29,6 +29,16 @@ import ( func TestPosix(t *testing.T) { RunTests(t) } +//////////////////////////////////////////////////////////////////////// +// Helpers +//////////////////////////////////////////////////////////////////////// + +func getFileOffset(f *os.File) (offset int64, err error) { + const relativeToCurrent = 1 + offset, err = f.Seek(0, relativeToCurrent) + return +} + //////////////////////////////////////////////////////////////////////// // Boilerplate //////////////////////////////////////////////////////////////////////// @@ -148,11 +158,35 @@ func (t *PosixTest) WriteStartsPastEndOfFile() { ExpectEq("\x00\x00taco", string(contents)) } -func (t *PosixTest) WriteAtEffectOnOffset_NotAppendMode() { - AssertTrue(false, "TODO") +func (t *PosixTest) WriteAtDoesntChangeOffset_NotAppendMode() { + var err error + var n int + + // Create a file. + f, err := os.Create(path.Join(t.dir, "foo")) + t.toClose = append(t.toClose, f) + AssertEq(nil, err) + + // Make it 16 bytes long. + err = f.Truncate(16) + AssertEq(nil, err) + + // Seek to offset 4. + _, err = f.Seek(4, 0) + AssertEq(nil, err) + + // Write the range [10, 14). + n, err = f.WriteAt([]byte("taco"), 2) + AssertEq(nil, err) + AssertEq(4, n) + + // We should still be at offset 4. + offset, err := getFileOffset(f) + AssertEq(nil, err) + ExpectEq(4, offset) } -func (t *PosixTest) WriteAtEffectOnOffset_AppendMode() { +func (t *PosixTest) WriteAtDoesntChangeOffset_AppendMode() { AssertTrue(false, "TODO") }