github.com/meulengracht/snapd@v0.0.0-20210719210640-8bde69bcc84e/strutil/limbuffer_test.go (about) 1 // -*- Mode: Go; indent-tabs-mode: t -*- 2 3 /* 4 * Copyright (C) 2018 Canonical Ltd 5 * 6 * This program is free software: you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License version 3 as 8 * published by the Free Software Foundation. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program. If not, see <http://www.gnu.org/licenses/>. 17 * 18 */ 19 20 package strutil_test 21 22 import ( 23 . "gopkg.in/check.v1" 24 25 "github.com/snapcore/snapd/strutil" 26 ) 27 28 type limitedBufferSuite struct{} 29 30 var _ = Suite(&limitedBufferSuite{}) 31 32 func (s *limitedBufferSuite) TestLimitedBuffer(c *C) { 33 w := strutil.NewLimitedBuffer(100, 6) 34 35 data := []byte{'a'} 36 n, err := w.Write(data) 37 c.Assert(err, IsNil) 38 c.Assert(n, Equals, 1) 39 c.Assert(w.Bytes(), DeepEquals, []byte{'a'}) 40 41 data = []byte("bcde") 42 n, err = w.Write(data) 43 c.Assert(err, IsNil) 44 c.Assert(n, Equals, 4) 45 46 n, err = w.Write([]byte("xyz")) 47 c.Assert(err, IsNil) 48 c.Assert(w.Bytes(), DeepEquals, []byte("cdexyz")) 49 c.Assert(n, Equals, 3) 50 51 n, err = w.Write([]byte("12")) 52 c.Assert(err, IsNil) 53 c.Assert(w.Bytes(), DeepEquals, []byte("exyz12")) 54 c.Assert(n, Equals, 2) 55 56 // eventually 2 times the size and this triggers the truncate in Write 57 n, err = w.Write([]byte("abcd")) 58 c.Assert(err, IsNil) 59 c.Assert(w.Bytes(), DeepEquals, []byte("12abcd")) 60 c.Assert(n, Equals, 4) 61 62 // more than maxBytes in a single write 63 n, err = w.Write([]byte("abcdefghijklmnopqrstuvwxyz")) 64 c.Assert(err, IsNil) 65 c.Assert(w.Bytes(), DeepEquals, []byte("uvwxyz")) 66 c.Assert(n, Equals, 26) 67 }