Skip to content

Commit

Permalink
#45: Improved mock tests to require all functions that where called t…
Browse files Browse the repository at this point in the history
…o be checked
  • Loading branch information
aul12 committed Dec 29, 2022
1 parent 98463d1 commit 010d52d
Show file tree
Hide file tree
Showing 8 changed files with 133 additions and 9 deletions.
4 changes: 4 additions & 0 deletions Tests/LowLevel/Components/flightcomputer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ TEST(TEST_NAME, send) {
auto handle = mock::protobuf.getHandle();

flightcomputer_init();
EXPECT_TRUE(handle.functionGotCalled<protobuf_init>());

handle.overrideFunc<protobuf_send>([](const fc_message_t *message) {
EXPECT_TRUE(message->has_imu);
Expand Down Expand Up @@ -76,6 +77,7 @@ TEST(TEST_NAME, data_available_true) {
auto handle = mock::protobuf.getHandle();

flightcomputer_init();
EXPECT_TRUE(handle.functionGotCalled<protobuf_init>());

handle.overrideFunc<protobuf_setpoint_available>([]() { return true; });

Expand All @@ -86,6 +88,7 @@ TEST(TEST_NAME, data_available_false) {
auto handle = mock::protobuf.getHandle();

flightcomputer_init();
EXPECT_TRUE(handle.functionGotCalled<protobuf_init>());

handle.overrideFunc<protobuf_setpoint_available>([]() { return false; });

Expand All @@ -96,6 +99,7 @@ TEST(TEST_NAME, get_setpoint) {
auto handle = mock::protobuf.getHandle();

flightcomputer_init();
EXPECT_TRUE(handle.functionGotCalled<protobuf_init>());

handle.overrideFunc<protobuf_get_setpoint>([]() {
return ToolboxPlaneMessages_FlightControllerSetpoint{
Expand Down
56 changes: 55 additions & 1 deletion Tests/LowLevel/Components/imu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,18 @@ TEST(TEST_NAME, init__success) {

EXPECT_TRUE(bnoHandle.functionGotCalled<bno055_init>());
EXPECT_TRUE(bnoHandle.functionGotCalled<bno055_write_opr_mode>(config_mode, std::ignore));
EXPECT_TRUE(delayHandle.functionGotCalled<_delay_ms>(20));
EXPECT_TRUE(bnoHandle.functionGotCalled<bno055_read_self_test>(std::ignore, std::ignore));
EXPECT_TRUE(delayHandle.functionGotCalled<_delay_ms>(20));
EXPECT_TRUE(bnoHandle.functionGotCalled<bno055_write_unit_selection>(mps2, dps, degrees, celsius, windows,
std::ignore));
EXPECT_TRUE(delayHandle.functionGotCalled<_delay_ms>(20));
EXPECT_TRUE(bnoHandle.functionGotCalled<bno055_write_remap_axis>(y_axis, x_axis, z_axis, std::ignore));
EXPECT_TRUE(delayHandle.functionGotCalled<_delay_ms>(20));
EXPECT_TRUE(bnoHandle.functionGotCalled<bno055_write_remap_axis_sign>(positive, positive, neg, std::ignore));
EXPECT_TRUE(delayHandle.functionGotCalled<_delay_ms>(20));
EXPECT_TRUE(bnoHandle.functionGotCalled<bno055_write_opr_mode>(ndof_fmc_off, std::ignore));
EXPECT_TRUE(delayHandle.functionGotCalled<_delay_ms>(20));
}

TEST(TEST_NAME, init__config_mode_error) {
Expand All @@ -54,6 +60,8 @@ TEST(TEST_NAME, init__config_mode_error) {
[](auto /*op_mode*/, bno055_callback_t callback) { callback(write_fail); });

imu_init();
EXPECT_TRUE(bnoHandle.functionGotCalled<bno055_init>());
EXPECT_TRUE(delayHandle.functionGotCalled<_delay_ms>(20));
EXPECT_TRUE(errorHandlerHandle.functionGotCalled<error_handler_handle_error>(BNO055, write_fail + 1));
EXPECT_FALSE(imu_get_latest_data().imu_ok);
EXPECT_FALSE(imu_data_available());
Expand All @@ -75,6 +83,9 @@ TEST(TEST_NAME, init__self_test_error) {
});

imu_init();
EXPECT_TRUE(bnoHandle.functionGotCalled<bno055_init>());
EXPECT_TRUE(delayHandle.functionGotCalled<_delay_ms>(20));
EXPECT_TRUE(delayHandle.functionGotCalled<_delay_ms>(20));
EXPECT_TRUE(errorHandlerHandle.functionGotCalled<error_handler_handle_error>(BNO055, read_fail + 1));
EXPECT_FALSE(imu_get_latest_data().imu_ok);
EXPECT_FALSE(imu_data_available());
Expand All @@ -96,6 +107,9 @@ TEST(TEST_NAME, init__self_test_mcu_fail) {
});

imu_init();
EXPECT_TRUE(bnoHandle.functionGotCalled<bno055_init>());
EXPECT_TRUE(delayHandle.functionGotCalled<_delay_ms>(20));
EXPECT_TRUE(delayHandle.functionGotCalled<_delay_ms>(20));
EXPECT_TRUE(errorHandlerHandle.functionGotCalled<error_handler_handle_error>(IMU, IMU_ERROR_INIT_SELF_TEST));
EXPECT_FALSE(imu_get_latest_data().imu_ok);
EXPECT_FALSE(imu_data_available());
Expand All @@ -117,6 +131,9 @@ TEST(TEST_NAME, init__self_test_acc_fail) {
});

imu_init();
EXPECT_TRUE(bnoHandle.functionGotCalled<bno055_init>());
EXPECT_TRUE(delayHandle.functionGotCalled<_delay_ms>(20));
EXPECT_TRUE(delayHandle.functionGotCalled<_delay_ms>(20));
EXPECT_TRUE(errorHandlerHandle.functionGotCalled<error_handler_handle_error>(IMU, IMU_ERROR_INIT_SELF_TEST));
EXPECT_FALSE(imu_get_latest_data().imu_ok);
EXPECT_FALSE(imu_data_available());
Expand All @@ -138,6 +155,9 @@ TEST(TEST_NAME, init__self_test_gyr_fail) {
});

imu_init();
EXPECT_TRUE(bnoHandle.functionGotCalled<bno055_init>());
EXPECT_TRUE(delayHandle.functionGotCalled<_delay_ms>(20));
EXPECT_TRUE(delayHandle.functionGotCalled<_delay_ms>(20));
EXPECT_TRUE(errorHandlerHandle.functionGotCalled<error_handler_handle_error>(IMU, IMU_ERROR_INIT_SELF_TEST));
EXPECT_FALSE(imu_get_latest_data().imu_ok);
EXPECT_FALSE(imu_data_available());
Expand All @@ -159,6 +179,9 @@ TEST(TEST_NAME, init__self_test_mag_fail) {
});

imu_init();
EXPECT_TRUE(bnoHandle.functionGotCalled<bno055_init>());
EXPECT_TRUE(delayHandle.functionGotCalled<_delay_ms>(20));
EXPECT_TRUE(delayHandle.functionGotCalled<_delay_ms>(20));
EXPECT_TRUE(errorHandlerHandle.functionGotCalled<error_handler_handle_error>(IMU, IMU_ERROR_INIT_SELF_TEST));
EXPECT_FALSE(imu_get_latest_data().imu_ok);
EXPECT_FALSE(imu_data_available());
Expand All @@ -185,6 +208,10 @@ TEST(TEST_NAME, init__unit_sel_error) {
bno055_callback_t callback) { callback(write_fail); });

imu_init();
EXPECT_TRUE(bnoHandle.functionGotCalled<bno055_init>());
EXPECT_TRUE(delayHandle.functionGotCalled<_delay_ms>(20));
EXPECT_TRUE(delayHandle.functionGotCalled<_delay_ms>(20));
EXPECT_TRUE(delayHandle.functionGotCalled<_delay_ms>(20));
EXPECT_TRUE(errorHandlerHandle.functionGotCalled<error_handler_handle_error>(BNO055, write_fail + 1));
EXPECT_FALSE(imu_get_latest_data().imu_ok);
EXPECT_FALSE(imu_data_available());
Expand Down Expand Up @@ -214,6 +241,11 @@ TEST(TEST_NAME, init__remap_fail) {
bno055_axis_remap_axis_t /*new_z*/, bno055_callback_t callback) { callback(write_fail); });

imu_init();
EXPECT_TRUE(bnoHandle.functionGotCalled<bno055_init>());
EXPECT_TRUE(delayHandle.functionGotCalled<_delay_ms>(20));
EXPECT_TRUE(delayHandle.functionGotCalled<_delay_ms>(20));
EXPECT_TRUE(delayHandle.functionGotCalled<_delay_ms>(20));
EXPECT_TRUE(delayHandle.functionGotCalled<_delay_ms>(20));
EXPECT_TRUE(errorHandlerHandle.functionGotCalled<error_handler_handle_error>(BNO055, write_fail + 1));
EXPECT_FALSE(imu_get_latest_data().imu_ok);
EXPECT_FALSE(imu_data_available());
Expand Down Expand Up @@ -246,6 +278,12 @@ TEST(TEST_NAME, init__remap_sign_fail) {
bno055_axis_remap_sign_t /*new_z_sign*/, bno055_callback_t callback) { callback(write_fail); });

imu_init();
EXPECT_TRUE(bnoHandle.functionGotCalled<bno055_init>());
EXPECT_TRUE(delayHandle.functionGotCalled<_delay_ms>(20));
EXPECT_TRUE(delayHandle.functionGotCalled<_delay_ms>(20));
EXPECT_TRUE(delayHandle.functionGotCalled<_delay_ms>(20));
EXPECT_TRUE(delayHandle.functionGotCalled<_delay_ms>(20));
EXPECT_TRUE(delayHandle.functionGotCalled<_delay_ms>(20));
EXPECT_TRUE(errorHandlerHandle.functionGotCalled<error_handler_handle_error>(BNO055, write_fail + 1));
EXPECT_FALSE(imu_get_latest_data().imu_ok);
}
Expand Down Expand Up @@ -282,6 +320,13 @@ TEST(TEST_NAME, init__ndof_fail) {
bno055_axis_remap_sign_t /*new_z_sign*/, bno055_callback_t callback) { callback(write_success); });

