|
|
|
package ctrl
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestGPSPositionResponse(t *testing.T) {
|
|
|
|
value := "+GPSPOS: 12:34:56,N: 49_01.2345,E: 010_12.3456,5"
|
|
|
|
expectedParts := []string{value, "12", "34", "56", "N", "49", "01.2345", "E", "010", "12.3456", "5"}
|
|
|
|
actualParts := gpsPositionResponse.FindStringSubmatch(value)
|
|
|
|
|
|
|
|
assert.Equal(t, expectedParts, actualParts)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestDegreesMinutesToDecimalDegrees(t *testing.T) {
|
|
|
|
tt := []struct {
|
|
|
|
direction string
|
|
|
|
degrees float64
|
|
|
|
minutes float64
|
|
|
|
expected float64
|
|
|
|
}{
|
|
|
|
{"N", 49, 1.2345, 49.020575},
|
|
|
|
{"S", 49, 1.2345, -49.020575},
|
|
|
|
{"W", 49, 1.2345, -49.020575},
|
|
|
|
{"E", 49, 1.2345, 49.020575},
|
|
|
|
}
|
|
|
|
for _, tc := range tt {
|
|
|
|
t.Run(tc.direction, func(t *testing.T) {
|
|
|
|
actual := degreesMinutesToDecimalDegrees(tc.direction, tc.degrees, tc.minutes)
|
|
|
|
assert.Equal(t, tc.expected, actual)
|
|
|
|
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestTalkgroupRangeResponse(t *testing.T) {
|
|
|
|
tt := []struct {
|
|
|
|
response string
|
|
|
|
kind string
|
|
|
|
min string
|
|
|
|
max string
|
|
|
|
}{
|
|
|
|
{
|
|
|
|
response: "+CNUMS: (0),(1-2000),(1-2000)",
|
|
|
|
kind: "S",
|
|
|
|
min: "1",
|
|
|
|
max: "2000",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
response: "+CNUMD: (0,1,3),(1-10000),(1-10000)",
|
|
|
|
kind: "D",
|
|
|
|
min: "1",
|
|
|
|
max: "10000",
|
|
|
|
},
|
|
|
|
}
|
|
|
|
for _, tc := range tt {
|
|
|
|
t.Run(tc.response, func(t *testing.T) {
|
|
|
|
parts := talkgroupRangeResponse.FindStringSubmatch(tc.response)
|
|
|
|
assert.Equal(t, 6, len(parts))
|
|
|
|
assert.Equal(t, tc.kind, parts[1])
|
|
|
|
assert.Equal(t, tc.min, parts[2])
|
|
|
|
assert.Equal(t, tc.max, parts[5])
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestParseTalkgroupInfo(t *testing.T) {
|
|
|
|
tt := []struct {
|
|
|
|
line string
|
|
|
|
gtsi string
|
|
|
|
name string
|
|
|
|
}{
|
|
|
|
{
|
|
|
|
line: "+CNUMD: 1,123456712341234,Test Group",
|
|
|
|
gtsi: "123456712341234",
|
|
|
|
name: "Test Group",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
line: "+CNUMS: 1,123456712341234,Test Group",
|
|
|
|
gtsi: "123456712341234",
|
|
|
|
name: "Test Group",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
line: "1,123456712341234,Test Group",
|
|
|
|
gtsi: "123456712341234",
|
|
|
|
name: "Test Group",
|
|
|
|
},
|
|
|
|
}
|
|
|
|
for _, tc := range tt {
|
|
|
|
t.Run(tc.line, func(t *testing.T) {
|
|
|
|
info, err := parseTalkgroupInfo(tc.line)
|
|
|
|
assert.NoError(t, err)
|
|
|
|
assert.Equal(t, tc.gtsi, info.GTSI)
|
|
|
|
assert.Equal(t, tc.name, info.Name)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|