89 lines
2.8 KiB
C++
89 lines
2.8 KiB
C++
/**
|
|
* @file tests/device_state.cpp
|
|
* @brief brief
|
|
* @date Mar 14, 2016
|
|
* @author jjacobs
|
|
* @copyright 2016 Dual Inventive Technology Centre B.V.
|
|
*
|
|
* descr
|
|
*/
|
|
#include <gtest/gtest.h>
|
|
|
|
#include <di/device.h>
|
|
|
|
TEST(device_activation, initial) {
|
|
EXPECT_EQ(false, di_device_is_active());
|
|
}
|
|
|
|
TEST(device_activation, activate) {
|
|
/* Activate is a denied operation from IDLE state */
|
|
EXPECT_EQ(DI_DEVICE_STATE_IDLE, di_device_state_get());
|
|
EXPECT_EQ(DNE_FIRMWARE_DEVICE_IDLE, di_device_activate());
|
|
|
|
/* Activate, first set token (IDLE -> ARMED -> ACTIVE) */
|
|
EXPECT_EQ(DNOK, di_device_token_set(1234));
|
|
EXPECT_EQ(DI_DEVICE_STATE_ARMED, di_device_state_get());
|
|
|
|
EXPECT_EQ(DNOK, di_device_activate());
|
|
EXPECT_EQ(DI_DEVICE_STATE_ACTIVE, di_device_state_get());
|
|
|
|
/* Try to activate again, this operation is allowed */
|
|
EXPECT_EQ(DNOK, di_device_activate());
|
|
|
|
/* Reset, ACTIVE -> ARMED -> IDLE */
|
|
EXPECT_EQ(DNOK, di_device_deactivate());
|
|
EXPECT_EQ(DI_DEVICE_STATE_ARMED, di_device_state_get());
|
|
|
|
EXPECT_EQ(DNOK, di_device_token_reset());
|
|
EXPECT_EQ(DI_DEVICE_STATE_IDLE, di_device_state_get());
|
|
}
|
|
|
|
TEST(device_activation, deactivate) {
|
|
/* Deactivate is a denied operation from IDLE state */
|
|
EXPECT_EQ(DNE_FIRMWARE_DEVICE_IDLE, di_device_deactivate());
|
|
|
|
/* Deactivate is a ignored operation from ARMED state */
|
|
EXPECT_EQ(DNOK, di_device_token_set(1234));
|
|
EXPECT_EQ(DI_DEVICE_STATE_ARMED, di_device_state_get());
|
|
|
|
EXPECT_EQ(DNE_FIRMWARE_DEVICE_ARMED, di_device_deactivate());
|
|
|
|
/* Deactivate, first activate (ARMED -> ACTIVE -> ARMED) */
|
|
EXPECT_EQ(DNOK, di_device_activate());
|
|
EXPECT_EQ(DI_DEVICE_STATE_ACTIVE, di_device_state_get());
|
|
|
|
EXPECT_EQ(DNOK, di_device_deactivate());
|
|
EXPECT_EQ(DI_DEVICE_STATE_ARMED, di_device_state_get());
|
|
|
|
/* Reset ARMED -> IDLE */
|
|
EXPECT_EQ(DNOK, di_device_token_reset());
|
|
EXPECT_EQ(DI_DEVICE_STATE_IDLE, di_device_state_get());
|
|
}
|
|
|
|
TEST(device_activation, set) {
|
|
/* Activate, first set token (IDLE -> ARMED -> ACTIVE) */
|
|
EXPECT_EQ(DNOK, di_device_token_set(1234));
|
|
EXPECT_EQ(DI_DEVICE_STATE_ARMED, di_device_state_get());
|
|
|
|
EXPECT_EQ(DNOK, di_device_activate());
|
|
EXPECT_EQ(DI_DEVICE_STATE_ACTIVE, di_device_state_get());
|
|
|
|
/* Set ACTIVE -> ARMED */
|
|
EXPECT_EQ(DNOK, di_device_activation_set(false));
|
|
EXPECT_EQ(DI_DEVICE_STATE_ARMED, di_device_state_get());
|
|
|
|
/* Set ARMED -> ARMED, check if not allowed */
|
|
EXPECT_EQ(DNE_FIRMWARE_DEVICE_ARMED, di_device_activation_set(false));
|
|
|
|
/* Set ARMED -> ACTIVE */
|
|
EXPECT_EQ(DNOK, di_device_activation_set(true));
|
|
EXPECT_EQ(DI_DEVICE_STATE_ACTIVE, di_device_state_get());
|
|
|
|
/* Reset, ACTIVE -> ARMED -> IDLE */
|
|
EXPECT_EQ(DNOK, di_device_deactivate());
|
|
EXPECT_EQ(DI_DEVICE_STATE_ARMED, di_device_state_get());
|
|
|
|
EXPECT_EQ(DNOK, di_device_token_reset());
|
|
EXPECT_EQ(DI_DEVICE_STATE_IDLE, di_device_state_get());
|
|
}
|