/* NAME rtcp_test.go DESCRIPTION rtcp_test.go contains testing utilities for functionality provided in rtcp_test.go. AUTHORS Saxon A. Nelson-Milton <saxon@ausocean.org> LICENSE This is Copyright (C) 2019 the Australian Ocean Lab (AusOcean) It is free software: you can redistribute it and/or modify them under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License in gpl.txt. If not, see http://www.gnu.org/licenses. */ package rtcp import ( "bytes" "math" "testing" ) // TestReceiverReportBytes checks that we can correctly obtain a []byte of an // RTCP receiver report from the struct representation. func TestReceiverReportBytes(t *testing.T) { expect := []byte{ 0x81, 0xc9, 0x00, 0x07, 0xd6, 0xe0, 0x98, 0xda, 0x6f, 0xad, 0x40, 0xc6, 0x00, 0xff, 0xff, 0xff, 0x00, 0x01, 0x83, 0x08, 0x00, 0x00, 0x00, 0x20, 0xb9, 0xe1, 0x25, 0x2a, 0x00, 0x00, 0x2b, 0xf9, } report := ReceiverReport{ Header: Header{ Version: 2, Padding: false, ReportCount: 1, Type: typeReceiverReport, }, SenderSSRC: 3605043418, Blocks: []ReportBlock{ ReportBlock{ SourceIdentifier: 1873625286, FractionLost: 0, PacketsLost: math.MaxUint32, HighestSequence: 99080, Jitter: 32, SenderReportTs: 3118540074, SenderReportDelay: 11257, }, }, Extensions: nil, } got := report.Bytes(nil) if !bytes.Equal(got, expect) { t.Errorf("did not get expected result. \nGot: %v\nWant: %v\n", got, expect) } } // TestSourceDescriptionBytes checks that we can correctly obtain a []byte of an // RTCP source description from the struct representation. func TestSourceDescriptionBytes(t *testing.T) { expect := []byte{ 0x81, 0xca, 0x00, 0x04, 0xd6, 0xe0, 0x98, 0xda, 0x01, 0x08, 0x73, 0x61, 0x78, 0x6f, 0x6e, 0x2d, 0x70, 0x63, 0x00, 0x00, } description := Description{ Header: Header{ Version: 2, Padding: false, ReportCount: 1, Type: typeDescription, }, Chunks: []Chunk{ Chunk{ SSRC: 3605043418, Items: []SDESItem{ SDESItem{ Type: typeCName, Text: []byte("saxon-pc"), }, }, }, }, } got := description.Bytes(nil) if !bytes.Equal(got, expect) { t.Errorf("Did not get expected result.\nGot: %v\n Want: %v\n", got, expect) } }