]> Cypherpunks repositories - gostls13.git/commitdiff
bufio: improve NewReaderSize, Peek, and UnreadByte test coverage
authorShawn Smith <shawn.p.smith@gmail.com>
Wed, 1 Jan 2014 11:26:22 +0000 (22:26 +1100)
committerDave Cheney <dave@cheney.net>
Wed, 1 Jan 2014 11:26:22 +0000 (22:26 +1100)
R=golang-codereviews, dave
CC=golang-codereviews
https://golang.org/cl/42990045

src/pkg/bufio/bufio_test.go

index 41bd3d45633854c02d7041c0cec83b9a65f70cc4..5cd030714de7cc6f404207071643978a577697b6 100644 (file)
@@ -139,7 +139,7 @@ var bufreaders = []bufReader{
 const minReadBufferSize = 16
 
 var bufsizes = []int{
-       minReadBufferSize, 23, 32, 46, 64, 93, 128, 1024, 4096,
+       0, minReadBufferSize, 23, 32, 46, 64, 93, 128, 1024, 4096,
 }
 
 func TestReader(t *testing.T) {
@@ -259,6 +259,38 @@ func TestUnreadRune(t *testing.T) {
        }
 }
 
+func TestUnreadByte(t *testing.T) {
+       want := "Hello, world"
+       got := ""
+       segments := []string{"Hello, ", "world"}
+       r := NewReader(&StringReader{data: segments})
+       // Normal execution.
+       for {
+               b1, err := r.ReadByte()
+               if err != nil {
+                       if err != io.EOF {
+                               t.Fatal("unexpected EOF")
+                       }
+                       break
+               }
+               got += string(b1)
+               // Put it back and read it again
+               if err = r.UnreadByte(); err != nil {
+                       t.Fatalf("unexpected error on UnreadByte: %v", err)
+               }
+               b2, err := r.ReadByte()
+               if err != nil {
+                       t.Fatalf("unexpected error reading after unreading: %v", err)
+               }
+               if b1 != b2 {
+                       t.Fatalf("incorrect byte after unread: got %c wanted %c", b1, b2)
+               }
+       }
+       if got != want {
+               t.Errorf("got=%q want=%q", got, want)
+       }
+}
+
 // Test that UnreadRune fails if the preceding operation was not a ReadRune.
 func TestUnreadRuneError(t *testing.T) {
        buf := make([]byte, 3) // All runes in this test are 3 bytes long
@@ -516,6 +548,9 @@ func TestPeek(t *testing.T) {
        if s, err := buf.Peek(4); string(s) != "abcd" || err != nil {
                t.Fatalf("want %q got %q, err=%v", "abcd", string(s), err)
        }
+       if _, err := buf.Peek(-1); err != ErrNegativeCount {
+               t.Fatalf("want ErrNegativeCount got %v", err)
+       }
        if _, err := buf.Peek(32); err != ErrBufferFull {
                t.Fatalf("want ErrBufFull got %v", err)
        }