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 }