/* NAME MpegTs.go - provides a data structure intended to encapsulate the properties of an MpegTs packet. DESCRIPTION See Readme.md AUTHOR Saxon Nelson-Milton LICENSE MpegTs.go is Copyright (C) 2017 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 along with revid in gpl.txt. If not, see http://www.gnu.org/licenses. */ package pes import ( "testing" ) const ( dataLength = 3 // bytes ) func TestPesToByteSlice(t *testing.T) { pesPkt := PESPacket{ StreamID: 0xE0, // StreamID PDI: byte(2), PTS: 100000, HeaderLength: byte(10), Stuff: []byte{0xFF, 0xFF}, Data: []byte{0xEA, 0x4B, 0x12}, } pesExpectedOutput := []byte{ 0x00, // packet start code prefix byte 1 0x00, // packet start code prefix byte 2 0x01, // packet start code prefix byte 3 0xE0, // stream ID 0x00, // PES Packet length byte 1 0x00, // PES packet length byte 2 0x80, // Marker bits,ScramblingControl, Priority, DAI, Copyright, Original 0x80, // PDI, ESCR, ESRate, DSMTrickMode, ACI, CRC, Ext byte(10), // header length 0x21, // PCR byte 1 0x00, // pcr byte 2 0x07, // pcr byte 3 0x0D, // pcr byte 4 0x41, // pcr byte 5 0xFF, // Stuffing byte 1 0xFF, // stuffing byte 3 0xEA, // data byte 1 0x4B, // data byte 2 0x12, // data byte 3 } pesPktAsByteSlice := pesPkt.ToByteSlice() for ii := range pesPktAsByteSlice { if pesPktAsByteSlice[ii] != pesExpectedOutput[ii] { t.Errorf("Conversion to byte slice bad! Byte: %v Wanted: %v Got: %v", ii, pesExpectedOutput[ii], pesPktAsByteSlice[ii]) } } }