|
13 | 13 | using namespace leka; |
14 | 14 |
|
15 | 15 | using testing::_; |
| 16 | +using testing::AnyNumber; |
16 | 17 | using testing::AtLeast; |
17 | 18 | using testing::MockFunction; |
18 | 19 |
|
@@ -120,3 +121,90 @@ TEST_F(CoreIMUTest, disableDeepSleep) |
120 | 121 |
|
121 | 122 | coreimu.disableDeepSleep(); |
122 | 123 | } |
| 124 | + |
| 125 | +TEST_F(CoreIMUTest, onWakeUpCallback) |
| 126 | +{ |
| 127 | + MockFunction<void()> mock_callback; |
| 128 | + |
| 129 | + EXPECT_CALL(mocki2c, write).Times(AtLeast(1)); |
| 130 | + EXPECT_CALL(mocki2c, read).Times(AtLeast(1)); |
| 131 | + EXPECT_CALL(mock_callback, Call).Times(AnyNumber()); |
| 132 | + |
| 133 | + coreimu.registerOnWakeUpCallback(mock_callback.AsStdFunction()); |
| 134 | + |
| 135 | + auto on_rise_callback = spy_InterruptIn_getRiseCallback(); |
| 136 | + on_rise_callback(); |
| 137 | +} |
| 138 | + |
| 139 | +TEST_F(CoreIMUTest, emptyOnWakeUpCallback) |
| 140 | +{ |
| 141 | + coreimu.registerOnWakeUpCallback({}); |
| 142 | + |
| 143 | + auto on_rise_callback = spy_InterruptIn_getRiseCallback(); |
| 144 | + on_rise_callback(); |
| 145 | +} |
| 146 | + |
| 147 | +TEST_F(CoreIMUTest, enableOnWakeUpInterrupt) |
| 148 | +{ |
| 149 | + EXPECT_CALL(mocki2c, write).Times(AtLeast(1)); |
| 150 | + EXPECT_CALL(mocki2c, read).Times(AtLeast(1)); |
| 151 | + |
| 152 | + coreimu.enableOnWakeUpInterrupt(); |
| 153 | +} |
| 154 | + |
| 155 | +TEST_F(CoreIMUTest, disableOnWakeUpInterrupt) |
| 156 | +{ |
| 157 | + EXPECT_CALL(mocki2c, write).Times(AtLeast(1)); |
| 158 | + EXPECT_CALL(mocki2c, read).Times(AtLeast(1)); |
| 159 | + |
| 160 | + coreimu.disableOnWakeUpInterrupt(); |
| 161 | +} |
| 162 | + |
| 163 | +TEST_F(CoreIMUTest, switchCallbacks) |
| 164 | +{ |
| 165 | + auto mock_data_available_callback = MockFunction<void(const leka::interface::IMU::SensorData &data)> {}; |
| 166 | + auto mock_wake_up_callback = MockFunction<void()> {}; |
| 167 | + auto on_rise_callback = mbed::Callback<void()> {}; |
| 168 | + |
| 169 | + EXPECT_CALL(mocki2c, write).Times(AnyNumber()); |
| 170 | + EXPECT_CALL(mocki2c, read).Times(AnyNumber()); |
| 171 | + |
| 172 | + coreimu.registerOnDataAvailableCallback(mock_data_available_callback.AsStdFunction()); |
| 173 | + coreimu.registerOnWakeUpCallback(mock_wake_up_callback.AsStdFunction()); |
| 174 | + |
| 175 | + { |
| 176 | + // Enable Data Available |
| 177 | + EXPECT_CALL(mock_data_available_callback, Call).Times(1); |
| 178 | + EXPECT_CALL(mock_wake_up_callback, Call).Times(0); |
| 179 | + coreimu.enableOnDataAvailable(); |
| 180 | + on_rise_callback = spy_InterruptIn_getRiseCallback(); |
| 181 | + on_rise_callback(); |
| 182 | + } |
| 183 | + |
| 184 | + { |
| 185 | + // Enable Wake Up |
| 186 | + EXPECT_CALL(mock_data_available_callback, Call).Times(0); |
| 187 | + EXPECT_CALL(mock_wake_up_callback, Call).Times(AnyNumber()); |
| 188 | + coreimu.enableOnWakeUpInterrupt(); |
| 189 | + on_rise_callback = spy_InterruptIn_getRiseCallback(); |
| 190 | + on_rise_callback(); |
| 191 | + } |
| 192 | + |
| 193 | + { |
| 194 | + // Enable Data Available |
| 195 | + EXPECT_CALL(mock_data_available_callback, Call).Times(1); |
| 196 | + EXPECT_CALL(mock_wake_up_callback, Call).Times(0); |
| 197 | + coreimu.enableOnDataAvailable(); |
| 198 | + on_rise_callback = spy_InterruptIn_getRiseCallback(); |
| 199 | + on_rise_callback(); |
| 200 | + } |
| 201 | + |
| 202 | + { |
| 203 | + // Disable Data Available |
| 204 | + EXPECT_CALL(mock_data_available_callback, Call).Times(0); |
| 205 | + EXPECT_CALL(mock_wake_up_callback, Call).Times(0); |
| 206 | + coreimu.disableOnDataAvailable(); |
| 207 | + on_rise_callback = spy_InterruptIn_getRiseCallback(); |
| 208 | + on_rise_callback(); |
| 209 | + } |
| 210 | +} |
0 commit comments