2019-05-22 21:16:55 +00:00
|
|
|
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()
|
|
|
|
|
2023-04-14 22:12:45 +00:00
|
|
|
w := MustCreate("./nocache_test.txt", nocache)
|
2019-05-22 21:16:55 +00:00
|
|
|
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()
|
|
|
|
|
2023-04-14 22:03:39 +00:00
|
|
|
r := MustOpen("./nocache_test.txt", nocache)
|
2019-05-22 21:16:55 +00:00
|
|
|
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()
|
|
|
|
}
|