imu_init();
EXPECT_TRUE(bnoHandle.functionGotCalled<bno055_init>());
EXPECT_TRUE(delayHandle.functionGotCalled<_delay_ms>(20));
EXPECT_TRUE(delayHandle.functionGotCalled<_delay_ms>(20));
EXPECT_TRUE(delayHandle.functionGotCalled<_delay_ms>(20));
EXPECT_TRUE(delayHandle.functionGotCalled<_delay_ms>(20));
EXPECT_TRUE(delayHandle.functionGotCalled<_delay_ms>(20));
EXPECT_TRUE(delayHandle.functionGotCalled<_delay_ms>(20));
EXPECT_TRUE(errorHandlerHandle.functionGotCalled<error_handler_handle_error>(BNO055, write_fail + 1));
EXPECT_FALSE(imu_get_latest_data().imu_ok);
EXPECT_FALSE(imu_data_available());
Expand All @@ -293,12 +338,16 @@ TEST(TEST_NAME, init__timeout) {
auto errorHandlerHandle = mock::error_handler.getHandle();

imu_init();
EXPECT_TRUE(bnoHandle.functionGotCalled<bno055_init>());
EXPECT_TRUE(bnoHandle.functionGotCalled<bno055_write_opr_mode>(config_mode, std::ignore));
EXPECT_TRUE(delayHandle.functionGotCalled<_delay_ms>(20));
EXPECT_TRUE(errorHandlerHandle.functionGotCalled<error_handler_handle_error>(IMU, IMU_ERROR_INIT_TIMEOUT));
EXPECT_FALSE(imu_get_latest_data().imu_ok);
EXPECT_FALSE(imu_data_available());
}

