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:]) } } }
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...) }