blob: 4e05788494f0ebec4be5b8bba37931e33491a202 [file]
// Copyright (c) 2019+ Klaus Post. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package s2
import (
"bytes"
"io"
"testing"
)
func TestLeadingSkippableBlock(t *testing.T) {
var buf bytes.Buffer
w := NewWriter(&buf)
if err := w.AddSkippableBlock(0x80, []byte("skippable block")); err != nil {
t.Fatalf("w.AddSkippableBlock: %v", err)
}
if _, err := w.Write([]byte("some data")); err != nil {
t.Fatalf("w.Write: %v", err)
}
if err := w.Close(); err != nil {
t.Fatalf("w.Close: %v", err)
}
r := NewReader(&buf)
var sb []byte
r.SkippableCB(0x80, func(sr io.Reader) error {
var err error
sb, err = io.ReadAll(sr)
return err
})
if _, err := r.Read([]byte{}); err != nil {
t.Errorf("empty read failed: %v", err)
}
if !bytes.Equal(sb, []byte("skippable block")) {
t.Errorf("didn't get correct data from skippable block: %q", string(sb))
}
data, err := io.ReadAll(r)
if err != nil {
t.Fatalf("r.Read: %v", err)
}
if !bytes.Equal(data, []byte("some data")) {
t.Errorf("didn't get correct compressed data: %q", string(data))
}
}