uplink/internal/metadata_injector_test.go

62 lines
1.3 KiB
Go

package internal
import (
"bytes"
"testing"
. "github.com/smartystreets/goconvey/convey"
)
func Test_MetadataInjector(t *testing.T) {
reader := bytes.NewReader(make([]byte, 1024))
buffer := make([]byte, 128)
Convey("MetadataInjector", t, func() {
mi := NewMetadataInjector(reader, 192)
// 128
// 64
// [metadata]
// 128
// 64
// [metadata]
n, err := mi.Read(buffer)
So(err, ShouldBeNil)
So(n, ShouldEqual, 128)
n, err = mi.Read(buffer)
So(err, ShouldBeNil)
So(n, ShouldEqual, 64)
n, err = mi.Read(buffer)
So(err, ShouldBeNil)
So(n, ShouldEqual, 1)
So(buffer[0], ShouldEqual, 0) // no metadata => zero length!
mi.Metadata = map[string]string{
"StreamTitle": "Testing",
}
n, err = mi.Read(buffer)
So(err, ShouldBeNil)
So(n, ShouldEqual, 128)
n, err = mi.Read(buffer)
So(err, ShouldBeNil)
So(n, ShouldEqual, 64)
n, err = mi.Read(buffer)
So(err, ShouldBeNil)
So(n, ShouldEqual, 1+32)
So(buffer[0], ShouldEqual, 2) // "StreamTitle='Testing';" => 22 bytes => quantized to 2 * 16 bytes
So(string(buffer[1:23]), ShouldEqual, "StreamTitle='Testing';")
So(buffer[1:23], ShouldResemble, []byte("StreamTitle='Testing';"))
So(buffer[24:32], ShouldResemble, make([]byte, 8)) // 8 zeroes
n, err = mi.Read(buffer)
So(err, ShouldBeNil)
So(n, ShouldEqual, 128)
})
}