1package ui_test 2 3import ( 4 "bytes" 5 "fmt" 6 "io" 7 8 . "github.com/onsi/ginkgo" 9 . "github.com/onsi/gomega" 10 11 . "github.com/cloudfoundry/bosh-cli/ui" 12 boshlog "github.com/cloudfoundry/bosh-utils/logger" 13) 14 15var _ = Describe("ComboWriter", func() { 16 var ( 17 outBuffer *bytes.Buffer 18 errBuffer *bytes.Buffer 19 ui UI 20 w io.Writer 21 ) 22 23 BeforeEach(func() { 24 outBuffer = bytes.NewBufferString("") 25 errBuffer = bytes.NewBufferString("") 26 logger := boshlog.NewLogger(boshlog.LevelNone) 27 ui = NewWriterUI(outBuffer, errBuffer, logger) 28 w = NewComboWriter(ui).Writer("prefix: ") 29 }) 30 31 Describe("Writer.Write", func() { 32 type Example struct { 33 Ins []string 34 Out string 35 } 36 37 examples := []Example{ 38 {Ins: []string{""}, Out: ""}, 39 {Ins: []string{"", ""}, Out: ""}, 40 {Ins: []string{"\n"}, Out: "prefix: \n"}, 41 {Ins: []string{"", "\n"}, Out: "prefix: \n"}, 42 {Ins: []string{"\n\n", "\n"}, Out: "prefix: \nprefix: \nprefix: \n"}, 43 {Ins: []string{"piece1"}, Out: "prefix: piece1"}, 44 {Ins: []string{"piece1", "piece2"}, Out: "prefix: piece1piece2"}, 45 {Ins: []string{"piece1", "piece2\n"}, Out: "prefix: piece1piece2\n"}, 46 {Ins: []string{"\npiece1", "piece2"}, Out: "prefix: \nprefix: piece1piece2"}, 47 {Ins: []string{"piece1", "\npiece2"}, Out: "prefix: piece1\nprefix: piece2"}, 48 {Ins: []string{"piece1\n", "piece2"}, Out: "prefix: piece1\nprefix: piece2"}, 49 } 50 51 for i, ex := range examples { 52 ex := ex 53 54 It(fmt.Sprintf("prints correctly '%d'", i), func() { 55 for _, in := range ex.Ins { 56 w.Write([]byte(in)) 57 } 58 Expect(outBuffer.String()).To(Equal(ex.Out)) 59 }) 60 } 61 }) 62}) 63