gotelem/xbee/at_test.go

153 lines
3.2 KiB
Go
Raw Normal View History

2023-05-03 15:38:37 +00:00
package xbee
import (
"reflect"
"testing"
)
func TestParseATCmdResponse(t *testing.T) {
type args struct {
p []byte
}
tests := []struct {
name string
args args
want *ATCmdResponse
wantErr bool
}{
2023-05-04 19:05:37 +00:00
{
name: "AT Command Change OK",
args: args{
p: []byte{0x88, 0x53, 0x49, 0x44, 0x00},
},
want: &ATCmdResponse{
Cmd: "ID",
Data: []byte{},
Status: ATCmdStatusOK,
},
wantErr: false,
},
{
name: "AT Command Query OK",
args: args{
p: []byte{0x88, 0x53, 0x49, 0x44, 0x00, 0x43, 0xEF},
},
want: &ATCmdResponse{
Cmd: "ID",
Data: []byte{0x43, 0xEF},
Status: ATCmdStatusOK,
},
},
{
name: "AT Command Parameter Error",
args: args{
p: []byte{0x88, 0x53, 0x49, 0x44, 0x03},
},
want: &ATCmdResponse{
Cmd: "ID",
Data: []byte{},
Status: ATCmdStatusInvalidParam,
},
wantErr: false,
},
2023-05-03 15:38:37 +00:00
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := ParseATCmdResponse(tt.args.p)
if (err != nil) != tt.wantErr {
t.Errorf("ParseATCmdResponse() error = %v, wantErr %v", err, tt.wantErr)
return
}
if !reflect.DeepEqual(got, tt.want) {
t.Errorf("ParseATCmdResponse() = %v, want %v", got, tt.want)
}
})
}
}
func Test_encodeRemoteATCommand(t *testing.T) {
type args struct {
at ATCmd
idx uint8
queued bool
destination uint64
}
tests := []struct {
name string
args args
want RawATCmd
}{
// TODO: Add test cases.
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := encodeRemoteATCommand(tt.args.at, tt.args.idx, tt.args.queued, tt.args.destination); !reflect.DeepEqual(got, tt.want) {
t.Errorf("encodeRemoteATCommand() = %v, want %v", got, tt.want)
}
})
}
}
func Test_encodeATCommand(t *testing.T) {
type args struct {
cmd [2]rune
p []byte
idx uint8
queued bool
}
tests := []struct {
name string
args args
want RawATCmd
}{
// These test cases are from digi's documentation on the 900HP/XSC modules.
{
name: "Setting AT Command",
args: args{
cmd: [2]rune{'N', 'I'},
idx: 0xA1,
p: []byte{0x45, 0x6E, 0x64, 0x20, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65},
queued: false,
},
want: []byte{0x08, 0xA1, 0x4E, 0x49, 0x45, 0x6E, 0x64, 0x20, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65},
},
{
name: "Query AT Command",
args: args{
cmd: [2]rune{'T', 'P'},
idx: 0x17,
p: nil,
queued: false,
},
want: []byte{0x08, 0x17, 0x54, 0x50},
},
{
name: "Queue Local AT Command",
args: args{
cmd: [2]rune{'B', 'D'},
idx: 0x53,
p: []byte{0x07},
queued: true,
},
want: []byte{0x09, 0x53, 0x42, 0x44, 0x07},
},
2023-05-03 16:29:49 +00:00
{
name: "Queue Query AT Command",
args: args{
cmd: [2]rune{'T', 'P'},
idx: 0x17,
p: nil,
queued: true,
},
want: []byte{0x09, 0x17, 0x54, 0x50},
},
2023-05-03 15:38:37 +00:00
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := encodeATCommand(tt.args.cmd, tt.args.p, tt.args.idx, tt.args.queued); !reflect.DeepEqual(got, tt.want) {
t.Errorf("encodeATCommand() = %v, want %v", got, tt.want)
}
})
}
}