Files
gortsplib/internal/base64streamreader/reader_test.go
2025-09-15 19:00:50 +02:00

116 lines
1.6 KiB
Go

package base64streamreader
import (
"io"
"testing"
"github.com/stretchr/testify/require"
)
type dummyReader struct {
input []string
pos int
}
func (r *dummyReader) Read(p []byte) (int, error) {
if r.pos >= len(r.input) {
return 0, io.EOF
}
n := copy(p, r.input[r.pos])
r.pos++
return n, nil
}
func TestReader(t *testing.T) {
for _, ca := range []struct {
name string
input []string
output []string
}{
{
"standard",
[]string{
"dGVzdGluZyAxIDIgMw==",
},
[]string{"testing 1 2 3"},
},
{
"concatenated",
[]string{
"dGVzdGluZyAxIDIgMw==b3RoZXIgdGVzdA==",
},
[]string{
"testing 1 2 3",
"other test",
},
},
{
"splitted evenly",
[]string{
"dGVz",
"dGluZyAxIDIgMw==",
},
[]string{
"tes",
"ting 1 2 3",
},
},
{
"splitted unevenly",
[]string{
"dGV",
"zdGluZyAxIDIgMw==",
},
[]string{
"testing 1 2 3",
},
},
{
"concatenated and splitted evenly",
[]string{
"dGVzdGluZyAxIDIgMw==b3RoZXIgdGVz",
"dA==",
},
[]string{
"testing 1 2 3",
"other tes",
"t",
},
},
{
"concatenated and splitted unevenly",
[]string{
"dGVzdGluZyAxIDIgMw==b3RoZXIgdGVzdA=",
"=",
},
[]string{
"testing 1 2 3",
"other tes",
"t",
},
},
} {
t.Run(ca.name, func(t *testing.T) {
dr := &dummyReader{input: ca.input}
r := New(dr)
var output []string
for {
buf := make([]byte, 512)
n, err := r.Read(buf)
if err == io.EOF {
break
}
require.NoError(t, err)
output = append(output, string(buf[:n]))
}
require.Equal(t, ca.output, output)
})
}
}