reader_test.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package lz4_test
  2. import (
  3. "bytes"
  4. "io"
  5. "io/ioutil"
  6. "os"
  7. "reflect"
  8. "strings"
  9. "testing"
  10. "github.com/pierrec/lz4"
  11. )
  12. func TestReader(t *testing.T) {
  13. goldenFiles := []string{
  14. "testdata/e.txt.lz4",
  15. "testdata/gettysburg.txt.lz4",
  16. "testdata/Mark.Twain-Tom.Sawyer.txt.lz4",
  17. "testdata/Mark.Twain-Tom.Sawyer_long.txt.lz4",
  18. "testdata/pg1661.txt.lz4",
  19. "testdata/pi.txt.lz4",
  20. "testdata/random.data.lz4",
  21. "testdata/repeat.txt.lz4",
  22. }
  23. for _, fname := range goldenFiles {
  24. t.Run(fname, func(t *testing.T) {
  25. fname := fname
  26. t.Parallel()
  27. f, err := os.Open(fname)
  28. if err != nil {
  29. t.Fatal(err)
  30. }
  31. defer f.Close()
  32. rawfile := strings.TrimSuffix(fname, ".lz4")
  33. raw, err := ioutil.ReadFile(rawfile)
  34. if err != nil {
  35. t.Fatal(err)
  36. }
  37. var out bytes.Buffer
  38. zr := lz4.NewReader(f)
  39. n, err := io.Copy(&out, zr)
  40. if err != nil {
  41. t.Fatal(err)
  42. }
  43. if got, want := int(n), len(raw); got != want {
  44. t.Errorf("invalid sizes: got %d; want %d", got, want)
  45. }
  46. if got, want := out.Bytes(), raw; !reflect.DeepEqual(got, want) {
  47. t.Fatal("uncompressed data does not match original")
  48. }
  49. })
  50. }
  51. }