diff options
| author | Robert Griesemer <gri@golang.org> | 2017-04-27 16:55:47 -0700 |
|---|---|---|
| committer | Robert Griesemer <gri@golang.org> | 2017-04-28 16:37:13 +0000 |
| commit | 86cfe93515cf3387e4a1e0a3d07e4b44e34c7e3a (patch) | |
| tree | 77e3d39214aef86e83de6d0c3f30fe7819750472 /src/bytes/buffer_test.go | |
| parent | 85d6a29ae60fa914a5fb12d061422a63694aa9be (diff) | |
| download | go-86cfe93515cf3387e4a1e0a3d07e4b44e34c7e3a.tar.xz | |
bytes: clarify documentation for UnreadByte/Rune
Fixes #19522.
Change-Id: Ib3cf0336e0bf91580d533704ec1a9d45eb0bf62d
Reviewed-on: https://go-review.googlesource.com/42020
Reviewed-by: Rob Pike <r@golang.org>
Diffstat (limited to 'src/bytes/buffer_test.go')
| -rw-r--r-- | src/bytes/buffer_test.go | 42 |
1 files changed, 37 insertions, 5 deletions
diff --git a/src/bytes/buffer_test.go b/src/bytes/buffer_test.go index b1b85f979a..a07f58ee44 100644 --- a/src/bytes/buffer_test.go +++ b/src/bytes/buffer_test.go @@ -311,6 +311,19 @@ func TestRuneIO(t *testing.T) { // Check that UnreadRune works buf.Reset() + + // check at EOF + if err := buf.UnreadRune(); err == nil { + t.Fatal("UnreadRune at EOF: got no error") + } + if _, _, err := buf.ReadRune(); err == nil { + t.Fatal("ReadRune at EOF: got no error") + } + if err := buf.UnreadRune(); err == nil { + t.Fatal("UnreadRune after ReadRune at EOF: got no error") + } + + // check not at EOF buf.Write(b) for r := rune(0); r < NRune; r++ { r1, size, _ := buf.ReadRune() @@ -473,15 +486,34 @@ func TestReadEmptyAtEOF(t *testing.T) { func TestUnreadByte(t *testing.T) { b := new(Buffer) + + // check at EOF + if err := b.UnreadByte(); err == nil { + t.Fatal("UnreadByte at EOF: got no error") + } + if _, err := b.ReadByte(); err == nil { + t.Fatal("ReadByte at EOF: got no error") + } + if err := b.UnreadByte(); err == nil { + t.Fatal("UnreadByte after ReadByte at EOF: got no error") + } + + // check not at EOF b.WriteString("abcdefghijklmnopqrstuvwxyz") - _, err := b.ReadBytes('m') - if err != nil { - t.Fatalf("ReadBytes: %v", err) + // after unsuccessful read + if n, err := b.Read(nil); n != 0 || err != nil { + t.Fatalf("Read(nil) = %d,%v; want 0,nil", n, err) + } + if err := b.UnreadByte(); err == nil { + t.Fatal("UnreadByte after Read(nil): got no error") } - err = b.UnreadByte() - if err != nil { + // after successful read + if _, err := b.ReadBytes('m'); err != nil { + t.Fatalf("ReadBytes: %v", err) + } + if err := b.UnreadByte(); err != nil { t.Fatalf("UnreadByte: %v", err) } c, err := b.ReadByte() |
