MCPcopy Create free account
hub / github.com/google/go-cloud / TestReader

Function TestReader

blob/blob_reader_test.go:28–71  ·  view source on GitHub ↗

TestReader verifies that blob.Reader implements io package interfaces correctly.

(t *testing.T)

Source from the content-addressed store, hash-verified

26
27// TestReader verifies that blob.Reader implements io package interfaces correctly.
28func TestReader(t *testing.T) {
29 const myKey = "testkey"
30
31 bucket := memblob.OpenBucket(nil)
32 defer bucket.Close()
33
34 // Get some random data, of a large enough size to require multiple
35 // reads/writes given our buffer size of 1024.
36 data, err := randomData(1024*10 + 10)
37 if err != nil {
38 t.Fatal(err)
39 }
40
41 // Write the data to a key.
42 ctx := context.Background()
43 bucket.WriteAll(ctx, myKey, data, nil)
44
45 // Create a blob.Reader.
46 r1, err := bucket.NewReader(ctx, myKey, nil)
47 if err != nil {
48 t.Fatal(err)
49 }
50 r1.Close()
51 if err := iotest.TestReader(r1, data); err != nil {
52 t.Error(err)
53 }
54
55 // Create another blob.Reader to exercise the ReadFrom code path
56 r2, err := bucket.NewReader(ctx, myKey, nil)
57 if err != nil {
58 t.Fatal(err)
59 }
60 defer r2.Close()
61
62 var buffer bytes.Buffer
63 n, err := io.Copy(&buffer, r2)
64 if err != nil {
65 t.Fatal(err)
66 } else if n != int64(len(data)) {
67 t.Fatal("wrote fewer bytes than expected")
68 } else if !bytes.Equal(buffer.Bytes(), data) {
69 t.Fatal("wrote invalid bytes")
70 }
71}

Callers

nothing calls this directly

Calls 8

CloseMethod · 0.95
OpenBucketFunction · 0.92
randomDataFunction · 0.85
WriteAllMethod · 0.80
NewReaderMethod · 0.80
CloseMethod · 0.65
CopyMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected