Small CLI monitoring tool to decode proprietary [...] protocol and display info in human readable representation
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ycli-mon/yabl/type-helpers_test.go

114 lines
3.1 KiB

package yabl
import (
"reflect"
"testing"
)
func Test_signedAirTemp8BitTypeHelper_fromBus(t *testing.T) {
entity := &PeripheryInfo{}
idx := 2
value := reflect.ValueOf(entity).Elem().Field(idx)
val42 := SignedAirTemp8BitType(42)
valM15 := SignedAirTemp8BitType(-15)
tests := []struct {
name string
fHelper fHelper
arg uint64
want *SignedAirTemp8BitType
}{
{
name: "SignedAirTemp8BitType positive from bus",
fHelper: &signedAirTemp8BitTypeHelper{baseTypeHelper{rValue: &value}},
arg: 42 + 67,
want: &val42,
},
{
name: "SignedAirTemp8BitType negative from bus",
fHelper: &signedAirTemp8BitTypeHelper{baseTypeHelper{rValue: &value}},
arg: -15 + 67,
want: &valM15,
},
{
name: "SignedAirTemp8BitType null from bus",
fHelper: &signedAirTemp8BitTypeHelper{baseTypeHelper{rValue: &value}},
arg: 255,
want: nil,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := tt.fHelper.fromBus(tt.arg)
if !(reflect.DeepEqual(got, tt.want) || ((got == nil) && (tt.want == nil))) {
t.Errorf("fromBus() = %v, want %v", got, tt.want)
}
if !(reflect.DeepEqual(entity.TempAirIn, tt.want) || ((entity.TempAirIn == nil) && (tt.want == nil))) {
t.Errorf("entity.TempAirIn = %v, want %v", entity.TempAirIn, tt.want)
}
})
}
}
func Test_signedAirTemp8BitTypeHelper_toBus(t *testing.T) {
entity := &PeripheryInfo{}
idx := 2
value := reflect.ValueOf(entity).Elem().Field(idx)
val42 := SignedAirTemp8BitType(42)
valM15 := SignedAirTemp8BitType(-15)
type wants struct {
bus uint64
val *SignedAirTemp8BitType
}
tests := []struct {
name string
fHelper fHelper
arg any
want wants
}{
{
name: "SignedAirTemp8BitType from int to bus",
fHelper: &signedAirTemp8BitTypeHelper{baseTypeHelper{rValue: &value}},
arg: 42,
want: wants{bus: 42 + 67, val: &val42},
},
{
name: "SignedAirTemp8BitType from negative int to bus",
fHelper: &signedAirTemp8BitTypeHelper{baseTypeHelper{rValue: &value}},
arg: -15,
want: wants{bus: -15 + 67, val: &valM15}, // uint(-15) | mask
},
{
name: "SignedAirTemp8BitType from negative string to bus",
fHelper: &signedAirTemp8BitTypeHelper{baseTypeHelper{rValue: &value}},
arg: "-15",
want: wants{bus: -15 + 67, val: &valM15}, // uint(-15) | mask
},
{
name: "SignedAirTemp8BitType failed value to bus",
fHelper: &signedAirTemp8BitTypeHelper{baseTypeHelper{rValue: &value}},
arg: "fail",
want: wants{bus: 255, val: nil}, // uint(-15) | mask
},
{
name: "SignedAirTemp8BitType nil value to bus",
fHelper: &signedAirTemp8BitTypeHelper{baseTypeHelper{rValue: &value}},
arg: "nil",
want: wants{bus: 255, val: nil}, // uint(-15) | mask
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := tt.fHelper.toBus(tt.arg)
if !reflect.DeepEqual(got, tt.want.bus) {
t.Errorf("fromBus() = %v, want %v", got, tt.want.bus)
}
if !reflect.DeepEqual(entity.TempAirIn, tt.want.val) {
t.Errorf("entity.TempAirIn = %v, want %v", entity.TempAirIn, tt.want.val)
}
})
}
}