package streams 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) }) }