src.dualinventive.com/fw/dncm/libdi/tests/device_token.cpp

77 lines
2.3 KiB
C++

/**
* @file tests/device_token.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>
/**
* Check if initial device state is set to DI_DEVICE_TOKEN_DEFAULT_VALUE (0)
*/
TEST(device_token, initial) {
EXPECT_EQ(0U, DI_DEVICE_TOKEN_DEFAULT_VALUE);
EXPECT_EQ(DI_DEVICE_TOKEN_DEFAULT_VALUE, di_device_token_get());
}
TEST(device_token, set) {
/* Initial token, zero may not be written to zero */
EXPECT_EQ(DNE_FIRMWARE_MISMATCH_TOKEN, di_device_token_set(0));
EXPECT_EQ(DNE_FIRMWARE_MISMATCH_TOKEN, di_device_token_set(DI_DEVICE_TOKEN_DEFAULT_VALUE));
/* Normal operation */
EXPECT_EQ(DNOK, di_device_token_set(1234));
EXPECT_EQ(1234U, di_device_token_get());
/* Set token again */
EXPECT_EQ(DNOK, di_device_token_set(1234));
EXPECT_EQ(1234U, di_device_token_get());
/* Token is not reset/overwritten when already set */
EXPECT_EQ(DNE_FIRMWARE_MISMATCH_TOKEN, di_device_token_set(0));
EXPECT_EQ(1234U, di_device_token_get());
/* Token set operation denied in ACTIVE state */
EXPECT_EQ(DNOK, di_device_activate());
EXPECT_EQ(true, di_device_is_active());
EXPECT_EQ(DNE_FIRMWARE_DEVICE_ACTIVE, di_device_token_set(5678));
EXPECT_EQ(1234U, di_device_token_get());
/* Reset, ACTIVE -> ARMED -> IDLE */
EXPECT_EQ(DNOK, di_device_deactivate());
EXPECT_EQ(DNOK, di_device_token_reset());
}
/**
* Test token reset, it is only valid when di_device_state is
* set to DI_DEVICE_STATE_ARMED
*/
TEST(device_token, reset) {
/* Initial token may not be reset (IDLE state) */
EXPECT_EQ(DNE_FIRMWARE_DEVICE_IDLE, di_device_token_reset());
/* Reset after set */
EXPECT_EQ(DNOK, di_device_token_set(5678));
EXPECT_EQ(5678U, di_device_token_get());
EXPECT_EQ(DNOK, di_device_token_reset());
EXPECT_EQ(DI_DEVICE_TOKEN_DEFAULT_VALUE, di_device_token_get());
/* Token reset operation denied in ACTIVE state */
EXPECT_EQ(DNOK, di_device_token_set(1234));
EXPECT_EQ(DNOK, di_device_activate());
EXPECT_EQ(DNE_FIRMWARE_DEVICE_ACTIVE, di_device_token_reset());
/* Reset, ACTIVE -> ARMED -> IDLE */
EXPECT_EQ(DNOK, di_device_deactivate());
EXPECT_EQ(DNOK, di_device_token_reset());
EXPECT_EQ(DI_DEVICE_TOKEN_DEFAULT_VALUE, di_device_token_get());
}