github.com/Finschia/finschia-sdk@v0.48.1/client/input/input_test.go (about) 1 package input 2 3 import ( 4 "bufio" 5 "errors" 6 "io" 7 "testing" 8 9 "github.com/stretchr/testify/require" 10 ) 11 12 type fakeReader struct { 13 fnc func(p []byte) (int, error) 14 } 15 16 func (f fakeReader) Read(p []byte) (int, error) { 17 return f.fnc(p) 18 } 19 20 var _ io.Reader = fakeReader{} 21 22 func TestReadLineFromBuf(t *testing.T) { 23 var fr fakeReader 24 25 t.Run("it correctly returns the password when reader returns EOF", func(t *testing.T) { 26 fr.fnc = func(p []byte) (int, error) { 27 return copy(p, []byte("hello")), io.EOF 28 } 29 buf := bufio.NewReader(fr) 30 31 pass, err := readLineFromBuf(buf) 32 require.NoError(t, err) 33 require.Equal(t, "hello", pass) 34 }) 35 36 t.Run("it returns EOF if reader has been exhausted", func(t *testing.T) { 37 fr.fnc = func(p []byte) (int, error) { 38 return 0, io.EOF 39 } 40 buf := bufio.NewReader(fr) 41 42 _, err := readLineFromBuf(buf) 43 require.ErrorIs(t, err, io.EOF) 44 }) 45 46 t.Run("it returns the error if it's not EOF regardles if it read something or not", func(t *testing.T) { 47 expectedErr := errors.New("oh no") 48 fr.fnc = func(p []byte) (int, error) { 49 return copy(p, []byte("hello")), expectedErr 50 } 51 buf := bufio.NewReader(fr) 52 53 _, err := readLineFromBuf(buf) 54 require.ErrorIs(t, err, expectedErr) 55 }) 56 }