...

Source file src/github.com/jackc/chunkreader/v2/chunkreader_test.go

Documentation: github.com/jackc/chunkreader/v2

     1  package chunkreader
     2  
     3  import (
     4  	"bytes"
     5  	"testing"
     6  )
     7  
     8  func TestChunkReaderNextDoesNotReadIfAlreadyBuffered(t *testing.T) {
     9  	server := &bytes.Buffer{}
    10  	r, err := NewConfig(server, Config{MinBufLen: 4})
    11  	if err != nil {
    12  		t.Fatal(err)
    13  	}
    14  
    15  	src := []byte{1, 2, 3, 4}
    16  	server.Write(src)
    17  
    18  	n1, err := r.Next(2)
    19  	if err != nil {
    20  		t.Fatal(err)
    21  	}
    22  	if bytes.Compare(n1, src[0:2]) != 0 {
    23  		t.Fatalf("Expected read bytes to be %v, but they were %v", src[0:2], n1)
    24  	}
    25  
    26  	n2, err := r.Next(2)
    27  	if err != nil {
    28  		t.Fatal(err)
    29  	}
    30  	if bytes.Compare(n2, src[2:4]) != 0 {
    31  		t.Fatalf("Expected read bytes to be %v, but they were %v", src[2:4], n2)
    32  	}
    33  
    34  	if bytes.Compare(r.buf, src) != 0 {
    35  		t.Fatalf("Expected r.buf to be %v, but it was %v", src, r.buf)
    36  	}
    37  	if r.rp != 4 {
    38  		t.Fatalf("Expected r.rp to be %v, but it was %v", 4, r.rp)
    39  	}
    40  	if r.wp != 4 {
    41  		t.Fatalf("Expected r.wp to be %v, but it was %v", 4, r.wp)
    42  	}
    43  }
    44  
    45  func TestChunkReaderNextExpandsBufAsNeeded(t *testing.T) {
    46  	server := &bytes.Buffer{}
    47  	r, err := NewConfig(server, Config{MinBufLen: 4})
    48  	if err != nil {
    49  		t.Fatal(err)
    50  	}
    51  
    52  	src := []byte{1, 2, 3, 4, 5, 6, 7, 8}
    53  	server.Write(src)
    54  
    55  	n1, err := r.Next(5)
    56  	if err != nil {
    57  		t.Fatal(err)
    58  	}
    59  	if bytes.Compare(n1, src[0:5]) != 0 {
    60  		t.Fatalf("Expected read bytes to be %v, but they were %v", src[0:5], n1)
    61  	}
    62  	if len(r.buf) != 5 {
    63  		t.Fatalf("Expected len(r.buf) to be %v, but it was %v", 5, len(r.buf))
    64  	}
    65  }
    66  
    67  func TestChunkReaderDoesNotReuseBuf(t *testing.T) {
    68  	server := &bytes.Buffer{}
    69  	r, err := NewConfig(server, Config{MinBufLen: 4})
    70  	if err != nil {
    71  		t.Fatal(err)
    72  	}
    73  
    74  	src := []byte{1, 2, 3, 4, 5, 6, 7, 8}
    75  	server.Write(src)
    76  
    77  	n1, err := r.Next(4)
    78  	if err != nil {
    79  		t.Fatal(err)
    80  	}
    81  	if bytes.Compare(n1, src[0:4]) != 0 {
    82  		t.Fatalf("Expected read bytes to be %v, but they were %v", src[0:4], n1)
    83  	}
    84  
    85  	n2, err := r.Next(4)
    86  	if err != nil {
    87  		t.Fatal(err)
    88  	}
    89  	if bytes.Compare(n2, src[4:8]) != 0 {
    90  		t.Fatalf("Expected read bytes to be %v, but they were %v", src[4:8], n2)
    91  	}
    92  
    93  	if bytes.Compare(n1, src[0:4]) != 0 {
    94  		t.Fatalf("Expected KeepLast to prevent Next from overwriting buf, expected %v but it was %v", src[0:4], n1)
    95  	}
    96  }
    97  

View as plain text