you should be able to unconditionally compare the output without doing the length check
On Tuesday, October 20, 2020 at 8:51:56 AM UTC+2 amits...@gmail.com wrote: > > On 20 Oct 2020, at 4:13 pm, Tamás Gulácsi <tgula...@gmail.com> wrote: > > Use bytes.Buffer or strings.Builder directly - no need for the > bufio.Writer. > bufio.Writer only speeds up writing by calling the underlying Writer less, > with bigger slices. > Here you Write into a memory, just as bufio.Writer. > > Also, you can save some allocations by creating the buffer once outside of > the loop, > and Reset() it in each cycle before calling handleCommand. > > > Thank you, appreciate the suggestions. > > > > amits...@gmail.com a következőt írta (2020. október 20., kedd, 6:03:31 > UTC+2): > >> Hi all, Consider the following test configuration: >> >> >> func TestHandleCommand(t *testing.T) { >> >> type expectedResult struct { >> output string >> err error >> } >> type testConfig struct { >> args []string >> result expectedResult >> } >> >> testConfigs := []testConfig{ >> testConfig{ >> args: []string{"-h"}, >> result: expectedResult{ >> err: nil, >> output: `Expected output`, >> }, >> }, >> } >> >> Then, I do this: >> >> >> for _, tc := range testConfigs { >> byteBuf := new(bytes.Buffer) >> w := bufio.NewWriter(byteBuf) >> >> err := handleCommand(w, tc.args) >> if tc.result.err == nil && err != nil { >> t.Errorf("Expected nil error, got %v", err) >> } >> >> if tc.result.err != nil && err.Error() != tc.result.err.Error() { >> t.Errorf("Expected error %v, got %v", tc.result.err, err) >> } >> >> if len(tc.result.output) != 0 { >> w.Flush() >> gotOutput := byteBuf.String() >> if tc.result.output != gotOutput { >> t.Errorf("Expected output to be: %v, Got: %v", >> tc.result.output, gotOutput) >> } >> } >> } >> } >> >> The above pattern works for me since the function may return an error >> and/or it may have something it writes to the provided writer, w. >> >> Is there a more concise way to write this? >> >> >> >> Thanks, >> Amit. >> > > -- > You received this message because you are subscribed to the Google Groups > "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to golang-nuts...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/golang-nuts/2759fea4-a3d6-42ee-b3e4-2c0ac208f2b9n%40googlegroups.com > > <https://groups.google.com/d/msgid/golang-nuts/2759fea4-a3d6-42ee-b3e4-2c0ac208f2b9n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/a7383aa7-8d16-4697-89bf-7f9d57752f08n%40googlegroups.com.