github.com/jlmeeker/kismatic@v1.10.1-0.20180612190640-57f9005a1f1a/pkg/util/linereader_test.go (about)

     1  package util
     2  
     3  import (
     4  	"bytes"
     5  	"io"
     6  	"reflect"
     7  	"testing"
     8  )
     9  
    10  func TestLineReaderReadEmptyString(t *testing.T) {
    11  	lr := NewLineReader(bytes.NewBufferString(""), 64)
    12  	line, err := lr.Read()
    13  	if err != io.EOF {
    14  		t.Errorf("unexpected error: %v", err)
    15  	}
    16  	if string(line) != "" {
    17  		t.Errorf("unexpected line: %v", err)
    18  	}
    19  }
    20  
    21  func TestLineReaderReadLine(t *testing.T) {
    22  	expectedLine := "foo"
    23  	r := bytes.NewBufferString(expectedLine)
    24  	lr := NewLineReader(r, 64)
    25  	line, err := lr.Read()
    26  	if err != nil {
    27  		t.Errorf("unexpected error: %v", err)
    28  	}
    29  	if string(line) != expectedLine {
    30  		t.Errorf("got %s, but wanted %s", line, expectedLine)
    31  	}
    32  }
    33  
    34  func TestLineReaderReadLongLine(t *testing.T) {
    35  	expectedLine := `Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum sed tellus sit amet ligula cursus pretium feugiat ut lorem. In eu vestibulum turpis. Sed et mauris ut massa finibus pharetra. Suspendisse blandit eu est vitae congue. Praesent elementum blandit sapien et convallis. Sed quam nibh, vestibulum eu varius quis, consectetur in purus. Vestibulum ac justo in leo tempus pellentesque et in metus. Sed in est sed magna consequat hendrerit non et lectus. Sed sodales dictum tortor vel gravida. Phasellus egestas metus nec massa imperdiet, non gravida ligula cursus. Ut non diam sit amet ante porttitor tristique auctor vel leo. Morbi lectus tortor, scelerisque a laoreet id, aliquet sit amet nibh. Sed ullamcorper lectus dictum tellus ultrices iaculis. Integer rutrum, est eu mattis laoreet, eros tellus interdum tortor, a pharetra eros metus et lectus.`
    36  	r := bytes.NewBufferString(expectedLine)
    37  	lr := NewLineReader(r, 64)
    38  	line, err := lr.Read()
    39  	if err != nil {
    40  		t.Errorf("unexpected error: %v", err)
    41  	}
    42  	if string(line) != expectedLine {
    43  		t.Errorf("got %s, but wanted %s", line, expectedLine)
    44  	}
    45  }
    46  
    47  func TestLineReaderReadLineEOFWhenDone(t *testing.T) {
    48  	lr := NewLineReader(bytes.NewBufferString("foo"), 64)
    49  	l, err := lr.Read()
    50  	if string(l) != "foo" {
    51  		t.Errorf("unexpected line: %v", l)
    52  	}
    53  	if err != nil {
    54  		t.Errorf("unexpected error: %v", err)
    55  	}
    56  	_, err = lr.Read()
    57  	if err != io.EOF {
    58  		t.Errorf("got %v but wanted %v", err, io.EOF)
    59  	}
    60  }
    61  
    62  func TestLineReaderReadLineMultipleLines(t *testing.T) {
    63  	lines := `foo
    64  bar
    65  baz`
    66  
    67  	lr := NewLineReader(bytes.NewBufferString(lines), 64)
    68  	var (
    69  		gotLines []string
    70  		line     []byte
    71  		err      error
    72  	)
    73  	for {
    74  		line, err = lr.Read()
    75  		if err != nil {
    76  			break
    77  		}
    78  		gotLines = append(gotLines, string(line))
    79  	}
    80  	if err != io.EOF {
    81  		t.Fatalf("unexpected error: %v", err)
    82  	}
    83  	expectedLines := []string{"foo", "bar", "baz"}
    84  	if !reflect.DeepEqual(gotLines, expectedLines) {
    85  		t.Log(len(gotLines))
    86  		t.Errorf("got %v, but expected %v", gotLines, expectedLines)
    87  	}
    88  }