Exemplo n.º 1
0
func (*multiReaderSeekerSuite) TestSeekCur(c *gc.C) {
	parts := []string{
		"one",
		"two",
		"three",
		"four",
	}
	all := strings.Join(parts, "")
	for off := int64(0); off <= int64(len(all)); off++ {
		for newOff := int64(0); newOff <= int64(len(all)); newOff++ {
			readers := make([]io.ReadSeeker, len(parts))
			for i, part := range parts {
				readers[i] = strings.NewReader(part)
			}
			r := utils.NewMultiReaderSeeker(readers...)
			gotOff, err := r.Seek(off, 0)
			c.Assert(gotOff, gc.Equals, off)
			c.Assert(err, jc.ErrorIsNil)

			diff := newOff - off
			gotNewOff, err := r.Seek(diff, 1)
			c.Assert(err, gc.IsNil)
			c.Assert(gotNewOff, gc.Equals, newOff)

			data, err := ioutil.ReadAll(r)
			c.Assert(err, gc.IsNil)
			c.Assert(string(data), gc.Equals, all[newOff:])
		}
	}
}
Exemplo n.º 2
0
func newMultiStringReader(parts []string) io.ReadSeeker {
	readers := make([]io.ReadSeeker, len(parts))
	for i, part := range parts {
		readers[i] = strings.NewReader(part)
	}
	return utils.NewMultiReaderSeeker(readers...)
}