82 lines
1.8 KiB
Go
82 lines
1.8 KiB
Go
// Copyright 2014-2017 Ulrich Kunitz. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package xz
|
|
|
|
import (
|
|
"bytes"
|
|
"io"
|
|
"io/ioutil"
|
|
"os"
|
|
"testing"
|
|
)
|
|
|
|
func TestReaderSimple(t *testing.T) {
|
|
const file = "fox.xz"
|
|
xz, err := os.Open(file)
|
|
if err != nil {
|
|
t.Fatalf("os.Open(%q) error %s", file, err)
|
|
}
|
|
r, err := NewReader(xz)
|
|
if err != nil {
|
|
t.Fatalf("NewReader error %s", err)
|
|
}
|
|
var buf bytes.Buffer
|
|
if _, err = io.Copy(&buf, r); err != nil {
|
|
t.Fatalf("io.Copy error %s", err)
|
|
}
|
|
}
|
|
|
|
func TestReaderSingleStream(t *testing.T) {
|
|
data, err := ioutil.ReadFile("fox.xz")
|
|
if err != nil {
|
|
t.Fatalf("ReadFile error %s", err)
|
|
}
|
|
xz := bytes.NewReader(data)
|
|
rc := ReaderConfig{SingleStream: true}
|
|
r, err := rc.NewReader(xz)
|
|
if err != nil {
|
|
t.Fatalf("NewReader error %s", err)
|
|
}
|
|
var buf bytes.Buffer
|
|
if _, err = io.Copy(&buf, r); err != nil {
|
|
t.Fatalf("io.Copy error %s", err)
|
|
}
|
|
buf.Reset()
|
|
data = append(data, 0)
|
|
xz = bytes.NewReader(data)
|
|
r, err = rc.NewReader(xz)
|
|
if err != nil {
|
|
t.Fatalf("NewReader error %s", err)
|
|
}
|
|
if _, err = io.Copy(&buf, r); err != errUnexpectedData {
|
|
t.Fatalf("io.Copy returned %v; want %v", err, errUnexpectedData)
|
|
}
|
|
}
|
|
|
|
func TestReaaderMultipleStreams(t *testing.T) {
|
|
data, err := ioutil.ReadFile("fox.xz")
|
|
if err != nil {
|
|
t.Fatalf("ReadFile error %s", err)
|
|
}
|
|
m := make([]byte, 0, 4*len(data)+4*4)
|
|
m = append(m, data...)
|
|
m = append(m, data...)
|
|
m = append(m, 0, 0, 0, 0)
|
|
m = append(m, data...)
|
|
m = append(m, 0, 0, 0, 0)
|
|
m = append(m, 0, 0, 0, 0)
|
|
m = append(m, data...)
|
|
m = append(m, 0, 0, 0, 0)
|
|
xz := bytes.NewReader(m)
|
|
r, err := NewReader(xz)
|
|
if err != nil {
|
|
t.Fatalf("NewReader error %s", err)
|
|
}
|
|
var buf bytes.Buffer
|
|
if _, err = io.Copy(&buf, r); err != nil {
|
|
t.Fatalf("io.Copy error %s", err)
|
|
}
|
|
}
|