github.com/billybanfield/evergreen@v0.0.0-20170525200750-eeee692790f7/util/capped_writer_test.go (about)

     1  package util
     2  
     3  import (
     4  	"bytes"
     5  	"testing"
     6  
     7  	. "github.com/smartystreets/goconvey/convey"
     8  )
     9  
    10  func TestCappedWriter(t *testing.T) {
    11  	Convey("With a new CappedWriter with a max of 10 bytes", t, func() {
    12  		cw := CappedWriter{
    13  			Buffer:   &bytes.Buffer{},
    14  			MaxBytes: 10,
    15  		}
    16  
    17  		Convey("a write of size 8 should succeed", func() {
    18  			n, err := cw.Write([]byte("01234567"))
    19  			So(n, ShouldEqual, 8)
    20  			So(err, ShouldBeNil)
    21  			So(cw.IsFull(), ShouldBeFalse)
    22  			Convey("and a subsequent write of 2 should succeed", func() {
    23  				n, err := cw.Write([]byte("89"))
    24  				So(n, ShouldEqual, 2)
    25  				So(err, ShouldBeNil)
    26  				So(cw.String(), ShouldEqual, "0123456789")
    27  			})
    28  			Convey("but a write of 3 should fail", func() {
    29  				n, err := cw.Write([]byte("89A"))
    30  				So(err, ShouldEqual, ErrBufferFull)
    31  				Convey("but still write 2/3", func() {
    32  					So(n, ShouldEqual, 2)
    33  					So(cw.String(), ShouldEqual, "0123456789")
    34  				})
    35  			})
    36  		})
    37  		Convey("a write of size 10 should succeed", func() {
    38  			n, err := cw.Write([]byte("0123456789"))
    39  			So(n, ShouldEqual, 10)
    40  			So(err, ShouldBeNil)
    41  		})
    42  		Convey("a write of size 12 should error", func() {
    43  			n, err := cw.Write([]byte("0123456789AB"))
    44  			So(err, ShouldEqual, ErrBufferFull)
    45  			Convey("but still write 10/12", func() {
    46  				So(n, ShouldEqual, 10)
    47  				So(cw.String(), ShouldEqual, "0123456789")
    48  				So(cw.IsFull(), ShouldBeTrue)
    49  			})
    50  		})
    51  	})
    52  }