1 Star 0 Fork 0

liuzh0324/webrtc

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
icecandidate_test.go 4.45 KB
一键复制 编辑 原始数据 按行查看 历史
Hugo Arregui 提交于 2019-08-01 14:50 . Fix ICECandidateInit ToJSON fix
package webrtc
import (
"testing"
"github.com/pion/ice"
"github.com/stretchr/testify/assert"
)
func TestICECandidate_Convert(t *testing.T) {
testCases := []struct {
native ICECandidate
expectedType ice.CandidateType
expectedNetwork string
expectedAddress string
expectedPort int
expectedComponent uint16
expectedRelatedAddress *ice.CandidateRelatedAddress
}{
{
ICECandidate{
Foundation: "foundation",
Priority: 128,
Address: "1.0.0.1",
Protocol: ICEProtocolUDP,
Port: 1234,
Typ: ICECandidateTypeHost,
Component: 1,
},
ice.CandidateTypeHost,
"udp",
"1.0.0.1",
1234,
1,
nil,
},
{
ICECandidate{
Foundation: "foundation",
Priority: 128,
Address: "::1",
Protocol: ICEProtocolUDP,
Port: 1234,
Typ: ICECandidateTypeSrflx,
Component: 1,
RelatedAddress: "1.0.0.1",
RelatedPort: 4321,
},
ice.CandidateTypeServerReflexive,
"udp",
"::1",
1234,
1,
&ice.CandidateRelatedAddress{
Address: "1.0.0.1",
Port: 4321,
},
},
{
ICECandidate{
Foundation: "foundation",
Priority: 128,
Address: "::1",
Protocol: ICEProtocolUDP,
Port: 1234,
Typ: ICECandidateTypePrflx,
Component: 1,
RelatedAddress: "1.0.0.1",
RelatedPort: 4321,
},
ice.CandidateTypePeerReflexive,
"udp",
"::1",
1234,
1,
&ice.CandidateRelatedAddress{
Address: "1.0.0.1",
Port: 4321,
},
},
}
for i, testCase := range testCases {
var expectedICE ice.Candidate
var err error
switch testCase.expectedType {
case ice.CandidateTypeHost:
config := ice.CandidateHostConfig{
Network: testCase.expectedNetwork,
Address: testCase.expectedAddress,
Port: testCase.expectedPort,
Component: testCase.expectedComponent,
}
expectedICE, err = ice.NewCandidateHost(&config)
case ice.CandidateTypeServerReflexive:
config := ice.CandidateServerReflexiveConfig{
Network: testCase.expectedNetwork,
Address: testCase.expectedAddress,
Port: testCase.expectedPort,
Component: testCase.expectedComponent,
RelAddr: testCase.expectedRelatedAddress.Address,
RelPort: testCase.expectedRelatedAddress.Port,
}
expectedICE, err = ice.NewCandidateServerReflexive(&config)
assert.NoError(t, err)
case ice.CandidateTypePeerReflexive:
config := ice.CandidatePeerReflexiveConfig{
Network: testCase.expectedNetwork,
Address: testCase.expectedAddress,
Port: testCase.expectedPort,
Component: testCase.expectedComponent,
RelAddr: testCase.expectedRelatedAddress.Address,
RelPort: testCase.expectedRelatedAddress.Port,
}
expectedICE, err = ice.NewCandidatePeerReflexive(&config)
}
assert.NoError(t, err)
// first copy the candidate ID so it matches the new one
testCase.native.statsID = expectedICE.ID()
actualICE, err := testCase.native.toICE()
assert.NoError(t, err)
assert.Equal(t, expectedICE, actualICE, "testCase: %d ice not equal %v", i, actualICE)
}
}
func TestConvertTypeFromICE(t *testing.T) {
t.Run("host", func(t *testing.T) {
ct, err := convertTypeFromICE(ice.CandidateTypeHost)
if err != nil {
t.Fatal("failed coverting ice.CandidateTypeHost")
}
if ct != ICECandidateTypeHost {
t.Fatal("should be converted to ICECandidateTypeHost")
}
})
t.Run("srflx", func(t *testing.T) {
ct, err := convertTypeFromICE(ice.CandidateTypeServerReflexive)
if err != nil {
t.Fatal("failed coverting ice.CandidateTypeServerReflexive")
}
if ct != ICECandidateTypeSrflx {
t.Fatal("should be converted to ICECandidateTypeSrflx")
}
})
t.Run("prflx", func(t *testing.T) {
ct, err := convertTypeFromICE(ice.CandidateTypePeerReflexive)
if err != nil {
t.Fatal("failed coverting ice.CandidateTypePeerReflexive")
}
if ct != ICECandidateTypePrflx {
t.Fatal("should be converted to ICECandidateTypePrflx")
}
})
}
func TestICECandidate_ToJSON(t *testing.T) {
candidate := ICECandidate{
Foundation: "foundation",
Priority: 128,
Address: "1.0.0.1",
Protocol: ICEProtocolUDP,
Port: 1234,
Typ: ICECandidateTypeHost,
Component: 1,
}
candidateInit := candidate.ToJSON()
assert.Equal(t, uint16(0), *candidateInit.SDPMLineIndex)
assert.Equal(t, "candidate:foundation 1 udp 128 1.0.0.1 1234 typ host", candidateInit.Candidate)
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/natoverload/webrtc.git
git@gitee.com:natoverload/webrtc.git
natoverload
webrtc
webrtc
master

搜索帮助

23e8dbc6 1850385 7e0993f3 1850385