/* * drv_checksum.cpp * * Created on: Apr 6, 2017 * Author: svlies */ #include #include #include #include #include #include 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))); }