src.dualinventive.com/dinet/libdi-php/libdi/tests/drv_xbee_checksum.cpp

81 lines
2.1 KiB
C++

/*
* drv_checksum.cpp
*
* Created on: Apr 6, 2017
* Author: svlies
*/
#include <stdio.h>
#include <stdint.h>
#include <string.h>
#include <gtest/gtest.h>
#include <di/drv/xbee.h>
#include <di/array.h>
static struct di_drv_xbee_ctx ctx;
static uint8_t buf[] = {0x7e,0x00,0x04,0x08,0x52,0x4e,0x48};
static uint8_t long_buf[] = {0x7e,0x00,0x16,0x10,0x01,0x00,0x13,0xa2,0x00,0x40,0x0A,0x01,0x27,0xFF,0xFE,0x00,0x00,0x54,0x78,0x44,0x61,0x74,0x61,0x30,0x41};
void test_xbee_reset(void)
{
di_drv_xbee_init(&ctx);
}
TEST(drv_xbee_checksum_verify, verify_correct) {
test_xbee_reset();
di_buffer_flush(&ctx.buf);
di_buffer_write_u8(&ctx.buf,0x7e);
di_buffer_write_u8(&ctx.buf,0x00);
di_buffer_write_u8(&ctx.buf,0x04);
di_buffer_write_u8(&ctx.buf,0x08);
di_buffer_write_u8(&ctx.buf,0x52);
di_buffer_write_u8(&ctx.buf,0x4e);
di_buffer_write_u8(&ctx.buf,0x48);
di_buffer_write_u8(&ctx.buf,0x0f);
EXPECT_EQ(DNOK, di_drv_xbee_checksum_verify(&ctx.buf));
}
TEST(drv_xbee_checksum_verify, verify_incorrect) {
test_xbee_reset();
di_buffer_reset(&ctx.buf);
di_buffer_write_u8(&ctx.buf,0x7e);
di_buffer_write_u8(&ctx.buf,0x00);
di_buffer_write_u8(&ctx.buf,0x04);
di_buffer_write_u8(&ctx.buf,0x08);
di_buffer_write_u8(&ctx.buf,0x52);
di_buffer_write_u8(&ctx.buf,0x4e);
di_buffer_write_u8(&ctx.buf,0x48);
di_buffer_write_u8(&ctx.buf,0x0b);
EXPECT_EQ(DNE_CHECKSUM, di_drv_xbee_checksum_verify(&ctx.buf));
di_buffer_reset(&ctx.buf);
di_buffer_write_u8(&ctx.buf,0x7e);
di_buffer_write_u8(&ctx.buf,0x00);
di_buffer_write_u8(&ctx.buf,0x04);
di_buffer_write_u8(&ctx.buf,0x07);
di_buffer_write_u8(&ctx.buf,0x52);
di_buffer_write_u8(&ctx.buf,0x4e);
di_buffer_write_u8(&ctx.buf,0x48);
di_buffer_write_u8(&ctx.buf,0x0f);
EXPECT_EQ(DNE_CHECKSUM, di_drv_xbee_checksum_verify(&ctx.buf));
}
TEST(drv_xbee_checksum_generation, generate_test_1) {
test_xbee_reset();
EXPECT_EQ(0x0f, di_drv_xbee_checksum_calc(buf, DI_ARRAY_SIZE(buf)));
}
TEST(drv_xbee_checksum_generation, generate_test_2) {
test_xbee_reset();
EXPECT_EQ(0x13, di_drv_xbee_checksum_calc(long_buf, DI_ARRAY_SIZE(long_buf)));
}