Files
gortsplib/pkg/format/rtpklv/decoder_test.go
Yaroslav Molochko e02c447868 support KLV tracks (#808)
Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
2025-07-06 19:56:52 +02:00

78 lines
1.3 KiB
Go

package rtpklv
import (
"errors"
"testing"
"github.com/pion/rtp"
"github.com/stretchr/testify/require"
)
func TestDecode(t *testing.T) {
for _, ca := range cases {
t.Run(ca.name, func(t *testing.T) {
d := &Decoder{}
err := d.Init()
require.NoError(t, err)
var klvUnit [][]byte
for _, pkt := range ca.pkts {
clone := pkt.Clone()
addUnits, err := d.Decode(pkt)
// test input integrity
require.Equal(t, clone, pkt)
if errors.Is(err, ErrMorePacketsNeeded) {
continue
}
require.NoError(t, err)
klvUnit = append(klvUnit, addUnits...)
}
require.Equal(t, ca.klvUnit, klvUnit)
})
}
}
func FuzzDecoder(f *testing.F) {
f.Fuzz(func(t *testing.T, a []byte, am bool, b []byte, bm bool) {
d := &Decoder{}
err := d.Init()
require.NoError(t, err)
klvUnit, err := d.Decode(&rtp.Packet{
Header: rtp.Header{
Marker: am,
SequenceNumber: 17645,
},
Payload: a,
})
if errors.Is(err, ErrMorePacketsNeeded) {
klvUnit, err = d.Decode(&rtp.Packet{
Header: rtp.Header{
Marker: bm,
SequenceNumber: 17646,
},
Payload: b,
})
}
if err == nil {
if len(klvUnit) == 0 {
t.Errorf("should not happen")
}
for _, nalu := range klvUnit {
if len(nalu) == 0 {
t.Errorf("should not happen")
}
}
}
})
}