github.com/fabiokung/docker@v0.11.2-0.20170222101415-4534dcd49497/pkg/ioutils/buffer_test.go (about)

     1  package ioutils
     2  
     3  import (
     4  	"bytes"
     5  	"testing"
     6  )
     7  
     8  func TestFixedBufferWrite(t *testing.T) {
     9  	buf := &fixedBuffer{buf: make([]byte, 0, 64)}
    10  	n, err := buf.Write([]byte("hello"))
    11  	if err != nil {
    12  		t.Fatal(err)
    13  	}
    14  
    15  	if n != 5 {
    16  		t.Fatalf("expected 5 bytes written, got %d", n)
    17  	}
    18  
    19  	if string(buf.buf[:5]) != "hello" {
    20  		t.Fatalf("expected \"hello\", got %q", string(buf.buf[:5]))
    21  	}
    22  
    23  	n, err = buf.Write(bytes.Repeat([]byte{1}, 64))
    24  	if n != 59 {
    25  		t.Fatalf("expected 59 bytes written before buffer is full, got %d", n)
    26  	}
    27  	if err != errBufferFull {
    28  		t.Fatalf("expected errBufferFull, got %v - %v", err, buf.buf[:64])
    29  	}
    30  }
    31  
    32  func TestFixedBufferRead(t *testing.T) {
    33  	buf := &fixedBuffer{buf: make([]byte, 0, 64)}
    34  	if _, err := buf.Write([]byte("hello world")); err != nil {
    35  		t.Fatal(err)
    36  	}
    37  
    38  	b := make([]byte, 5)
    39  	n, err := buf.Read(b)
    40  	if err != nil {
    41  		t.Fatal(err)
    42  	}
    43  
    44  	if n != 5 {
    45  		t.Fatalf("expected 5 bytes read, got %d - %s", n, buf.String())
    46  	}
    47  
    48  	if string(b) != "hello" {
    49  		t.Fatalf("expected \"hello\", got %q", string(b))
    50  	}
    51  
    52  	n, err = buf.Read(b)
    53  	if err != nil {
    54  		t.Fatal(err)
    55  	}
    56  
    57  	if n != 5 {
    58  		t.Fatalf("expected 5 bytes read, got %d", n)
    59  	}
    60  
    61  	if string(b) != " worl" {
    62  		t.Fatalf("expected \" worl\", got %s", string(b))
    63  	}
    64  
    65  	b = b[:1]
    66  	n, err = buf.Read(b)
    67  	if err != nil {
    68  		t.Fatal(err)
    69  	}
    70  
    71  	if n != 1 {
    72  		t.Fatalf("expected 1 byte read, got %d - %s", n, buf.String())
    73  	}
    74  
    75  	if string(b) != "d" {
    76  		t.Fatalf("expected \"d\", got %s", string(b))
    77  	}
    78  }