Skip to content

Commit 24ebf98

Browse files
committed
improved test coverage
1 parent 8a11e86 commit 24ebf98

File tree

1 file changed

+192
-9
lines changed

1 file changed

+192
-9
lines changed

packet/adaptationfield_test.go

+192-9
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ SOFTWARE.
2525
package packet
2626

2727
import (
28+
"bytes"
2829
"testing"
2930
)
3031

@@ -43,15 +44,112 @@ func generatePacketAF(t *testing.T, AFString string) (*Packet, *AdaptationField)
4344
func TestDiscontinuity(t *testing.T) {
4445
_, a := generatePacketAF(t, "0180")
4546
if discontinuity, err := a.Discontinuity(); !discontinuity || err != nil {
46-
t.Errorf("failed to read discontinuity correctly.")
47+
t.Errorf("failed to read discontinuity correctly. expected false got true.")
4748
}
4849
_, a = generatePacketAF(t, "0190")
4950
if discontinuity, err := a.Discontinuity(); !discontinuity || err != nil {
50-
t.Errorf("failed to read discontinuity correctly.")
51+
t.Errorf("failed to read discontinuity correctly. expected true got false.")
5152
}
5253
_, a = generatePacketAF(t, "0170")
5354
if discontinuity, err := a.Discontinuity(); discontinuity || err != nil {
54-
t.Errorf("failed to read discontinuity correctly.")
55+
t.Errorf("failed to read discontinuity correctly. expected false got true.")
56+
}
57+
}
58+
59+
func TestSetDiscontinuity(t *testing.T) {
60+
target, _ := generatePacketAF(t, "0180")
61+
generated, a := generatePacketAF(t, "0100")
62+
a.SetDiscontinuity(true)
63+
if !Equal(generated, target) {
64+
t.Errorf("crafted packet:\n%X \ndoes not match expected packet:\n%X\nSetting the Discontinuity to true has failed.", *generated, *target)
65+
}
66+
target, _ = generatePacketAF(t, "0100")
67+
generated, a = generatePacketAF(t, "0180")
68+
a.SetDiscontinuity(false)
69+
if !Equal(generated, target) {
70+
t.Errorf("crafted packet:\n%X \ndoes not match expected packet:\n%X\nSetting the Discontinuity to false has failed.", *generated, *target)
71+
}
72+
}
73+
74+
func TestRandomAccess(t *testing.T) {
75+
_, a := generatePacketAF(t, "0140")
76+
if randomAccess, err := a.RandomAccess(); !randomAccess || err != nil {
77+
t.Errorf("failed to read RandomAccess correctly. expected true got false.")
78+
}
79+
_, a = generatePacketAF(t, "0130")
80+
if randomAccess, err := a.RandomAccess(); randomAccess || err != nil {
81+
t.Errorf("failed to read RandomAccess correctly. expected false got true.")
82+
}
83+
}
84+
85+
func TestSetRandomAccess(t *testing.T) {
86+
target, _ := generatePacketAF(t, "0140")
87+
generated, a := generatePacketAF(t, "0100")
88+
a.SetRandomAccess(true)
89+
if !Equal(generated, target) {
90+
t.Errorf("crafted packet:\n%X \ndoes not match expected packet:\n%X\nSetting the RandomAccess to true has failed.", *generated, *target)
91+
}
92+
target, _ = generatePacketAF(t, "0100")
93+
generated, a = generatePacketAF(t, "0140")
94+
a.SetRandomAccess(false)
95+
if !Equal(generated, target) {
96+
t.Errorf("crafted packet:\n%X \ndoes not match expected packet:\n%X\nSetting the RandomAccess to false has failed.", *generated, *target)
97+
}
98+
}
99+
100+
func TestElementaryStreamPriority(t *testing.T) {
101+
_, a := generatePacketAF(t, "0120")
102+
if esp, err := a.ElementaryStreamPriority(); !esp || err != nil {
103+
t.Errorf("failed to read ElementaryStreamPriority correctly. expected true got false.")
104+
}
105+
_, a = generatePacketAF(t, "0110")
106+
if esp, err := a.ElementaryStreamPriority(); esp || err != nil {
107+
t.Errorf("failed to read ElementaryStreamPriority correctly. expected false got true.")
108+
}
109+
}
110+
111+
func TestSetElementaryStreamPriority(t *testing.T) {
112+
target, _ := generatePacketAF(t, "0120")
113+
generated, a := generatePacketAF(t, "0100")
114+
a.SetElementaryStreamPriority(true)
115+
if !Equal(generated, target) {
116+
t.Errorf("crafted packet:\n%X \ndoes not match expected packet:\n%X\nSetting the ElementaryStreamPriority to true has failed.", *generated, *target)
117+
}
118+
target, _ = generatePacketAF(t, "0100")
119+
generated, a = generatePacketAF(t, "0120")
120+
a.SetElementaryStreamPriority(false)
121+
if !Equal(generated, target) {
122+
t.Errorf("crafted packet:\n%X \ndoes not match expected packet:\n%X\nSetting the ElementaryStreamPriority to false has failed.", *generated, *target)
123+
}
124+
}
125+
126+
func TestHasSplicingPoint(t *testing.T) {
127+
_, a := generatePacketAF(t, "0104")
128+
if hsp, err := a.HasSplicingPoint(); !hsp || err != nil {
129+
t.Errorf("failed to read HasSplicingPoint correctly. expected true got false.")
130+
}
131+
_, a = generatePacketAF(t, "0111")
132+
if hsp, err := a.HasSplicingPoint(); hsp || err != nil {
133+
t.Errorf("failed to read HasSplicingPoint correctly. expected false got true.")
134+
}
135+
}
136+
137+
func TestSetHasSplicingPoint(t *testing.T) {
138+
target, _ := generatePacketAF(t, "0F04")
139+
generated, a := generatePacketAF(t, "0100")
140+
if a.SetHasSplicingPoint(true) == nil {
141+
t.Error("adaptation field cannot fit a splice countdown field but no error was returned")
142+
}
143+
generated, a = generatePacketAF(t, "0F00")
144+
a.SetHasSplicingPoint(true)
145+
if !Equal(generated, target) {
146+
t.Errorf("crafted packet:\n%X \ndoes not match expected packet:\n%X\nSetting the HasSplicingPoint to true has failed.", *generated, *target)
147+
}
148+
target, _ = generatePacketAF(t, "0100")
149+
generated, a = generatePacketAF(t, "0104")
150+
a.SetHasSplicingPoint(false)
151+
if !Equal(generated, target) {
152+
t.Errorf("crafted packet:\n%X \ndoes not match expected packet:\n%X\nSetting the HasSplicingPoint to false has failed.", *generated, *target)
55153
}
56154
}
57155