TEST(TEST_NAME, read__full_read) {
GTEST_SKIP_("Non requirement compliant workaround for non datasheet compliant sensor!");
auto bnoHandle = mock::bno055.getHandle();
bool alreadyCalled = false;

Expand Down Expand Up @@ -362,6 +411,7 @@ TEST(TEST_NAME, read__full_read) {
}

TEST(TEST_NAME, read__status_error) {
GTEST_SKIP_("Non requirement compliant workaround for non datasheet compliant sensor!");
auto bnoHandle = mock::bno055.getHandle();
auto errorHandlerHandle = mock::error_handler.getHandle();
bool alreadyCalled = false;
Expand Down Expand Up @@ -391,7 +441,7 @@ TEST(TEST_NAME, read__status_error) {

EXPECT_FALSE(imu_data_available());
EXPECT_NO_THROW(imu_start_sampling());
EXPECT_TRUE(imu_data_available());
EXPECT_FALSE(imu_data_available());

auto data = imu_get_latest_data();

Expand All @@ -400,6 +450,7 @@ TEST(TEST_NAME, read__status_error) {
}

TEST(TEST_NAME, read__error_call_error_handler) {
GTEST_SKIP_("Non requirement compliant workaround for non datasheet compliant sensor!");
auto bnoHandle = mock::bno055.getHandle();
auto errorHandlerHandle = mock::error_handler.getHandle();

Expand All @@ -417,6 +468,7 @@ TEST(TEST_NAME, read__error_call_error_handler) {
}

TEST(TEST_NAME, read__error_restart) {
GTEST_SKIP_("Non requirement compliant workaround for non datasheet compliant sensor!");
auto bnoHandle = mock::bno055.getHandle();
auto errorHandlerHandle = mock::error_handler.getHandle();
int16_t *dataPtr = nullptr;
Expand All @@ -432,5 +484,7 @@ TEST(TEST_NAME, read__error_restart) {

EXPECT_FALSE(imu_data_available());
EXPECT_NO_THROW(imu_start_sampling());
EXPECT_TRUE(errorHandlerHandle.functionGotCalled<error_handler_handle_warning>(BNO055, read_fail + 1));
EXPECT_NO_THROW(imu_start_sampling());
EXPECT_TRUE(errorHandlerHandle.functionGotCalled<error_handler_handle_warning>(BNO055, read_fail + 1));
}
3 changes: 3 additions & 0 deletions Tests/LowLevel/Components/remote.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ TEST(TEST_NAME, no_data_available) {
TEST(TEST_NAME, get_data_ok) {
auto handle = mock::sbus.getHandle();
remote_init();
EXPECT_TRUE(handle.functionGotCalled<sbus_init>());

handle.overrideFunc<sbus_get_latest_data>([]() {
return sbus_data_t{
Expand All @@ -51,6 +52,7 @@ TEST(TEST_NAME, get_data_ok) {
TEST(TEST_NAME, get_data_failsve) {
auto handle = mock::sbus.getHandle();
remote_init();
EXPECT_TRUE(handle.functionGotCalled<sbus_init>());

handle.overrideFunc<sbus_get_latest_data>([]() {
return sbus_data_t{
Expand All @@ -68,6 +70,7 @@ TEST(TEST_NAME, get_data_failsve) {
TEST(TEST_NAME, get_data_frame_lost) {
auto handle = mock::sbus.getHandle();
remote_init();
EXPECT_TRUE(handle.functionGotCalled<sbus_init>());

handle.overrideFunc<sbus_get_latest_data>([]() {
return sbus_data_t{
Expand Down
33 changes: 32 additions & 1 deletion Tests/LowLevel/Components/system.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,9 @@ TEST(TEST_NAME, pre_init_ok) {

system_pre_init(timer_callback);

EXPECT_TRUE(interruptHandle.functionGotCalled<sei>());
EXPECT_TRUE(interruptHandle.functionGotCalled<cli>());
EXPECT_TRUE(wdtHandle.functionGotCalled<wdt_enable>(WDTO_250MS));
EXPECT_TRUE(interruptHandle.functionGotCalled<sei>());
EXPECT_EQ(MCUSR, 0);
}

Expand All @@ -33,6 +34,9 @@ TEST(TEST_NAME, pre_init_watchdog) {
MCUSR |= (1U << WDRF);

system_pre_init(timer_callback);
EXPECT_TRUE(interruptHandle.functionGotCalled<cli>());
EXPECT_TRUE(wdtHandle.functionGotCalled<wdt_enable>(WDTO_250MS));
EXPECT_TRUE(interruptHandle.functionGotCalled<sei>());
EXPECT_TRUE(errorHandlerHandle.functionGotCalled<error_handler_handle_warning>(SYSTEM, SYSTEM_ERROR_WATCHDOG));
}

Expand All @@ -44,6 +48,9 @@ TEST(TEST_NAME, pre_init_brownout) {
MCUSR |= (1U << BORF);

system_pre_init(timer_callback);
EXPECT_TRUE(interruptHandle.functionGotCalled<cli>());
EXPECT_TRUE(wdtHandle.functionGotCalled<wdt_enable>(WDTO_250MS));
EXPECT_TRUE(interruptHandle.functionGotCalled<sei>());
EXPECT_TRUE(errorHandlerHandle.functionGotCalled<error_handler_handle_warning>(SYSTEM, SYSTEM_ERROR_BROWNOUT));
}

Expand All @@ -53,6 +60,10 @@ TEST(TEST_NAME, post_init) {
auto timerHandle = mock::timer8bit.getHandle();

system_pre_init(timer_callback);
EXPECT_TRUE(interruptHandle.functionGotCalled<cli>());
EXPECT_TRUE(wdtHandle.functionGotCalled<wdt_enable>(WDTO_250MS));
EXPECT_TRUE(interruptHandle.functionGotCalled<sei>());

system_post_init();

EXPECT_TRUE(timerHandle.functionGotCalled<timer_8bit_init>(prescaler_1024, std::ignore));
Expand All @@ -72,7 +83,12 @@ TEST(TEST_NAME, timer_runtime_0) {
timerHandle.overrideFunc<timer_8bit_get_count>([]() { return 0; });

system_pre_init(timer_callback);
EXPECT_TRUE(interruptHandle.functionGotCalled<cli>());
EXPECT_TRUE(wdtHandle.functionGotCalled<wdt_enable>(WDTO_250MS));
EXPECT_TRUE(interruptHandle.functionGotCalled<sei>());

system_post_init();
EXPECT_TRUE(wdtHandle.functionGotCalled<wdt_enable>(WDTO_30MS));

timer_got_called = false;
internalCallback();
Expand All @@ -94,7 +110,12 @@ TEST(TEST_NAME, timer_runtime_max) {
timerHandle.overrideFunc<timer_8bit_get_count>([]() { return 255; });

system_pre_init(timer_callback);
EXPECT_TRUE(interruptHandle.functionGotCalled<cli>());
EXPECT_TRUE(wdtHandle.functionGotCalled<wdt_enable>(WDTO_250MS));
EXPECT_TRUE(interruptHandle.functionGotCalled<sei>());

system_post_init();
EXPECT_TRUE(wdtHandle.functionGotCalled<wdt_enable>(WDTO_30MS));

timer_got_called = false;
internalCallback();
Expand All @@ -117,7 +138,12 @@ TEST(TEST_NAME, timer_runtime_under_limit) {
timerHandle.overrideFunc<timer_8bit_get_count>([]() { return 186; });

system_pre_init(timer_callback);
EXPECT_TRUE(interruptHandle.functionGotCalled<cli>());
EXPECT_TRUE(wdtHandle.functionGotCalled<wdt_enable>(WDTO_250MS));
EXPECT_TRUE(interruptHandle.functionGotCalled<sei>());

system_post_init();
EXPECT_TRUE(wdtHandle.functionGotCalled<wdt_enable>(WDTO_30MS));

timer_got_called = false;
internalCallback();
Expand All @@ -140,7 +166,12 @@ TEST(TEST_NAME, timer_runtime_over_limit) {
timerHandle.overrideFunc<timer_8bit_get_count>([]() { return 187; });

system_pre_init(timer_callback);
EXPECT_TRUE(interruptHandle.functionGotCalled<cli>());
EXPECT_TRUE(wdtHandle.functionGotCalled<wdt_enable>(WDTO_250MS));
EXPECT_TRUE(interruptHandle.functionGotCalled<sei>());

system_post_init();
EXPECT_TRUE(wdtHandle.functionGotCalled<wdt_enable>(WDTO_30MS));

timer_got_called = false;
internalCallback();
Expand Down
7 changes: 7 additions & 0 deletions Tests/LowLevel/Drivers/bno055_uart.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@ TEST(TEST_NAME, write_register__write_success) {
uint8_t data[] = {38, 45};

bno055_uart_write_register(0, data, 2, bnoCallback);
EXPECT_TRUE(handle.functionGotCalled<uart_send_buf>());

uartCallback(0xEE);
uartCallback(0x01);
Expand All @@ -118,6 +119,7 @@ TEST(TEST_NAME, write_register__invalid_sync) {
uint8_t data[] = {38, 45};

bno055_uart_write_register(0, data, 2, bnoCallback);
EXPECT_TRUE(handle.functionGotCalled<uart_send_buf>());

uartCallback(0x00);

Expand All @@ -140,6 +142,7 @@ TEST(TEST_NAME, write_register__write_response_write_fail) {
uint8_t data[] = {38, 45};

bno055_uart_write_register(0, data, 2, bnoCallback);
EXPECT_TRUE(handle.functionGotCalled<uart_send_buf>());

uartCallback(0xEE);
uartCallback(0x03);
Expand All @@ -162,6 +165,7 @@ TEST(TEST_NAME, read_register__read_success_8bit) {
// Actual test
uint8_t result;
bno055_uart_read_register(0, 1, bnoCallback, &result);
EXPECT_TRUE(handle.functionGotCalled<uart_send_buf>());

uartCallback(0xBB);
uartCallback(0x01);
Expand All @@ -186,6 +190,7 @@ TEST(TEST_NAME, read_register__read_success_16bit) {
// Actual test
uint16_t result;
bno055_uart_read_register(0, 2, bnoCallback, &result);
EXPECT_TRUE(handle.functionGotCalled<uart_send_buf>());

uartCallback(0xBB);
uartCallback(0x02);
Expand All @@ -210,6 +215,7 @@ TEST(TEST_NAME, read_register__buffer_invalid) {

// Actual test
bno055_uart_read_register(0, 1, bnoCallback, nullptr);
EXPECT_TRUE(handle.functionGotCalled<uart_send_buf>());

uartCallback(0xBB);
uartCallback(0x01);
Expand All @@ -232,6 +238,7 @@ TEST(TEST_NAME, read_register__read_fail) {

// Actual test
bno055_uart_read_register(0, 1, bnoCallback, nullptr);
EXPECT_TRUE(handle.functionGotCalled<uart_send_buf>());

uartCallback(0xEE);
uartCallback(0x02);
Expand Down

0 comments on commit 010d52d

Please sign in to comment.