mirror of
https://github.com/aler9/gortsplib
synced 2025-10-06 15:46:51 +08:00
116 lines
1.6 KiB
Go
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)
|
|
})
|
|
}
|
|
}
|