Hotwheels-Cluster 1.2
Creation of Cluster APP for SEA:ME project.
 
Loading...
Searching...
No Matches
test_PeripheralController.cpp
Go to the documentation of this file.
1
14
17#include <gmock/gmock.h>
18#include <gtest/gtest.h>
19
20using ::testing::_;
21using ::testing::Return;
22using ::testing::Throw;
23
33TEST(PeripheralControllerTest, TestServoPWM) {
34 MockPeripheralController mockController;
35
36 EXPECT_CALL(mockController, set_servo_pwm(0, 1024, 2048)).Times(1);
37 EXPECT_CALL(mockController, set_servo_pwm(1, 0, 4096)).Times(1);
38
39 mockController.set_servo_pwm(0, 1024, 2048);
40 mockController.set_servo_pwm(1, 0, 4096);
41}
42
52TEST(PeripheralControllerTest, TestMotorPWM) {
53 MockPeripheralController mockController;
54
55 EXPECT_CALL(mockController, set_motor_pwm(0, 1500)).Times(1);
56 EXPECT_CALL(mockController, set_motor_pwm(1, 3000)).Times(1);
57
58 mockController.set_motor_pwm(0, 1500);
59 mockController.set_motor_pwm(1, 3000);
60}
61
70TEST(PeripheralControllerTest, TestInitServo) {
71 MockPeripheralController mockController;
72
73 EXPECT_CALL(mockController, init_servo()).Times(1);
74
75 mockController.init_servo();
76}
77
86TEST(PeripheralControllerTest, TestInitMotors) {
87 MockPeripheralController mockController;
88
89 EXPECT_CALL(mockController, init_motors()).Times(1);
90
91 mockController.init_motors();
92}
93
104TEST(PeripheralControllerTest, TestI2CWriteByteData) {
105 MockPeripheralController mockController;
106
107 EXPECT_CALL(mockController, i2c_smbus_write_byte_data(1, 0x10, 0x20))
108 .WillOnce(Return(0));
109
110 int result = mockController.i2c_smbus_write_byte_data(1, 0x10, 0x20);
111
112 EXPECT_EQ(result, 0);
113}
114
125TEST(PeripheralControllerTest, TestI2CReadByteData) {
126 MockPeripheralController mockController;
127
128 EXPECT_CALL(mockController, i2c_smbus_read_byte_data(1, 0x10))
129 .WillOnce(Return(0x30));
130
131 int result = mockController.i2c_smbus_read_byte_data(1, 0x10);
132
133 EXPECT_EQ(result, 0x30);
134}
135
145TEST(PeripheralControllerTest, TestWriteByteDataException) {
146 MockPeripheralController mockController;
147
148 EXPECT_CALL(mockController, write_byte_data(_, _, _))
149 .WillOnce(Throw(std::runtime_error("I2C write failed")));
150
151 EXPECT_THROW(mockController.write_byte_data(1, 0x10, 0x20),
152 std::runtime_error);
153}
154
164TEST(PeripheralControllerTest, TestReadByteDataException) {
165 MockPeripheralController mockController;
166
167 EXPECT_CALL(mockController, read_byte_data(_, _))
168 .WillOnce(Throw(std::runtime_error("I2C read failed")));
169
170 EXPECT_THROW(mockController.read_byte_data(1, 0x10), std::runtime_error);
171}
File containing Mock classes to test the peripheral controller.
virtual void set_servo_pwm(int channel, int on_value, int off_value)=0
virtual void write_byte_data(int fd, int reg, int value)=0
virtual int i2c_smbus_write_byte_data(int file, uint8_t command, uint8_t value)=0
virtual void init_servo()=0
virtual void set_motor_pwm(int channel, int value)=0
virtual int read_byte_data(int fd, int reg)=0
virtual int i2c_smbus_read_byte_data(int file, uint8_t command)=0
virtual void init_motors()=0
Class to emulate the behavior of the peripheral controller.
TEST(PeripheralControllerTest, TestServoPWM)
Ensures that set_servo_pwm() is called with the correct parameters.