package filestream import ( "bytes" "fmt" "io" "os" "testing" ) func TestWriteRead(t *testing.T) { testWriteRead(t, false, "") testWriteRead(t, true, "") testWriteRead(t, false, "foobar") testWriteRead(t, true, "foobar") testWriteRead(t, false, "a\nb\nc\n") testWriteRead(t, true, "a\nb\nc\n") var bb bytes.Buffer for bb.Len() < 3*dontNeedBlockSize { fmt.Fprintf(&bb, "line %d\n", bb.Len()) } testStr := bb.String() testWriteRead(t, false, testStr) testWriteRead(t, true, testStr) } func testWriteRead(t *testing.T, nocache bool, testStr string) { t.Helper() w, err := Create("./nocache_test.txt", nocache) if err != nil { t.Fatalf("cannot create file: %s", err) } defer func() { _ = os.Remove("./nocache_test.txt") }() if _, err := fmt.Fprintf(w, "%s", testStr); err != nil { t.Fatalf("unexpected error when writing testStr: %s", err) } w.MustClose() r, err := Open("./nocache_test.txt", nocache) if err != nil { t.Fatalf("cannot open file: %s", err) } buf := make([]byte, len(testStr)) if _, err := io.ReadFull(r, buf); err != nil { t.Fatalf("unexpected error when reading: %s", err) } if string(buf) != testStr { t.Fatalf("unexpected data read: got\n%x; want\n%x", buf, testStr) } r.MustClose() }