1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
// 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))
}
}
|