blob: 4b480ad088220ba441c98b9a484833ce8f144342 [file] [log] [blame]
Enrico Granata60b1cbc2019-05-20 11:06:46 -07001// Copyright 2019 The Chromium OS Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef MEMS_SETUP_TEST_HELPER_H_
6#define MEMS_SETUP_TEST_HELPER_H_
7
8#include <initializer_list>
9#include <map>
10#include <memory>
11#include <string>
12#include <utility>
Enrico Granata064a25c2019-07-15 15:48:03 -070013#include <vector>
Enrico Granata60b1cbc2019-05-20 11:06:46 -070014
15#include <gtest/gtest.h>
16
Enrico Granata51cdb942019-06-18 16:40:17 -070017#include <libmems/iio_context.h>
18#include <libmems/iio_device.h>
Enrico Granata9bb17522019-06-28 17:22:42 -070019#include <libmems/test_fakes.h>
Enrico Granata60b1cbc2019-05-20 11:06:46 -070020#include "mems_setup/configuration.h"
21#include "mems_setup/delegate.h"
Enrico Granata60b1cbc2019-05-20 11:06:46 -070022#include "mems_setup/sensor_kind.h"
Enrico Granata9bb17522019-06-28 17:22:42 -070023#include "mems_setup/test_fakes.h"
Enrico Granata60b1cbc2019-05-20 11:06:46 -070024
25namespace mems_setup {
26namespace testing {
27
Enrico Granata9bb17522019-06-28 17:22:42 -070028class FakeSysfsTrigger : public libmems::fakes::FakeIioDevice {
Enrico Granata60b1cbc2019-05-20 11:06:46 -070029 public:
Enrico Granata9bb17522019-06-28 17:22:42 -070030 FakeSysfsTrigger(libmems::fakes::FakeIioContext* ctx,
Harvey Yang786967c2020-07-01 18:04:31 +080031 std::unique_ptr<libmems::fakes::FakeIioDevice> trigger)
Harvey Yang0c0dab52019-11-18 12:04:30 +080032 : FakeIioDevice(ctx, "iio_sysfs_trigger", -1),
Enrico Granata60b1cbc2019-05-20 11:06:46 -070033 mock_context_(ctx),
Harvey Yang786967c2020-07-01 18:04:31 +080034 mock_trigger_(std::move(trigger)) {}
Enrico Granata60b1cbc2019-05-20 11:06:46 -070035
36 bool WriteNumberAttribute(const std::string& name, int64_t value) override;
Harvey Yang786967c2020-07-01 18:04:31 +080037 void AddMockTrigger();
Enrico Granata60b1cbc2019-05-20 11:06:46 -070038
39 private:
Enrico Granata9bb17522019-06-28 17:22:42 -070040 libmems::fakes::FakeIioContext* mock_context_;
Harvey Yang786967c2020-07-01 18:04:31 +080041 std::unique_ptr<libmems::fakes::FakeIioDevice> mock_trigger_;
Enrico Granata60b1cbc2019-05-20 11:06:46 -070042};
43
44class SensorTestBase : public ::testing::Test {
45 public:
46 Configuration* GetConfiguration();
47
48 protected:
Enrico Granata9bb17522019-06-28 17:22:42 -070049 std::unique_ptr<libmems::fakes::FakeIioContext> mock_context_;
50 std::unique_ptr<mems_setup::fakes::FakeDelegate> mock_delegate_;
Harvey Yang786967c2020-07-01 18:04:31 +080051 libmems::fakes::FakeIioDevice* mock_device_;
Enrico Granata60b1cbc2019-05-20 11:06:46 -070052
Harvey Yang786967c2020-07-01 18:04:31 +080053 libmems::fakes::FakeIioDevice* mock_trigger1_;
54 FakeSysfsTrigger* mock_sysfs_trigger_;
Enrico Granata60b1cbc2019-05-20 11:06:46 -070055
56 std::unique_ptr<Configuration> config_;
57
58 SensorKind sensor_kind_;
59
Harvey Yang73394622020-02-12 10:57:57 +080060 SensorTestBase(const char* name, int id);
Enrico Granata60b1cbc2019-05-20 11:06:46 -070061
62 void SetSingleSensor(const char* location);
Enrico Granata064a25c2019-07-15 15:48:03 -070063 void SetSharedSensor();
Harvey Yangfc9178f2020-03-16 14:26:53 +080064 void SetColorLightSensor();
Enrico Granata60b1cbc2019-05-20 11:06:46 -070065
66 void ConfigureVpd(
67 std::initializer_list<std::pair<const char*, const char*>> values);
Enrico Granata60b1cbc2019-05-20 11:06:46 -070068};
69
70} // namespace testing
71} // namespace mems_setup
72
73#endif // MEMS_SETUP_TEST_HELPER_H_