1 #include "filesystem_mock.hpp"
2 #include "hwmonio.hpp"
3
4 #include <chrono>
5 #include <string>
6
7 #include <gmock/gmock.h>
8 #include <gtest/gtest.h>
9
10 namespace hwmonio
11 {
12 namespace
13 {
14
15 using ::testing::_;
16 using ::testing::Return;
17
18 class HwmonIOTest : public ::testing::Test
19 {
20 protected:
HwmonIOTest()21 HwmonIOTest() : _hwmonio(_path, &_mock) {}
22
23 const int64_t _value = 12;
24 const std::string _path = "abcd";
25 const std::string _type = "fan";
26 const std::string _id = "a";
27 const std::string _sensor = "1";
28 const size_t _retries = 1;
29 const std::chrono::milliseconds _delay = std::chrono::milliseconds{10};
30
31 FileSystemMock _mock;
32 HwmonIO _hwmonio;
33 };
34
TEST_F(HwmonIOTest,ReadReturnsValue)35 TEST_F(HwmonIOTest, ReadReturnsValue)
36 {
37 EXPECT_CALL(_mock, read(_)).WillOnce(Return(_value));
38 EXPECT_THAT(_hwmonio.read(_type, _id, _sensor, _retries, _delay), _value);
39 }
40
SetErrnoExcept(const std::string &)41 int64_t SetErrnoExcept(const std::string&)
42 {
43 errno = ETIMEDOUT;
44 throw std::runtime_error("bad times");
45 }
46
TEST_F(HwmonIOTest,ReadExceptsRetryable)47 TEST_F(HwmonIOTest, ReadExceptsRetryable)
48 {
49 EXPECT_CALL(_mock, read(_))
50 .WillOnce(&SetErrnoExcept)
51 .WillOnce(Return(_value));
52 EXPECT_THAT(_hwmonio.read(_type, _id, _sensor, _retries, _delay), _value);
53 }
54
55 } // namespace
56 } // namespace hwmonio
57