@@ -49,3 +49,38 @@ func TestPacketPool(t *testing.T) {
4949 ps = b .dumpUnlocked ()
5050 assert .Len (t , ps , 0 )
5151}
52+
53+ func TestPacketPoolWithRarePackets (t * testing.T ) {
54+ payloadDVBTeletext := hexToBytes (`000001bd00b2848024293c972af5ffffffffffffffffffffffffffffffff
55+ ffffffffffffffffffffffffffffff10032cf5e4a8a80b0ba80ba80b2692
56+ 040404040404040404040404040404040404040404040404040404040404
57+ 0404032cd5e4a8a85757a8a8a80b26a80404040404040404040404040404
58+ 040404040404040404040404040404040404ff2cffffffffffffffffffff
59+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
60+ ffffffff` )
61+ b := newPacketPool (nil )
62+ ps := b .addUnlocked (& Packet {Header : PacketHeader {ContinuityCounter : 0 , HasPayload : true , PayloadUnitStartIndicator : true , PID : 1004 }, Payload : payloadDVBTeletext })
63+ assert .Len (t , ps , 1 )
64+ ps = b .addUnlocked (& Packet {Header : PacketHeader {ContinuityCounter : 1 , HasPayload : true , PayloadUnitStartIndicator : true , PID : 1004 }, Payload : payloadDVBTeletext })
65+ assert .Len (t , ps , 1 )
66+ ps = b .addUnlocked (& Packet {Header : PacketHeader {ContinuityCounter : 2 , HasPayload : true , PayloadUnitStartIndicator : true , PID : 1004 }, Payload : payloadDVBTeletext })
67+ assert .Len (t , ps , 1 )
68+ ps = b .addUnlocked (& Packet {Header : PacketHeader {ContinuityCounter : 3 , HasPayload : true , PayloadUnitStartIndicator : true , PID : 1004 }, Payload : payloadDVBTeletext })
69+ assert .Len (t , ps , 1 )
70+ ps = b .addUnlocked (& Packet {Header : PacketHeader {ContinuityCounter : 3 , HasPayload : true , PayloadUnitStartIndicator : true , PID : 1004 }, Payload : payloadDVBTeletext })
71+ assert .Len (t , ps , 0 )
72+ ps = b .addUnlocked (& Packet {Header : PacketHeader {ContinuityCounter : 4 , HasPayload : true , PayloadUnitStartIndicator : true , PID : 1004 }, Payload : payloadDVBTeletext })
73+ assert .Len (t , ps , 1 )
74+ ps = b .addUnlocked (& Packet {Header : PacketHeader {ContinuityCounter : 6 , HasPayload : true , PayloadUnitStartIndicator : true , PID : 1004 }, Payload : payloadDVBTeletext })
75+ assert .Len (t , ps , 0 )
76+ ps = b .addUnlocked (& Packet {Header : PacketHeader {ContinuityCounter : 7 , HasPayload : true , PayloadUnitStartIndicator : true , PID : 1004 }, Payload : payloadDVBTeletext })
77+ assert .Len (t , ps , 1 )
78+ ps = b .addUnlocked (& Packet {Header : PacketHeader {ContinuityCounter : 7 , HasPayload : true , PayloadUnitStartIndicator : true , PID : 1004 }, Payload : payloadDVBTeletext })
79+ assert .Len (t , ps , 0 )
80+ ps = b .addUnlocked (& Packet {Header : PacketHeader {ContinuityCounter : 9 , HasPayload : true , PayloadUnitStartIndicator : true , PID : 1004 }, Payload : payloadDVBTeletext })
81+ assert .Len (t , ps , 0 )
82+ ps = b .addUnlocked (& Packet {Header : PacketHeader {ContinuityCounter : 10 , HasPayload : true , PayloadUnitStartIndicator : true , PID : 1004 }, Payload : payloadDVBTeletext })
83+ assert .Len (t , ps , 1 )
84+ ps = b .dumpUnlocked ()
85+ assert .Len (t , ps , 0 )
86+ }
0 commit comments