| #pragma once |
| |
| #include "interfaces/sensor.hpp" |
| #include "utils/conv_container.hpp" |
| #include "utils/generate_unique_mock_id.hpp" |
| |
| #include <gmock/gmock.h> |
| |
| class SensorMock : public interfaces::Sensor |
| { |
| public: |
| explicit SensorMock() |
| { |
| initialize(); |
| } |
| |
| explicit SensorMock(Id sensorId) : mockSensorId(sensorId) |
| { |
| initialize(); |
| } |
| |
| static Id makeId(std::string_view service, std::string_view path) |
| { |
| return Id("SensorMock", service, path); |
| } |
| |
| static std::vector<std::shared_ptr<interfaces::Sensor>> |
| makeSensorMocks(const std::vector<LabeledSensorInfo>& sensorsInfo) |
| { |
| using namespace testing; |
| std::vector<std::shared_ptr<NiceMock<SensorMock>>> result; |
| for (const auto& sensorInfo : sensorsInfo) |
| { |
| auto& sensorMock = |
| result.emplace_back(std::make_shared<NiceMock<SensorMock>>()); |
| ON_CALL(*sensorMock, getLabeledSensorInfo()) |
| .WillByDefault(Return(sensorInfo)); |
| } |
| return utils::convContainer<std::shared_ptr<interfaces::Sensor>>( |
| result); |
| } |
| |
| MOCK_METHOD(Id, id, (), (const, override)); |
| MOCK_METHOD(std::string, metadata, (), (const, override)); |
| MOCK_METHOD(std::string, getName, (), (const, override)); |
| MOCK_METHOD(void, registerForUpdates, |
| (const std::weak_ptr<interfaces::SensorListener>&), (override)); |
| MOCK_METHOD(void, unregisterFromUpdates, |
| (const std::weak_ptr<interfaces::SensorListener>&), (override)); |
| MOCK_METHOD(LabeledSensorInfo, getLabeledSensorInfo, (), (const, override)); |
| |
| const uint64_t mockId = generateUniqueMockId(); |
| |
| Id mockSensorId = Id("SensorMock", "", ""); |
| |
| private: |
| void initialize() |
| { |
| ON_CALL(*this, id()).WillByDefault(testing::Invoke([this] { |
| return this->mockSensorId; |
| })); |
| } |
| }; |