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 }