mirror of
https://github.com/MengMengCode/VoCat.git
synced 2026-08-13 03:13:43 +08:00
56 lines
1.4 KiB
Go
56 lines
1.4 KiB
Go
package ims
|
|
|
|
import (
|
|
"context"
|
|
"math"
|
|
"net"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestRTPMediaCarriesPCMOverPCMA(t *testing.T) {
|
|
left, err := newRTPMedia(net.IPv4(127, 0, 0, 1))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer left.Close()
|
|
right, err := newRTPMedia(net.IPv4(127, 0, 0, 1))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer right.Close()
|
|
if err := left.configureRemote(right.offerSDP(net.IPv4(127, 0, 0, 1))); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := right.configureRemote(left.answerSDP(net.IPv4(127, 0, 0, 1))); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
want := make([]int16, rtpPacketSamples)
|
|
for index := range want {
|
|
want[index] = int16(9000 * math.Sin(float64(index)*2*math.Pi/40))
|
|
}
|
|
if err := left.WritePCM(want); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
|
|
defer cancel()
|
|
got, err := right.ReadPCM(ctx)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(got) != len(want) {
|
|
t.Fatalf("received %d samples, want %d", len(got), len(want))
|
|
}
|
|
for index := range got {
|
|
if difference := math.Abs(float64(got[index]) - float64(want[index])); difference > 700 {
|
|
t.Fatalf("sample %d difference %.0f exceeds G.711 tolerance", index, difference)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestParseAudioSDPRejectsMissingEndpoint(t *testing.T) {
|
|
if _, _, _, _, err := parseAudioSDP([]byte("v=0\r\nm=audio 0 RTP/AVP 8\r\n")); err == nil {
|
|
t.Fatal("expected unusable SDP error")
|
|
}
|
|
}
|