Files
cloud-services/pkg/can-go/payload_test.go

100 lines
2.6 KiB
Go

package can
import (
"fmt"
"testing"
)
type signals struct {
start uint16
length uint16
unsigned uint64
signed int64
}
func TestPackLittleEndian(t *testing.T) {
// 302064448
// 10010000000010010001101000000
data := []byte{0x40, 0x23, 0x01, 0x12}
payload := Payload{Data: data}
dataLittleEndian := payload.PackLittleEndian()
fmt.Println(dataLittleEndian)
fmt.Printf("%b\n", dataLittleEndian)
}
func TestPackBigEndian(t *testing.T) {
// 4621538819433299968
// 100000000100011000000010001001000000000000000000000000000000000
data := []byte{0x40, 0x23, 0x01, 0x12}
payload := Payload{Data: data}
dataBigEndian := payload.PackBigEndian()
fmt.Println(dataBigEndian)
fmt.Printf("%b\n", dataBigEndian)
}
func TestUnsignedLittleEndian(t *testing.T) {
// 18
data := []byte{0x40, 0x23, 0x01, 0x12}
payload := Payload{Data: data}
signal := signals{start: 24, length: 8, unsigned: 0x12, signed: 18}
fmt.Println(payload.UnsignedBitsLittleEndian(signal.start, signal.length))
}
func TestUnsignedBigEndian(t *testing.T) {
// 3219
data := []byte{0x3f, 0xf7, 0x0d, 0xc4, 0x0c, 0x93, 0xff, 0xff}
payload := Payload{Data: data}
signal := signals{start: 39, length: 16, unsigned: 0xc93, signed: 3219}
fmt.Println(payload.UnsignedBitsBigEndian(signal.start, signal.length))
}
func TestSignedLittleEndian(t *testing.T) {
// -1
data := []byte{0x80, 0x01}
payload := Payload{Data: data}
signal := signals{start: 7, length: 2, unsigned: 0x3, signed: -1}
fmt.Println(payload.SignedBitsLittleEndian(signal.start, signal.length))
}
func TestSignedBigEndian(t *testing.T) {
// -9
data := []byte{0x3f, 0xf7, 0x0d, 0xc4, 0x0c, 0x93, 0xff, 0xff}
payload := Payload{Data: data}
signal := signals{start: 3, length: 12, unsigned: 0xff7, signed: -9}
fmt.Println(payload.SignedBitsBigEndian(signal.start, signal.length))
}
func Benchmark4BytesPayload_PackLittleEndian(b *testing.B) {
data := []byte{0x40, 0x23, 0x01, 0x12}
payload := Payload{Data: data}
for i := 0; i < b.N; i++ {
_ = payload.PackLittleEndian()
}
}
func Benchmark4BytesPayload_PackBigEndian(b *testing.B) {
data := []byte{0x40, 0x23, 0x01, 0x12}
payload := Payload{Data: data}
for i := 0; i < b.N; i++ {
_ = payload.PackBigEndian()
}
}
func Benchmark4BytesPayload_UnsignedBitsLittleEndian(b *testing.B) {
data := []byte{0x40, 0x23, 0x01, 0x12}
payload := Payload{Data: data}
for i := 0; i < b.N; i++ {
_ = payload.UnsignedBitsLittleEndian(0, 16)
}
}
func Benchmark4BytesPayload_UnsignedBitsBigEndian(b *testing.B) {
data := []byte{0x40, 0x23, 0x01, 0x12}
payload := Payload{Data: data}
for i := 0; i < b.N; i++ {
_ = payload.UnsignedBitsBigEndian(0, 16)
}
}