github.com/fluhus/gostuff@v0.4.1-0.20240331134726-be71864f2b5d/repeat/repeat_test.go (about)

     1  package repeat
     2  
     3  import (
     4  	"io"
     5  	"testing"
     6  )
     7  
     8  func TestReader(t *testing.T) {
     9  	r := NewReader([]byte("amit"), 2)
    10  	buf := make([]byte, 3)
    11  
    12  	n, err := r.Read(buf)
    13  	if err != nil {
    14  		t.Fatalf("Read() failed: %v", err)
    15  	}
    16  	if n != 3 {
    17  		t.Fatalf("Read() n=%v, want 3", n)
    18  	}
    19  	if string(buf) != "ami" {
    20  		t.Fatalf("Read()=%q, want %q", buf, "ami")
    21  	}
    22  
    23  	n, err = r.Read(buf)
    24  	if err != nil {
    25  		t.Fatalf("Read() failed: %v", err)
    26  	}
    27  	if n != 3 {
    28  		t.Fatalf("Read() n=%v, want 3", n)
    29  	}
    30  	if string(buf) != "tam" {
    31  		t.Fatalf("Read()=%q, want %q", buf, "tam")
    32  	}
    33  
    34  	n, err = r.Read(buf)
    35  	if err != nil {
    36  		t.Fatalf("Read() failed: %v", err)
    37  	}
    38  	if n != 2 {
    39  		t.Fatalf("Read() n=%v, want 2", n)
    40  	}
    41  	if string(buf[:n]) != "it" {
    42  		t.Fatalf("Read()=%q, want %q", buf[:n], "it")
    43  	}
    44  
    45  	_, err = r.Read(buf)
    46  	if err != io.EOF {
    47  		t.Fatalf("Read() err=%v, want EOF", err)
    48  	}
    49  }
    50  
    51  func TestReader_infinite(t *testing.T) {
    52  	r := NewReader([]byte("amit"), -1)
    53  	buf := make([]byte, 3)
    54  
    55  	n, err := r.Read(buf)
    56  	if err != nil {
    57  		t.Fatalf("Read() failed: %v", err)
    58  	}
    59  	if n != 3 {
    60  		t.Fatalf("Read() n=%v, want 3", n)
    61  	}
    62  	if string(buf) != "ami" {
    63  		t.Fatalf("Read()=%q, want %q", buf, "ami")
    64  	}
    65  
    66  	n, err = r.Read(buf)
    67  	if err != nil {
    68  		t.Fatalf("Read() failed: %v", err)
    69  	}
    70  	if n != 3 {
    71  		t.Fatalf("Read() n=%v, want 3", n)
    72  	}
    73  	if string(buf) != "tam" {
    74  		t.Fatalf("Read()=%q, want %q", buf, "tam")
    75  	}
    76  
    77  	n, err = r.Read(buf)
    78  	if err != nil {
    79  		t.Fatalf("Read() failed: %v", err)
    80  	}
    81  	if n != 3 {
    82  		t.Fatalf("Read() n=%v, want 3", n)
    83  	}
    84  	if string(buf[:n]) != "ita" {
    85  		t.Fatalf("Read()=%q, want %q", buf[:n], "ita")
    86  	}
    87  }