83 lines
2.6 KiB
C++
83 lines
2.6 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_service, set_true) {
|
|
/* Set is the only allowed operation from IDLE state */
|
|
EXPECT_EQ(DNOK, di_device_service_set(true));
|
|
EXPECT_TRUE(di_device_is_in_service());
|
|
|
|
/* Try to set second time */
|
|
EXPECT_EQ(DNOK, di_device_service_set(true));
|
|
EXPECT_TRUE(di_device_is_in_service());
|
|
|
|
/* Token set is not allowed in SERVICE state */
|
|
EXPECT_EQ(DNE_FIRMWARE_DEVICE_SERVICE, di_device_token_set(1337));
|
|
|
|
/* Activate set is not allowed in SERVICE state */
|
|
EXPECT_EQ(DNE_FIRMWARE_DEVICE_SERVICE, di_device_activate());
|
|
|
|
/* SERVICE -> IDLE */
|
|
EXPECT_EQ(DNOK, di_device_service_reset());
|
|
EXPECT_FALSE(di_device_is_in_service());
|
|
}
|
|
|
|
TEST(device_service, set_false) {
|
|
/* IDLE, reset service is not allowed */
|
|
EXPECT_EQ(DNE_FIRMWARE_DEVICE_IDLE, di_device_service_reset());
|
|
EXPECT_FALSE(di_device_is_in_service());
|
|
|
|
/* IDLE -> ARMED, set service false is not allowed */
|
|
EXPECT_EQ(DNOK, di_device_token_set(1337));
|
|
EXPECT_EQ(DNE_FIRMWARE_DEVICE_ARMED, di_device_service_set(false));
|
|
|
|
/* ARMED -> ACTIVE, set service false is not allowed */
|
|
EXPECT_EQ(DNOK, di_device_activate());
|
|
EXPECT_EQ(DNE_FIRMWARE_DEVICE_ACTIVE, di_device_service_set(false));
|
|
|
|
/* ACTIVE -> IDLE */
|
|
EXPECT_EQ(DNOK, di_device_deactivate());
|
|
EXPECT_EQ(DNOK, di_device_token_reset());
|
|
|
|
/* IDLE -> SERVICE -> IDLE */
|
|
EXPECT_FALSE(di_device_is_in_service());
|
|
EXPECT_EQ(DNOK, di_device_service_set(true));
|
|
EXPECT_TRUE(di_device_is_in_service());
|
|
EXPECT_EQ(DNOK, di_device_service_set(false));
|
|
EXPECT_FALSE(di_device_is_in_service());
|
|
}
|
|
|
|
TEST(device_service, reset) {
|
|
/* IDLE, reset service is not allowed */
|
|
EXPECT_EQ(DNE_FIRMWARE_DEVICE_IDLE, di_device_service_reset());
|
|
EXPECT_FALSE(di_device_is_in_service());
|
|
|
|
/* IDLE -> ARMED, reset service is not allowed */
|
|
EXPECT_EQ(DNOK, di_device_token_set(1337));
|
|
EXPECT_EQ(DNE_FIRMWARE_DEVICE_ARMED, di_device_service_reset());
|
|
|
|
/* ARMED -> ACTIVE, reset service is not allowed */
|
|
EXPECT_EQ(DNOK, di_device_activate());
|
|
EXPECT_EQ(DNE_FIRMWARE_DEVICE_ACTIVE, di_device_service_reset());
|
|
|
|
/* ACTIVE -> IDLE */
|
|
EXPECT_EQ(DNOK, di_device_deactivate());
|
|
EXPECT_EQ(DNOK, di_device_token_reset());
|
|
|
|
/* IDLE -> SERVICE -> IDLE */
|
|
EXPECT_FALSE(di_device_is_in_service());
|
|
EXPECT_EQ(DNOK, di_device_service_set(true));
|
|
EXPECT_TRUE(di_device_is_in_service());
|
|
EXPECT_EQ(DNOK, di_device_service_reset());
|
|
EXPECT_FALSE(di_device_is_in_service());
|
|
}
|