@@ -84,39 +182,124 @@ func TestAdaptationFieldFull(t *testing.T) {
84182
}
85183
a.SetPCR(1)
86184
if !Equal(generated, target) {
87-
t.Errorf("crafted packet:\n%X \ndoes not match expected packet:\n%X\nSetting the PCR to 1 has failed.", generated, target)
185+
t.Errorf("crafted packet:\n%X \ndoes not match expected packet:\n%X\nSetting the PCR to 1 has failed.", *generated, *target)
88186
}
89187

90188
target, _ = generatePacketAF(t, "B718000000007E01000000007E02")
91189
a.SetHasOPCR(true)
92190
a.SetOPCR(2)
93191
if !Equal(generated, target) {
94-
t.Errorf("crafted packet:\n%X \ndoes not match expected packet:\n%X\nSetting the OPCR to 2 has failed.", generated, target)
192+
t.Errorf("crafted packet:\n%X \ndoes not match expected packet:\n%X\nSetting the OPCR to 2 has failed.", *generated, *target)
95193
}
96194

97195
target, _ = generatePacketAF(t, "B71A000000007E01000000007E020188")
98196
a.SetHasTransportPrivateData(true)
99197
a.SetTransportPrivateData([]byte{0x88})
100198
if !Equal(generated, target) {
101-
t.Errorf("crafted packet:\n%X \ndoes not match expected packet:\n%X\nSetting the Transport Private Data to 0x88 has failed.", generated, target)
199+
t.Errorf("crafted packet:\n%X \ndoes not match expected packet:\n%X\nSetting the Transport Private Data to 0x88 has failed.", *generated, *target)
102200
}
103201

104202
target, _ = generatePacketAF(t, "B71B000000007E01000000007E0201880100")
105203
a.SetHasAdaptationFieldExtension(true)
106204
a.SetAdaptationFieldExtension([]byte{0x00})
107205
if !Equal(generated, target) {
108-
t.Errorf("crafted packet:\n%X \ndoes not match expected packet:\n%X\nSetting the Adaptation Field Extension to 0x00 has failed.", generated, target)
206+
t.Errorf("crafted packet:\n%X \ndoes not match expected packet:\n%X\nSetting the Adaptation Field Extension to 0x00 has failed.", *generated, *target)
109207
}
110208

111209
target, _ = generatePacketAF(t, "B71B000000007E01000000007E020266660100")
112210
a.SetTransportPrivateData([]byte{0x66, 0x66})
113211
if !Equal(generated, target) {
114-
t.Errorf("crafted packet:\n%X \ndoes not match expected packet:\n%X\nSetting the Transport Private Data to 0x6666 has failed.", generated, target)
212+
t.Errorf("crafted packet:\n%X \ndoes not match expected packet:\n%X\nSetting the Transport Private Data to 0x6666 has failed.", *generated, *target)
115213
}
116214

