func Test363(t *testing.T) { repetitions := 10000 iter := 0 expect := "fmt/363" err := setup() if err != nil { t.Error(err) } segy := func(l int) []byte { b := make([]byte, l) for i := range b { if i > 21 { break } b[i] = 64 } copy(b[l-9:], []byte{01, 00, 00, 00, 01, 00, 00, 01, 00}) return b } se := segy(3226) for i := 0; i < repetitions; i++ { buf := bytes.NewReader(se) c, _ := s.Identify("test.seg", buf) for i := range c { iter++ if i.String() != expect { sbuf := s.Buffer() equal := true if !bytes.Equal(se, siegreader.Bytes(sbuf)) { equal = false } t.Errorf("First buffer on %d iteration: expecting %s, got %s, buffer equality test is %v", iter, expect, i, equal) } } } iter = 0 se = segy(3626) for i := 0; i < repetitions; i++ { buf := bytes.NewReader(se) c, _ := s.Identify("test2.seg", buf) for i := range c { iter++ if i.String() != expect { sbuf := s.Buffer() equal := true if !bytes.Equal(se, siegreader.Bytes(sbuf)) { equal = false } t.Errorf("Second buffer on %d iteration: expecting %s, got %s, buffer equality test is %v", iter, expect, i, equal) } } } }
func identifyRdr(w writer, s *siegfried.Siegfried, r io.Reader, path string, sz int64, mod string) { c, err := s.Identify(path, r) if c == nil { w.writeFile(path, sz, mod, nil, fmt.Errorf("failed to identify %s, got: %v", path, err), nil) return } var b siegreader.Buffer var cs []byte if checksum != nil { b = s.Buffer() checksum.Write(siegreader.Bytes(b)) // ignore error returned here cs = checksum.Sum(nil) checksum.Reset() } a := w.writeFile(path, sz, mod, cs, err, idChan(c)) if !*archive || a == config.None { return } var d decompressor if b == nil { b = s.Buffer() } switch a { case config.Zip: d, err = newZip(siegreader.ReaderFrom(b), path, sz) case config.Gzip: d, err = newGzip(b, path) case config.Tar: d, err = newTar(siegreader.ReaderFrom(b), path) } if err != nil { w.writeFile(path, sz, mod, nil, fmt.Errorf("failed to decompress %s, got: %v", path, err), nil) return } for err = d.next(); err == nil; err = d.next() { if *droido { for _, v := range d.dirs() { w.writeFile(v, -1, "", nil, nil, nil) } } identifyRdr(w, s, d.reader(), d.path(), d.size(), d.mod()) } }