src.dualinventive.com/dinet/sec-multi-proxy/libdi/tests/can_crc.cpp

71 lines
1.4 KiB
C++

/**
* @file tests/can_crc.cpp
* @brief CAN packet CRC tests
* @date Oct 20, 2015
* @author jjacobs
* @copyright 2015 Dual Inventive Technology Centre B.V.
*
* CAN packet CRC tests
*/
#include <di/can/crc.h>
#include <di/can/msg.h>
#include <gtest/gtest.h>
/**
* Calculate CRC on 1 byte payload.
*/
TEST(can_crc, calc_mft_payload_1_byte) {
struct di_can_msg msg;
uint16_t crc;
uint8_t data[] = {
0x55,
};
msg.size = sizeof(data);
msg.msg = data;
EXPECT_EQ(DNOK, di_can_crc_calc(&msg, &crc));
EXPECT_EQ(0xeba0, crc);
}
/**
* Calculate CRC on 1 byte payload.
*/
TEST(can_crc, check_mft_payload_1_byte) {
struct di_can_msg msg;
uint16_t crc = 0xeba0;
uint8_t data[] = {
0x55,
};
msg.size = sizeof(data);
msg.msg = data;
EXPECT_EQ(DNOK, di_can_crc_check(&msg, crc));
}
/**
* Check if the di_can_crc_is_msg_valid
*/
TEST(can_crc, is_msg_valid) {
struct di_can_msg msg;
struct di_buffer buf;
uint8_t data[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // SFT Source/Dest NodeID
0x00, 0x00, 0x01, 0xeb, 0xa0, 0x00, 0x00, 0x00, // MFT-meta ptype,psize,pcrc (3 bytes zero fill, unused)
0x55
};
buf.data = data;
buf.size = sizeof(data);
msg.size = sizeof(data);
msg.msg = data;
msg.buf = &buf;
EXPECT_TRUE(di_can_crc_is_msg_valid(&msg));
EXPECT_EQ(1U, msg.size);
EXPECT_EQ(&data[DI_CAN_MSG_DATA_PAYLOAD_OFFSET], msg.msg);
EXPECT_EQ(0x55, *msg.msg);
}