117215
target, _ = generatePacketAF(t, "B713000000007E010266660100")
118216
a.SetHasOPCR(false)
119217
if !Equal(generated, target) {
120-
t.Errorf("crafted packet:\n%X \ndoes not match expected packet:\n%X\nremoving has failed.", generated, target)
218+
t.Errorf("crafted packet:\n%X \ndoes not match expected packet:\n%X\nremoving has failed.", *generated, *target)
219+
}
220+
221+
target, _ = generatePacketAF(t, "B717000000007E01510266660100")
222+
a.SetHasSplicingPoint(true)
223+
a.SetSpliceCountdown(0x51)
224+
if !Equal(generated, target) {
225+
t.Errorf("crafted packet:\n%X \ndoes not match expected packet:\n%X\nSetting the Transport Private Data to 0x6666 has failed.", *generated, *target)
226+
}
227+
228+
a.SetHasOPCR(true)
229+
a.SetOPCR(2)
230+
231+
hasPCR, err := a.HasPCR()
232+
if err != nil {
233+
t.Errorf("failed to get HasPCR. error: %s", err.Error())
234+
}
235+
if hasPCR != true {
236+
t.Errorf("generated HasPCR (%t) does not match expected HasPCR (%t)", hasPCR, true)
237+
}
238+
pcr, err := a.PCR()
239+
if err != nil {
240+
t.Errorf("failed to get PCR. error: %s", err.Error())
241+
}
242+
if pcr != 1 {
243+
t.Errorf("generated PCR (%d) does not match expected PCR (%d)", pcr, 1)
244+
}
245+
246+
hasOPCR, err := a.HasOPCR()
247+
if err != nil {
248+
t.Errorf("failed to get HasPCR. error: %s", err.Error())
249+
}
250+
if hasOPCR != true {
251+
t.Errorf("generated HasPCR (%t) does not match expected HasPCR (%t)", hasOPCR, true)
252+
}
253+
opcr, err := a.OPCR()
254+
if err != nil {
255+
t.Errorf("failed to get OPCR. error: %s", err.Error())
256+
}
257+
if opcr != 2 {
258+
t.Errorf("generated OPCR (%d) does not match expected OPCR (%d)", opcr, 2)
259+
}
260+
261+
hasSplicingPoint, err := a.HasSplicingPoint()
262+
if err != nil {
263+
t.Errorf("failed to get HasSplicingPoint. error: %s", err.Error())
264+
}
265+
if hasSplicingPoint != true {
266+
t.Errorf("generated hasSplicingPoint (%t) does not match expected hasSplicingPoint (%t)", hasSplicingPoint, true)
267+
}
268+
spliceCountdown, err := a.SpliceCountdown()
269+
if err != nil {
270+
t.Errorf("failed to get spliceCountdown. error: %s", err.Error())
271+
}
272+
if spliceCountdown != 0x51 {
273+
t.Errorf("generated spliceCountdown (0x%X) does not match expected spliceCountdown (0x%X)", spliceCountdown, 0x51)
274+
}
275+
276+
hasTPD, err := a.HasTransportPrivateData()
277+
if err != nil {
278+
t.Errorf("failed to get hasTPD. error: %s", err.Error())
279+
}
280+
if hasTPD != true {
281+
t.Errorf("generated HasTransportPrivateData (%t) does not match expected HasTransportPrivateData (%t)", hasTPD, true)
282+
}
283+
tpd, err := a.TransportPrivateData()
284+
if err != nil {
285+
t.Errorf("failed to get TransportPrivateData. error: %s", err.Error())
286+
}
287+
if bytes.Equal(tpd, []byte{0x66, 0x66}) {
288+
t.Errorf("generated TransportPrivateData (0x%X) does not match expected TransportPrivateData (0x%X)", tpd, []byte{0x66, 0x66})
289+
}
290+
291+
hasAFE, err := a.HasAdaptationFieldExtension()
292+
if err != nil {
293+
t.Errorf("failed to get HasAdaptationFieldExtension. error: %s", err.Error())
294+
}
295+
if hasAFE != true {
296+
t.Errorf("generated HasAdaptationFieldExtension (%t) does not match expected HasAdaptationFieldExtension (%t)", hasAFE, true)
297+
}
298+
afe, err := a.AdaptationFieldExtension()
299+
if err != nil {
300+
t.Errorf("failed to get AdaptationFieldExtension. error: %s", err.Error())
301+
}
302+
if bytes.Equal(afe, []byte{0x00}) {
303+
t.Errorf("generated AdaptationFieldExtension (0x%X) does not match expected AdaptationFieldExtension (0x%X)", tpd, []byte{0x00})
121304
}
122305
}

0 commit comments

Comments
 (0)