oss.indeed.com/go/go-opine@v1.3.0/internal/printing/line_prefix_writer_test.go (about) 1 package printing 2 3 import ( 4 "bytes" 5 "testing" 6 7 "github.com/stretchr/testify/require" 8 ) 9 10 func Test_LinePrefixWriter_Write(t *testing.T) { 11 toWrite := []byte("Lorem ipsum dolor sit amet, consectetur adipiscing elit.\nSed nisi lorem, cursus ac sagittis et, tincidunt sed mi.\nCurabitur vel nisi nec velit fermentum rhoncus.\n") 12 var b bytes.Buffer 13 tested := NewLinePrefixWriter(&b, "TEST ") 14 n, err := tested.Write(toWrite) 15 require.NoError(t, err) 16 require.Equal(t, len(toWrite), n) 17 require.Equal(t, "TEST Lorem ipsum dolor sit amet, consectetur adipiscing elit.\nTEST Sed nisi lorem, cursus ac sagittis et, tincidunt sed mi.\nTEST Curabitur vel nisi nec velit fermentum rhoncus.\n", b.String()) 18 } 19 20 func Test_LinePrefixWriter_Write_noNewlineAtEnd(t *testing.T) { 21 toWrite := []byte("Lorem ipsum\ndolor sit amet\nconsectetur adipiscing") 22 var b bytes.Buffer 23 tested := NewLinePrefixWriter(&b, "TEST ") 24 n, err := tested.Write(toWrite) 25 require.NoError(t, err) 26 require.Equal(t, len(toWrite), n) 27 require.Equal(t, "TEST Lorem ipsum\nTEST dolor sit amet\nTEST consectetur adipiscing", b.String()) 28 } 29 30 func Test_LinePrefixWriter_Write_continueMidLine(t *testing.T) { 31 toWrite1 := []byte("Lorem ipsum dolor ") 32 toWrite2 := []byte("sit amet") 33 var b bytes.Buffer 34 tested := NewLinePrefixWriter(&b, "TEST ") 35 n, err := tested.Write(toWrite1) 36 require.NoError(t, err) 37 require.Equal(t, len(toWrite1), n) 38 require.Equal(t, "TEST Lorem ipsum dolor ", b.String()) 39 n, err = tested.Write(toWrite2) 40 require.NoError(t, err) 41 require.Equal(t, len(toWrite2), n) 42 require.Equal(t, "TEST Lorem ipsum dolor sit amet", b.String()) 43 } 44 45 func Test_LinePrefixWriter_Write_continueMidLineWithNewline(t *testing.T) { 46 toWrite1 := []byte("Lorem ipsum dolor") 47 toWrite2 := []byte("\nsit amet") 48 var b bytes.Buffer 49 tested := NewLinePrefixWriter(&b, "TEST ") 50 n, err := tested.Write(toWrite1) 51 require.NoError(t, err) 52 require.Equal(t, len(toWrite1), n) 53 require.Equal(t, "TEST Lorem ipsum dolor", b.String()) 54 n, err = tested.Write(toWrite2) 55 require.NoError(t, err) 56 require.Equal(t, len(toWrite2), n) 57 require.Equal(t, "TEST Lorem ipsum dolor\nTEST sit amet", b.String()) 58 } 59 60 func Test_LinePrefixWriter_Write_continueNextLine(t *testing.T) { 61 toWrite1 := []byte("Lorem ipsum dolor\n") 62 toWrite2 := []byte("sit amet") 63 var b bytes.Buffer 64 tested := NewLinePrefixWriter(&b, "TEST ") 65 n, err := tested.Write(toWrite1) 66 require.NoError(t, err) 67 require.Equal(t, len(toWrite1), n) 68 require.Equal(t, "TEST Lorem ipsum dolor\n", b.String()) 69 n, err = tested.Write(toWrite2) 70 require.NoError(t, err) 71 require.Equal(t, len(toWrite2), n) 72 require.Equal(t, "TEST Lorem ipsum dolor\nTEST sit amet", b.String()) 73 } 74 75 func Test_LinePrefixWriter_Write_errorInPrefix(t *testing.T) { 76 toWrite1 := []byte("NEVER WRITTEN") 77 tested := NewLinePrefixWriter(errorWriter{n: 5}, "12345|<- ERROR HERE") 78 n, err := tested.Write(toWrite1) 79 require.Error(t, err) 80 require.Zero(t, n) 81 } 82 83 func Test_LinePrefixWriter_Write_errorAfterPrefix(t *testing.T) { 84 toWrite1 := []byte("6789 |<- ERROR HERE") 85 tested := NewLinePrefixWriter(errorWriter{n: 9}, "12345") 86 n, err := tested.Write(toWrite1) 87 require.Error(t, err) 88 require.Equal(t, 4, n) // Prefix is not counted as written bytes. 89 }