forked from pion/rtp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
g711_packet_test.go
72 lines (57 loc) · 1.54 KB
/
g711_packet_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package codecs //nolint:dupl
import (
"bytes"
"crypto/rand"
"math"
"testing"
)
func TestG711Payloader(t *testing.T) {
p := G711Payloader{}
const (
testlen = 10000
testmtu = 1500
)
// generate random 8-bit g722 samples
samples := make([]byte, testlen)
_, err := rand.Read(samples)
if err != nil {
t.Fatal("RNG Error: ", err)
}
// make a copy, for payloader input
samplesIn := make([]byte, testlen)
copy(samplesIn, samples)
// split our samples into payloads
payloads := p.Payload(testmtu, samplesIn)
outcnt := int(math.Ceil(float64(testlen) / testmtu))
if len(payloads) != outcnt {
t.Fatalf("Generated %d payloads instead of %d", len(payloads), outcnt)
}
if !bytes.Equal(samplesIn, samples) {
t.Fatal("Modified input samples")
}
samplesOut := bytes.Join(payloads, []byte{})
if !bytes.Equal(samplesIn, samplesOut) {
t.Fatal("Output samples don't match")
}
payload := []byte{0x90, 0x90, 0x90}
// 0 MTU, small payload
res := p.Payload(0, payload)
if len(res) != 0 {
t.Fatal("Generated payload should be empty")
}
// Positive MTU, small payload
res = p.Payload(1, payload)
if len(res) != len(payload) {
t.Fatal("Generated payload should be the same size as original payload size")
}
// Positive MTU, small payload
res = p.Payload(uint16(len(payload)-1), payload)
if len(res) != len(payload)-1 {
t.Fatal("Generated payload should be the same smaller than original payload size")
}
// Positive MTU, small payload
res = p.Payload(10, payload)
if len(res) != 1 {
t.Fatal("Generated payload should be 1")
}
}