mirror of
https://github.com/MengMengCode/VoCat.git
synced 2026-08-13 03:13:43 +08:00
74 lines
2.1 KiB
Go
74 lines
2.1 KiB
Go
package server
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"vocat/internal/modem"
|
|
"vocat/internal/vowifi"
|
|
)
|
|
|
|
func TestParseCLCC(t *testing.T) {
|
|
calls := parseCLCC(modem.Response{Lines: []string{
|
|
`+CLCC: 1,1,4,0,0,"+447700900000",145`,
|
|
`+CLCC: 2,0,0,0,0,"12345",129`,
|
|
}})
|
|
if len(calls) != 2 || calls[0]["number"] != "+447700900000" || calls[1]["state"] != 0 {
|
|
t.Fatalf("parseCLCC = %#v", calls)
|
|
}
|
|
}
|
|
|
|
func TestValidDialNumber(t *testing.T) {
|
|
for _, value := range []string{"+447700900000", "12345", "*100#"} {
|
|
if !validDialNumber(value) {
|
|
t.Errorf("validDialNumber(%q) = false", value)
|
|
}
|
|
}
|
|
for _, value := range []string{"", "+", "12;ATH", "12 34", "abc"} {
|
|
if validDialNumber(value) {
|
|
t.Errorf("validDialNumber(%q) = true", value)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestCallTransportRequiresIMSReady(t *testing.T) {
|
|
controller := &fakeVoWiFiController{state: vowifi.State{Enabled: true}}
|
|
server := &Server{vowifi: controller}
|
|
if got := server.callTransport("ec20"); got != "cellular" {
|
|
t.Fatalf("callTransport before IMS registration = %q, want cellular", got)
|
|
}
|
|
controller.state.IMSReady = true
|
|
if got := server.callTransport("ec20"); got != "vowifi" {
|
|
t.Fatalf("callTransport with IMS ready = %q, want vowifi", got)
|
|
}
|
|
}
|
|
|
|
func TestResolveVoWiFiCallIDIgnoresTerminalCalls(t *testing.T) {
|
|
controller := &fakeCallController{calls: []vowifi.Call{
|
|
{ID: "failed", State: "failed"},
|
|
{ID: "active", State: "active"},
|
|
}}
|
|
got, err := resolveVoWiFiCallID(controller, "ec20", "", "")
|
|
if err != nil || got != "active" {
|
|
t.Fatalf("resolveVoWiFiCallID() = %q, %v; want active", got, err)
|
|
}
|
|
}
|
|
|
|
type fakeCallController struct {
|
|
calls []vowifi.Call
|
|
}
|
|
|
|
func (controller *fakeCallController) Calls(string) ([]vowifi.Call, error) {
|
|
return controller.calls, nil
|
|
}
|
|
|
|
func (*fakeCallController) DialCall(context.Context, string, string) (vowifi.Call, error) {
|
|
return vowifi.Call{}, nil
|
|
}
|
|
|
|
func (*fakeCallController) AnswerCall(context.Context, string, string) (vowifi.Call, error) {
|
|
return vowifi.Call{}, nil
|
|
}
|
|
|
|
func (*fakeCallController) HangupCall(context.Context, string, string) error { return nil }
|